-import {EditorState} from "prosemirror-state";
-import {EditorView} from "prosemirror-view";
-import {exampleSetup} from "prosemirror-example-setup";
-import {defaultMarkdownParser,
- defaultMarkdownSerializer} from "prosemirror-markdown";
-import {DOMParser, DOMSerializer} from "prosemirror-model";
+import MarkdownView from "./editor/MarkdownView";
+import ProseMirrorView from "./editor/ProseMirrorView";
-import {schema} from "./editor/schema";
-
-class MarkdownView {
- constructor(target, content) {
-
- // Build DOM from content
- const renderDoc = document.implementation.createHTMLDocument();
- renderDoc.body.innerHTML = content;
-
- const htmlDoc = DOMParser.fromSchema(schema).parse(renderDoc.body);
- const markdown = defaultMarkdownSerializer.serialize(htmlDoc);
-
- this.textarea = target.appendChild(document.createElement("textarea"))
- this.textarea.value = markdown;
- }
-
- get content() {
- const markdown = this.textarea.value;
- const doc = defaultMarkdownParser.parse(markdown);
- const fragment = DOMSerializer.fromSchema(schema).serializeFragment(doc.content);
- const renderDoc = document.implementation.createHTMLDocument();
- renderDoc.body.appendChild(fragment);
- return renderDoc.body.innerHTML;
- }
-
- focus() { this.textarea.focus() }
- destroy() { this.textarea.remove() }
-}
-
-class ProseMirrorView {
- constructor(target, content) {
-
- // Build DOM from content
- const renderDoc = document.implementation.createHTMLDocument();
- renderDoc.body.innerHTML = content;
-
- this.view = new EditorView(target, {
- state: EditorState.create({
- doc: DOMParser.fromSchema(schema).parse(renderDoc.body),
- plugins: exampleSetup({schema})
- })
- });
- }
-
- 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;
- }
- focus() { this.view.focus() }
- destroy() { this.view.destroy() }
-}
const place = document.querySelector("#editor");
let view = new ProseMirrorView(place, document.getElementById('content').innerHTML);