0.2.1 • Published 9 months ago
@silentsheet/core v0.2.1
@silentsheet/core
core functionality for silentsheet - a minimalist text editor.
installation
npm install @silentsheet/coreusage
import { SilentSheet } from '@silentsheet/core';
// Create a new instance with optional initial state
const editor = new SilentSheet({
content: 'Hello world',
theme: 'light'
});
// Get current state
const state = editor.getState();
// Get actions
const actions = editor.getActions();
// Subscribe to UI changes
const unsubscribe = editor.subscribeToUI(() => {
console.log('UI updated:', editor.getState());
});
// Example: Set content and save it
actions.setContent('New content');
actions.saveContent();
// Example: Toggle timer
actions.toggleTimer(); // Starts 15-minute timer
actions.resetTimer(); // Resets to 15:00
// Cleanup
unsubscribe();features
- automatic settings persistence in localStorage
- manual content persistence via
saveContent() - 15-minute focus timer with start/stop/reset
- four sizes (small, medium, large, full)
- font size control (number)
- three themes (light, sepia, night)
- three font families (serif, sans-serif, monospace)
- typescript support
api
constructor
new SilentSheet(initialState?: Partial<SilentSheetState>)Creates a new editor instance. The initialState is optional and will override both defaults and any saved state from localStorage. Timer state (running/seconds) is always reset on initialization.
state
interface SilentSheetState {
content: string;
font: 'serif' | 'sans-serif' | 'monospace';
fontSize: number;
theme: 'light' | 'sepia' | 'night';
size: 'small' | 'medium' | 'large' | 'full';
timerRunning: boolean;
timerSeconds: number;
}Default values:
{
content: '',
font: 'sans-serif',
fontSize: 24,
theme: 'sepia',
size: 'medium',
timerRunning: false,
timerSeconds: 900 // 15 minutes
}methods
getState(): SilentSheetState- Get current stategetActions(): SilentSheetActions- Get available actionssubscribeToUI(callback: () => void): () => void- Subscribe to UI changes, returns unsubscribe function
actions
setContent(content: string)- Update content (does not auto-save)saveContent()- Save current content to localStorageclearContent()- Clear and save empty contentsetFont(font: Font)- Change font family (auto-saves)setFontSize(size: number)- Change font size (auto-saves)setTheme(theme: Theme)- Change theme (auto-saves)setSize(size: Size)- Change size (auto-saves)toggleTimer()- Start timer (15:00) or stop and reset if runningresetTimer()- Stop timer and reset to 15:00
storage
The editor uses localStorage with key 'silentsheet' to persist state. All UI settings (font, fontSize, theme, size) are automatically saved when changed. Content must be explicitly saved using saveContent().
license
mit © hamza saleem