From bbfe0b237d90ebe5148fb81cfd91ddad56fe9c36 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Fri, 13 Sep 2024 15:17:11 +0500 Subject: [PATCH] editor: fix duplicate block-id when pasting content from note --- .../src/extensions/clipboard/clipboard-dom-parser.ts | 7 +++++++ .../src/extensions/clipboard/clipboard-dom-serializer.ts | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts b/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts index a7f41e5a1..49ec2c83e 100644 --- a/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts +++ b/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts @@ -43,11 +43,18 @@ export class ClipboardDOMParser extends ProsemirrorDOMParser { formatCodeblocks(dom); convertBrToSingleSpacedParagraphs(dom); removeImages(dom); + removeBlockId(dom); } return super.parseSlice(dom, options); } } +export function removeBlockId(dom: HTMLElement | Document) { + for (const element of dom.querySelectorAll("[data-block-id]")) { + element.removeAttribute("data-block-id"); + } +} + export function formatCodeblocks(dom: HTMLElement | Document) { for (const pre of dom.querySelectorAll("pre")) { pre.innerHTML = pre.innerHTML?.replaceAll(//g, "\n"); diff --git a/packages/editor/src/extensions/clipboard/clipboard-dom-serializer.ts b/packages/editor/src/extensions/clipboard/clipboard-dom-serializer.ts index 45e1438f0..b7e8feb22 100644 --- a/packages/editor/src/extensions/clipboard/clipboard-dom-serializer.ts +++ b/packages/editor/src/extensions/clipboard/clipboard-dom-serializer.ts @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Fragment, Schema } from "prosemirror-model"; import { DOMSerializer } from "@tiptap/pm/model"; +import { Fragment, Schema } from "prosemirror-model"; export class ClipboardDOMSerializer extends DOMSerializer { static fromSchema(schema: Schema): ClipboardDOMSerializer { @@ -43,6 +43,10 @@ export class ClipboardDOMSerializer extends DOMSerializer { p.remove(); } + for (const element of dom.querySelectorAll("[data-block-id]")) { + element.removeAttribute("data-block-id"); + } + for (const p of dom.querySelectorAll('p[data-spacing="single"]')) { if (!p.previousElementSibling || p.previousElementSibling.tagName !== "P") continue;