- editor.registerUpdateListener(({editorState}) => {
- console.log('editorState', editorState.toJSON());
+ if (debugView) {
+ debugView.hidden = true;
+ }
+
+ let changeFromLoading = true;
+ editor.registerUpdateListener(({dirtyElements, dirtyLeaves, editorState, prevEditorState}) => {
+ // Watch for selection changes to update the UI on change
+ // Used to be done via SELECTION_CHANGE_COMMAND but this would not always emit
+ // for all selection changes, so this proved more reliable.
+ const selectionChange = !(prevEditorState._selection?.is(editorState._selection) || false);
+ if (selectionChange) {
+ editor.update(() => {
+ const selection = $getSelection();
+ context.manager.triggerStateUpdate({
+ editor, selection,
+ });
+ });
+ }
+
+ // Emit change event to component system (for draft detection) on actual user content change
+ if (dirtyElements.size > 0 || dirtyLeaves.size > 0) {
+ if (changeFromLoading) {
+ changeFromLoading = false;
+ } else {
+ window.$events.emit('editor-html-change', '');
+ }
+ }
+
+ // Debug logic
+ // console.log('editorState', editorState.toJSON());