From 3229917a0855e8d2695640c107560ceb62094ce1 Mon Sep 17 00:00:00 2001 From: Abe Jellinek <1770299+AbeJellinek@users.noreply.github.com> Date: Tue, 12 May 2026 14:46:24 -0400 Subject: [PATCH] Add Copy As context menu items --- src/common/context-menu.js | 22 ++++++++++++++++++++++ src/common/reader.js | 2 ++ src/index.dev.js | 6 ++++++ 3 files changed, 30 insertions(+) diff --git a/src/common/context-menu.js b/src/common/context-menu.js index 3ee23dbe9..ebc72be98 100644 --- a/src/common/context-menu.js +++ b/src/common/context-menu.js @@ -281,6 +281,21 @@ export function createAnnotationContextMenu(reader, params) { x: params.x, y: params.y, itemGroups: createItemGroup([ + [ + { + label: reader._getString('general-copy'), + onCommand: () => { + let dataTransfer = new DataTransfer(); + reader._handleSetDataTransferAnnotations(dataTransfer, annotations[0]); + navigator.clipboard.writeText(dataTransfer.getData('text/plain')); + } + }, + (reader._platform === 'zotero' || window.dev) && { + label: reader._getString('reader-copy-link-to-annotation'), + disabled: annotations.length !== 1, + onCommand: () => reader._onCopyLinkToAnnotation(annotations[0]) + } + ], [ (reader._platform === 'zotero' || window.dev) && { label: reader._getString('reader-add-to-note'), @@ -420,6 +435,13 @@ export function createThumbnailContextMenu(reader, params) { x: params.x, y: params.y, itemGroups: createItemGroup([ + [ + (reader._platform === 'zotero' || window.dev) && { + disabled: params.pageIndexes.length !== 1, + label: reader._getString('reader-copy-link-to-page'), + onCommand: () => reader._onCopyLinkToPage(params.pageIndexes[0]) + } + ], [ { label: reader._getString('reader-rotate-left'), diff --git a/src/common/reader.js b/src/common/reader.js index 65948dfd4..ac3fa593c 100644 --- a/src/common/reader.js +++ b/src/common/reader.js @@ -84,6 +84,8 @@ class Reader { this._onPurchaseReadAloudCredits = options.onPurchaseReadAloudCredits; this._onLogIn = options.onLogIn; this._onOpenReadAloudFirstRunPopup = options.onOpenReadAloudFirstRunPopup; + this._onCopyLinkToAnnotation = options.onCopyLinkToAnnotation; + this._onCopyLinkToPage = options.onCopyLinkToPage; for (let ftl of options.ftl) { addFTL(ftl); diff --git a/src/index.dev.js b/src/index.dev.js index 14cf12eed..c7351e365 100644 --- a/src/index.dev.js +++ b/src/index.dev.js @@ -307,6 +307,12 @@ async function createReader() { reader.setLoggedIn(true); }, 200); }, + onCopyLinkToAnnotation(annotation) { + console.log('Copy link to annotation', annotation); + }, + onCopyLinkToPage(pageIndex) { + console.log('Copy link to page', pageIndex); + }, }); reader.enableAddToNote(true); window._reader = reader;