From 46f5a2d7a7afa29ecf417ff4d40dea9d1e06e106 Mon Sep 17 00:00:00 2001 From: 01zulfi <85733202+01zulfi@users.noreply.github.com> Date: Thu, 26 Mar 2026 23:19:31 +0500 Subject: [PATCH] editor: check for permission before pasting images (#9587) Signed-off-by: 01zulfi <85733202+01zulfi@users.noreply.github.com> --- .../extensions/clipboard/clipboard-dom-parser.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts b/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts index 8eededd5e..f118c15d6 100644 --- a/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts +++ b/packages/editor/src/extensions/clipboard/clipboard-dom-parser.ts @@ -42,7 +42,7 @@ export class ClipboardDOMParser extends ProsemirrorDOMParser { convertGoogleDocsChecklist(dom); formatCodeblocks(dom); convertBrToSingleSpacedParagraphs(dom); - removePremiumFeatures(dom); + removeRestrictedFeatures(dom); removeBlockId(dom); } return super.parseSlice(dom, options); @@ -53,7 +53,7 @@ export class ClipboardDOMParser extends ProsemirrorDOMParser { convertGoogleDocsChecklist(dom); formatCodeblocks(dom); convertBrToSingleSpacedParagraphs(dom); - removePremiumFeatures(dom); + removeRestrictedFeatures(dom); removeBlockId(dom); } return super.parse(dom, options); @@ -154,7 +154,7 @@ export function convertGoogleDocsChecklist(dom: HTMLElement | Document) { } } -const premiumFeatures = [ +const restrictedFeatures = [ { selector: "div.callout", permission: "setCallout" @@ -166,11 +166,15 @@ const premiumFeatures = [ { selector: "ul.checklist", permission: "toggleTaskList" + }, + { + selector: "img", + permission: "insertAttachment" } ] as const; -function removePremiumFeatures(dom: HTMLElement | Document) { - for (const feature of premiumFeatures) { +function removeRestrictedFeatures(dom: HTMLElement | Document) { + for (const feature of restrictedFeatures) { const elements = dom.querySelectorAll(feature.selector); if (elements.length === 0) continue;