Untitled
100%
Words: 0 | Characters: 0 Line: 1 | Column: 1
UTF-8 LF
`); printWindow.document.close(); }); // Zoom operations zoomInBtn.addEventListener('click', zoomIn); zoomOutBtn.addEventListener('click', zoomOut); zoomResetBtn.addEventListener('click', zoomReset); // Dark mode toggle darkModeToggleBtn.addEventListener('click', toggleDarkMode); // Close modals findCancelBtn.addEventListener('click', function() { findModal.style.display = 'none'; }); replaceCancelBtn.addEventListener('click', function() { replaceModal.style.display = 'none'; }); colorCancelBtn.addEventListener('click', function() { colorModal.style.display = 'none'; }); closeModalBtns.forEach(btn => { btn.addEventListener('click', function() { this.closest('.modal').style.display = 'none'; }); }); // Close modal when clicking outside window.addEventListener('click', function(e) { if (e.target.classList.contains('modal')) { e.target.style.display = 'none'; } }); // Keyboard shortcuts document.addEventListener('keydown', function(e) { // Save selection on key down saveSelection(); // Check for Ctrl/Cmd key combinations if (e.ctrlKey || e.metaKey) { switch (e.key.toLowerCase()) { case 'n': e.preventDefault(); newFile(); break; case 'o': e.preventDefault(); openFile(); break; case 's': e.preventDefault(); saveFile(); break; case 'f': e.preventDefault(); findBtn.click(); break; case 'h': e.preventDefault(); replaceBtn.click(); break; case 'p': e.preventDefault(); printBtn.click(); break; case 'b': e.preventDefault(); boldBtn.click(); break; case 'i': e.preventDefault(); italicBtn.click(); break; case 'u': e.preventDefault(); underlineBtn.click(); break; case 'z': if (!e.shiftKey) { e.preventDefault(); undoBtn.click(); } break; case 'y': e.preventDefault(); redoBtn.click(); break; case '=': if (!e.shiftKey) { e.preventDefault(); zoomIn(); } break; case '-': e.preventDefault(); zoomOut(); break; case '0': e.preventDefault(); zoomReset(); break; } // Alignment shortcuts (Ctrl+Shift+...) if (e.shiftKey) { switch (e.key.toLowerCase()) { case 'l': e.preventDefault(); alignLeftBtn.click(); break; case 'e': e.preventDefault(); alignCenterBtn.click(); break; case 'r': e.preventDefault(); alignRightBtn.click(); break; case 'j': e.preventDefault(); alignJustifyBtn.click(); break; } } } // Tab key support if (e.key === 'Tab' && !e.ctrlKey && !e.altKey && !e.metaKey) { if (document.activeElement === editor) { e.preventDefault(); if (e.shiftKey) { document.execCommand('outdent'); } else { document.execCommand('indent'); } } } }); // Editor event listeners editor.addEventListener('input', function() { updateWordCount(); currentFile.modified = true; updateFileInfo(); }); editor.addEventListener('click', updateCursorPosition); editor.addEventListener('keyup', function(e) { updateWordCount(); updateCursorPosition(); }); // Check initial formatting states function checkFormattingStates() { boldBtn.classList.toggle('active', document.queryCommandState('bold')); italicBtn.classList.toggle('active', document.queryCommandState('italic')); underlineBtn.classList.toggle('active', document.queryCommandState('underline')); strikethroughBtn.classList.toggle('active', document.queryCommandState('strikeThrough')); // Check alignment const alignLeft = document.queryCommandState('justifyLeft'); const alignCenter = document.queryCommandState('justifyCenter'); const alignRight = document.queryCommandState('justifyRight'); const alignJustify = document.queryCommandState('justifyFull'); alignLeftBtn.classList.toggle('active', alignLeft); alignCenterBtn.classList.toggle('active', alignCenter); alignRightBtn.classList.toggle('active', alignRight); alignJustifyBtn.classList.toggle('active', alignJustify); } // Initialize initEditor(); checkFormattingStates(); // Periodically check formatting states setInterval(checkFormattingStates, 500); });