Modern Text Editor ');
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;
}
}
});