Modern Text Editor
Words: 0 Characters: 0
'); this.editor.close(); this.editor.body.spellcheck = true; } setupEventListeners() { // Toolbar buttons document.querySelectorAll('[data-command]').forEach(btn => { btn.addEventListener('click', () => this.execCommand( btn.dataset.command, btn.dataset.value )); }); // Font handling document.getElementById('fontName').addEventListener('change', (e) => { this.execCommand('fontName', e.target.value); }); document.getElementById('fontSize').addEventListener('change', (e) => { this.execCommand('fontSize', e.target.value); }); document.getElementById('textColor').addEventListener('input', (e) => { this.execCommand('foreColor', e.target.value); }); // Dark Mode document.getElementById('toggleDarkMode').addEventListener('click', () => { document.body.classList.toggle('dark-mode'); localStorage.setItem('editor-theme', document.body.classList.contains('dark-mode') ? 'dark' : 'light'); }); // Fullscreen document.getElementById('fullscreen').addEventListener('click', () => { if (!document.fullscreenElement) { document.documentElement.requestFullscreen(); } else { document.exitFullscreen(); } }); // Real-time stats this.editor.addEventListener('keyup', () => this.updateStats()); } execCommand(command, value = null) { this.editor.execCommand(command, false, value); this.editor.focus(); } updateStats() { const text = this.editor.body.innerText; const words = text.trim().split(/\s+/).length; document.getElementById('wordCount').textContent = `Words: ${words}`; document.getElementById('charCount').textContent = `Characters: ${text.length}`; } initializeAutoSave() { setInterval(() => { localStorage.setItem('editor-content', this.editor.body.innerHTML); }, 3000); // Load saved content if (localStorage.getItem('editor-content')) { this.editor.body.innerHTML = localStorage.getItem('editor-content'); } } // Additional functionality stubs insertImage() { const url = prompt('Enter image URL:'); if (url) this.execCommand('insertImage', url); } createLink() { const url = prompt('Enter link URL:'); if (url) this.execCommand('createLink', url); } toggleCodeView() { // Implement code view toggle } // Add more methods for other features } // Initialize editor const editor = new TextEditor(); // Keyboard shortcuts document.addEventListener('keydown', (e) => { if (e.ctrlKey || e.metaKey) { switch (e.key.toLowerCase()) { case 'b': e.preventDefault(); editor.execCommand('bold'); break; case 'i': e.preventDefault(); editor.execCommand('italic'); break; case 's': e.preventDefault(); this.saveDocument(); break; } } });