diff --git a/assets/js/ticket.js b/assets/js/ticket.js index bc0aea0..f40cab2 100644 --- a/assets/js/ticket.js +++ b/assets/js/ticket.js @@ -357,12 +357,17 @@ function togglePreview() { if (isPreviewEnabled) { preview.innerHTML = parseMarkdown(textarea.value); - textarea.addEventListener('input', updatePreview); + textarea.addEventListener('input', debouncedUpdatePreview); } else { - textarea.removeEventListener('input', updatePreview); + textarea.removeEventListener('input', debouncedUpdatePreview); } } +// Re-running the full markdown parser on every single keystroke is wasted +// work while the user is still mid-word; 150ms debounce keeps the preview +// feeling live without re-parsing on every keystroke. +const debouncedUpdatePreview = window.lt ? lt.debounce(updatePreview, 150) : updatePreview; + function updatePreview() { const textarea = document.getElementById('newComment'); const previewDiv = document.getElementById('markdownPreview');