import { EditorState } from 'prosemirror-state' import { type DirectEditorProps, EditorView } from 'prosemirror-view' import { Schema, DOMParser } from 'prosemirror-model' import { buildPlugins, type PluginOptions } from './plugins/index' import { schemaNodes, schemaMarks } from './schema/index' const schema = new Schema({ nodes: schemaNodes, marks: schemaMarks, }) export const createDocument = (content: string) => { const htmlString = `
${content}
` const parser = new window.DOMParser() const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild return DOMParser.fromSchema(schema).parse(element as Element) } export const initProsemirrorEditor = ( dom: Element, content: string, props: Omit, pluginOptions?: PluginOptions, ) => { return new EditorView(dom, { state: EditorState.create({ doc: createDocument(content), plugins: buildPlugins(schema, pluginOptions), }), ...props, }) }