1 import {EditorState} from "prosemirror-state";
2 import {EditorView} from "prosemirror-view";
3 import {exampleSetup} from "prosemirror-example-setup";
5 import {DOMParser, DOMSerializer} from "prosemirror-model";
7 import schema from "./schema";
9 class ProseMirrorView {
10 constructor(target, content) {
12 // Build DOM from content
13 const renderDoc = document.implementation.createHTMLDocument();
14 renderDoc.body.innerHTML = content;
16 this.view = new EditorView(target, {
17 state: EditorState.create({
18 doc: DOMParser.fromSchema(schema).parse(renderDoc.body),
19 plugins: exampleSetup({schema})
25 const fragment = DOMSerializer.fromSchema(schema).serializeFragment(this.view.state.doc.content);
26 const renderDoc = document.implementation.createHTMLDocument();
27 renderDoc.body.appendChild(fragment);
28 return renderDoc.body.innerHTML;
30 focus() { this.view.focus() }
31 destroy() { this.view.destroy() }
34 export default ProseMirrorView;