]> BookStack Code Mirror - bookstack/blobdiff - resources/js/editor/ProseMirrorView.js
Added table creation and insertion
[bookstack] / resources / js / editor / ProseMirrorView.js
index 63a47dc35b09f07b3e78c0b3cb49df30a996f984..bfd209db1fe4ffef32c1aa9c3e5334ba4679fd4f 100644 (file)
@@ -1,12 +1,14 @@
 import {EditorState} from "prosemirror-state";
 import {EditorView} from "prosemirror-view";
 import {exampleSetup} from "prosemirror-example-setup";
+import {tableEditing} from "prosemirror-tables";
 
-import {DOMParser, DOMSerializer} from "prosemirror-model";
+import {DOMParser} from "prosemirror-model";
 
 import schema from "./schema";
 import menu from "./menu";
 import nodeViews from "./node-views";
+import {stateToHtml} from "./util";
 
 class ProseMirrorView {
     constructor(target, content) {
@@ -21,6 +23,7 @@ class ProseMirrorView {
                 plugins: [
                     ...exampleSetup({schema, menuBar: false}),
                     menu,
+                    tableEditing(),
                 ]
             }),
             nodeViews,
@@ -28,13 +31,16 @@ class ProseMirrorView {
     }
 
     get content() {
-        const fragment = DOMSerializer.fromSchema(schema).serializeFragment(this.view.state.doc.content);
-        const renderDoc = document.implementation.createHTMLDocument();
-        renderDoc.body.appendChild(fragment);
-        return renderDoc.body.innerHTML;
+        return stateToHtml(this.view.state);
+    }
+
+    focus() {
+        this.view.focus()
+    }
+
+    destroy() {
+        this.view.destroy()
     }
-    focus() { this.view.focus() }
-    destroy() { this.view.destroy() }
 }
 
 export default ProseMirrorView;
\ No newline at end of file