| 1234567891011121314151617181920212223242526272829303132 |
- 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 = `<div>${content}</div>`;
- 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<DirectEditorProps, 'state'>,
- pluginOptions?: PluginOptions,
- ) => {
- return new EditorView(dom, {
- state: EditorState.create({
- doc: createDocument(content),
- plugins: buildPlugins(schema, pluginOptions),
- }),
- ...props,
- });
- };
|