diff --git a/src/core/js/ext_editmode_wysiwyg_text.js b/src/core/js/ext_editmode_wysiwyg_text.js index b3cb8a8745d4ec8db4f6ab7601c767ba45b576d3..f87e5cd5ff266a8b28019814ceb5edf132b12ed3 100644 --- a/src/core/js/ext_editmode_wysiwyg_text.js +++ b/src/core/js/ext_editmode_wysiwyg_text.js @@ -67,7 +67,28 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g editor.updateSourceElement(); }); // TODO(fspreck): Add an event listener to save also changes made in - // source mode. What event can we listen to? + // source mode. What event can we listen to? The following doesn't + // work either. + // document.body.addEventListener("input", e => { + // console.log("Saving after input..."); + // editor.updateSourceElement(); + // }, true); + const sourceEditingPlugin = editor.plugins.get("SourceEditing"); + sourceEditingPlugin.on("change:isSourceEditingMode", (e, name, isSourceEditingMode) => { + if (isSourceEditingMode) { + // Maybe this helps? + console.log("Entering source editing"); + const [domSourceEditingElementWrapper] = sourceEditingPlugin._replacedRoots.values(); + const textarea = domSourceEditingElementWrapper.querySelector('textarea'); + + // TODO(fspreck) this has to be more intelligent since it + // leads to an infinite update loop... + textarea.addEventListener("input", (e) => { + console.log("Input in source mode"); + // sourceEditingPlugin._updateEditorData(); + }); + } + }); } catch (error) { logger.error(error.stack); }