thu-maic--openmaic
33 行
1018 B
TypeScript
33 行
1018 B
TypeScript
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,
|
|
});
|
|
};
|