From cda7cc9a57795fa92e91c395e397cd21503357ed Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:59:18 +0000 Subject: [PATCH] return clipboardTextSerializer as markdown --- .../features/editor/extensions/markdown-clipboard.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/client/src/features/editor/extensions/markdown-clipboard.ts b/apps/client/src/features/editor/extensions/markdown-clipboard.ts index e1e3707d..8e55f3a8 100644 --- a/apps/client/src/features/editor/extensions/markdown-clipboard.ts +++ b/apps/client/src/features/editor/extensions/markdown-clipboard.ts @@ -1,9 +1,9 @@ // adapted from: https://github.com/aguingand/tiptap-markdown/blob/main/src/extensions/tiptap/clipboard.js - MIT import { Extension } from "@tiptap/core"; 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 { markdownToHtml } from "@docmost/editor-ext"; +import { markdownToHtml, htmlToMarkdown } from "@docmost/editor-ext"; export const MarkdownClipboard = Extension.create({ name: "markdownClipboard", @@ -19,6 +19,13 @@ export const MarkdownClipboard = Extension.create({ new Plugin({ key: new PluginKey("markdownClipboard"), 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) => { if (!event.clipboardData) { return false;