1 import {$getSelection, LexicalEditor} from "lexical";
7 setEditorContentFromHtml
8 } from "../utils/actions";
10 type EditorEventContent = {
15 function getContentToInsert(eventContent: EditorEventContent): string {
16 return eventContent.html || '';
19 export function listen(editor: LexicalEditor): void {
20 window.$events.listen<EditorEventContent>('editor::replace', eventContent => {
21 const html = getContentToInsert(eventContent);
22 setEditorContentFromHtml(editor, html);
25 window.$events.listen<EditorEventContent>('editor::append', eventContent => {
26 const html = getContentToInsert(eventContent);
27 appendHtmlToEditor(editor, html);
30 window.$events.listen<EditorEventContent>('editor::prepend', eventContent => {
31 const html = getContentToInsert(eventContent);
32 prependHtmlToEditor(editor, html);
35 window.$events.listen<EditorEventContent>('editor::insert', eventContent => {
36 const html = getContentToInsert(eventContent);
37 insertHtmlIntoEditor(editor, html);
40 window.$events.listen<EditorEventContent>('editor::focus', () => {
44 let changeFromLoading = true;
45 editor.registerUpdateListener(({dirtyElements, dirtyLeaves, editorState, prevEditorState}) => {
46 // Emit change event to component system (for draft detection) on actual user content change
47 if (dirtyElements.size > 0 || dirtyLeaves.size > 0) {
48 if (changeFromLoading) {
49 changeFromLoading = false;
51 window.$events.emit('editor-html-change', '');