]> BookStack Code Mirror - bookstack/blobdiff - resources/js/wysiwyg/actions.ts
Lexical: Started loading real content, Improved html loading
[bookstack] / resources / js / wysiwyg / actions.ts
index bca31e51b7a9b300cee0dc48f74db59f36fd4e5e..3a32b82d8614785e149652da5a9d24b2595e3bc1 100644 (file)
@@ -1,17 +1,32 @@
-import {$getRoot, LexicalEditor} from "lexical";
+import {$createParagraphNode, $getRoot, $isTextNode, LexicalEditor} from "lexical";
 import {$generateHtmlFromNodes, $generateNodesFromDOM} from "@lexical/html";
+import {$createCustomParagraphNode} from "./nodes/custom-paragraph";
 
 
 export function setEditorContentFromHtml(editor: LexicalEditor, html: string) {
     const parser = new DOMParser();
     const dom = parser.parseFromString(html, 'text/html');
 
+    console.log(html);
     editor.update(() => {
-        const nodes = $generateNodesFromDOM(editor, dom);
+        // Empty existing
         const root = $getRoot();
         for (const child of root.getChildren()) {
             child.remove(true);
         }
+
+        const nodes = $generateNodesFromDOM(editor, dom);
+
+        // Wrap top-level text nodes
+        for (let i = 0; i < nodes.length; i++) {
+            const node = nodes[i];
+            if ($isTextNode(node)) {
+                const paragraph = $createCustomParagraphNode();
+                paragraph.append(node);
+                nodes[i] = paragraph;
+            }
+        }
+
         root.append(...nodes);
     });
 }