mirror of
https://github.com/docmost/docmost.git
synced 2026-05-18 15:34:05 +08:00
return clipboardTextSerializer as markdown
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
// adapted from: https://github.com/aguingand/tiptap-markdown/blob/main/src/extensions/tiptap/clipboard.js - MIT
|
// adapted from: https://github.com/aguingand/tiptap-markdown/blob/main/src/extensions/tiptap/clipboard.js - MIT
|
||||||
import { Extension } from "@tiptap/core";
|
import { Extension } from "@tiptap/core";
|
||||||
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
||||||
import { DOMParser } from "@tiptap/pm/model";
|
import { DOMParser, DOMSerializer } from "@tiptap/pm/model";
|
||||||
import { find } from "linkifyjs";
|
import { find } from "linkifyjs";
|
||||||
import { markdownToHtml } from "@docmost/editor-ext";
|
import { markdownToHtml, htmlToMarkdown } from "@docmost/editor-ext";
|
||||||
|
|
||||||
export const MarkdownClipboard = Extension.create({
|
export const MarkdownClipboard = Extension.create({
|
||||||
name: "markdownClipboard",
|
name: "markdownClipboard",
|
||||||
@@ -19,6 +19,13 @@ export const MarkdownClipboard = Extension.create({
|
|||||||
new Plugin({
|
new Plugin({
|
||||||
key: new PluginKey("markdownClipboard"),
|
key: new PluginKey("markdownClipboard"),
|
||||||
props: {
|
props: {
|
||||||
|
clipboardTextSerializer: (slice) => {
|
||||||
|
const div = document.createElement("div");
|
||||||
|
const serializer = DOMSerializer.fromSchema(this.editor.schema);
|
||||||
|
const fragment = serializer.serializeFragment(slice.content);
|
||||||
|
div.appendChild(fragment);
|
||||||
|
return htmlToMarkdown(div.innerHTML);
|
||||||
|
},
|
||||||
handlePaste: (view, event, slice) => {
|
handlePaste: (view, event, slice) => {
|
||||||
if (!event.clipboardData) {
|
if (!event.clipboardData) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user