@rtdui/editor
Version:
React rich text editor based on tiptap
33 lines (30 loc) • 1.33 kB
JavaScript
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
const require_markdown_it_katex = require('./markdown-it-katex.cjs');
let _tiptap_core = require("@tiptap/core");
let _tiptap_pm_state = require("@tiptap/pm/state");
let markdown_it = require("markdown-it");
markdown_it = require_runtime.__toESM(markdown_it);
let _tiptap_pm_model = require("@tiptap/pm/model");
//#region packages/editor/src/RichTextEditor/tiptap_extensions/extension-markdown-paste/markdownPaste.ts
const MarkdownPaste = _tiptap_core.Extension.create({
name: "markdownPaste",
addProseMirrorPlugins() {
return [new _tiptap_pm_state.Plugin({
key: new _tiptap_pm_state.PluginKey("markdownPaste"),
props: { handlePaste: (view, event) => {
if (view.state.selection.$head.parent.type.name !== "paragraph") return false;
const body = (0, _tiptap_core.elementFromString)(new markdown_it.default({
html: false,
highlight: (str, lang) => "",
linkify: true,
breaks: true
}).use(require_markdown_it_katex.default).render(event.clipboardData?.getData("text") || ""));
const node = _tiptap_pm_model.DOMParser.fromSchema(this.editor.schema).parse(body);
this.editor.commands.insertContent(node.toJSON());
return true;
} }
})];
}
});
//#endregion
exports.MarkdownPaste = MarkdownPaste;