1 import schema from "./schema";
2 import {DOMParser, DOMSerializer} from "prosemirror-model";
8 export function htmlToDoc(html) {
9 const renderDoc = document.implementation.createHTMLDocument();
10 renderDoc.body.innerHTML = html;
11 return DOMParser.fromSchema(schema).parse(renderDoc.body);
18 export function docToHtml(doc) {
19 const fragment = DOMSerializer.fromSchema(schema).serializeFragment(doc.content);
20 const renderDoc = document.implementation.createHTMLDocument();
21 renderDoc.body.appendChild(fragment);
22 return renderDoc.body.innerHTML;
26 * @param {PmEditorState} state
29 export function stateToHtml(state) {
30 const fragment = DOMSerializer.fromSchema(schema).serializeFragment(state.doc.content);
31 const renderDoc = document.implementation.createHTMLDocument();
32 renderDoc.body.appendChild(fragment);
33 return renderDoc.body.innerHTML;
37 * @class KeyedMultiStack
38 * Holds many stacks, seperated via a key, with a simple
39 * interface to pop and push values to the stacks.
41 export class KeyedMultiStack {
49 * @return {undefined|*}
52 if (Array.isArray(this.stack[key])) {
53 return this.stack[key].pop();
63 if (this.stack[key] === undefined) {
67 this.stack[key].push(value);