From 2f4c125bdd9b5eebbba41e2204e2fc9c93a3eebd Mon Sep 17 00:00:00 2001 From: smizrahi Date: Mon, 8 Apr 2024 12:45:18 +0200 Subject: [PATCH] fix(core): Add timer to avoid spamming onEditorChanged for CKEditor 5. Fixes #5944. Added onblur event --- .../js/Common/sgCkeditor.component.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/UI/WebServerResources/js/Common/sgCkeditor.component.js b/UI/WebServerResources/js/Common/sgCkeditor.component.js index a61faec98..590db54d3 100644 --- a/UI/WebServerResources/js/Common/sgCkeditor.component.js +++ b/UI/WebServerResources/js/Common/sgCkeditor.component.js @@ -288,9 +288,10 @@ // vm.editor.editing.view.domRoots.get("main").style.marginRight = vm.ckMargin; // } - vm.editor.model.document.on('pasteState', onEditorChange); - vm.editor.model.document.on('change:data', onEditorChange); - vm.editor.model.document.on('paste', onEditorPaste); + vm.editor.model.document.on('pasteState', function () { onEditorChange(false); }); + vm.editor.model.document.on('change:data', function () { onEditorChange(false); }); + vm.editor.model.document.on('paste', function () { onEditorChange(false); }); + editor.editing.view.document.on('blur', function () { onEditorChange(true); }); onInstanceReady(); @@ -340,11 +341,11 @@ vm.editor.destroy(noUpdate); } - function onEditorChange() { + function onEditorChange(force) { if (editorChangedTimer) clearTimeout(editorChangedTimer); - editorChangedTimer = setTimeout(function () { + var refresh = function() { var html = vm.editor.getData(); var dom = document.createElement("DIV"); @@ -369,7 +370,13 @@ } modelChanged = false; editorChangedTimer = null; - }, editorChangedTimerValue); + }; + + if (force) { + refresh(); + } else { + editorChangedTimer = setTimeout(refresh, editorChangedTimerValue); + } } function onEditorPaste (event) {