From e67567c25d86d9564ca5dd8d1ab4d6668b647906 Mon Sep 17 00:00:00 2001 From: Robert Molina Date: Sun, 29 Mar 2026 18:28:32 -0400 Subject: [PATCH] fix: require double-click to open editor links --- .../src/components/editor/use-block-editor.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/apps/web/src/components/editor/use-block-editor.ts b/apps/web/src/components/editor/use-block-editor.ts index f30ff38f..412e1d08 100644 --- a/apps/web/src/components/editor/use-block-editor.ts +++ b/apps/web/src/components/editor/use-block-editor.ts @@ -16,8 +16,43 @@ type UseBlockEditorOptions = { initialBlocks?: [PartialBlock, ...PartialBlock[]] | undefined; }; +function getAnchorFromTarget(target: EventTarget | null) { + if (!(target instanceof Element)) return null; + const anchor = target.closest("a[href]"); + return anchor instanceof HTMLAnchorElement ? anchor : null; +} + export function useBlockEditor({ initialBlocks }: UseBlockEditorOptions) { const editor = useCreateBlockNote({ + _tiptapOptions: { + editorProps: { + handleClick: (_view, _pos, event) => { + const anchor = getAnchorFromTarget(event.target); + + if (!anchor) return false; + + event.preventDefault(); + + // Block single-click navigation for links in the editor. + return true; + }, + handleDoubleClick: (_view, _pos, event) => { + const anchor = getAnchorFromTarget(event.target); + + if (!anchor) return false; + + event.preventDefault(); + + window.open( + anchor.href, + anchor.target || "_blank", + "noopener,noreferrer", + ); + + return true; + }, + }, + }, animations: false, dictionary: { ...en,