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";
8 import menu from "./menu";
9 import nodeViews from "./node-views";
11 class ProseMirrorView {
12 constructor(target, content) {
14 // Build DOM from content
15 const renderDoc = document.implementation.createHTMLDocument();
16 renderDoc.body.innerHTML = content;
18 this.view = new EditorView(target, {
19 state: EditorState.create({
20 doc: DOMParser.fromSchema(schema).parse(renderDoc.body),
22 ...exampleSetup({schema, menuBar: false}),
31 const fragment = DOMSerializer.fromSchema(schema).serializeFragment(this.view.state.doc.content);
32 const renderDoc = document.implementation.createHTMLDocument();
33 renderDoc.body.appendChild(fragment);
34 return renderDoc.body.innerHTML;
36 focus() { this.view.focus() }
37 destroy() { this.view.destroy() }
40 export default ProseMirrorView;