From 6b02ad842106c68220caa21906017a7b261892e4 Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 13 Mar 2026 23:43:50 +0200 Subject: [PATCH 1/9] enable floating highlight button --- packages/pdfjs-viewer/src/custom.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index 4cd1533455..a951e64200 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -18,6 +18,15 @@ async function main() { interceptPersistence(getCustomAppOptions(urlParams)); } + if (window.parent && window.parent !== window) { + window.parent.addEventListener('webviewerloaded', (event) => { + const iframeWindow = event.detail.source; + if (iframeWindow.PDFViewerApplicationOptions) { + iframeWindow.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); + } + }); + } + // Wait for the PDF viewer application to be available. while (!window.PDFViewerApplication) { await new Promise(r => setTimeout(r, 50)); From 53b0aafb987327ba44b72492389ef6046fb2484d Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 13 Mar 2026 23:48:01 +0200 Subject: [PATCH 2/9] disable preferences warning --- packages/pdfjs-viewer/src/custom.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index a951e64200..7f1bdb1dc6 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -22,6 +22,7 @@ async function main() { window.parent.addEventListener('webviewerloaded', (event) => { const iframeWindow = event.detail.source; if (iframeWindow.PDFViewerApplicationOptions) { + iframeWindow.PDFViewerApplicationOptions.set("disablePreferences", true); iframeWindow.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); } }); From 6ab421ffa00f4126ef761d255e4225dcf1ae2e7a Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 00:18:47 +0200 Subject: [PATCH 3/9] check target iframe --- packages/pdfjs-viewer/src/custom.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index 7f1bdb1dc6..bade5d8945 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -20,10 +20,9 @@ async function main() { if (window.parent && window.parent !== window) { window.parent.addEventListener('webviewerloaded', (event) => { - const iframeWindow = event.detail.source; - if (iframeWindow.PDFViewerApplicationOptions) { - iframeWindow.PDFViewerApplicationOptions.set("disablePreferences", true); - iframeWindow.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); + if (event.detail?.source === window && window.PDFViewerApplicationOptions) { + window.PDFViewerApplicationOptions.set("disablePreferences", true); + window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); } }); } From 9a9cfdec2b7476cb0637aa2cc287d5cc79828415 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 00:46:55 +0200 Subject: [PATCH 4/9] add unload handler --- packages/pdfjs-viewer/src/custom.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index bade5d8945..baf188c0c7 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -18,13 +18,15 @@ async function main() { interceptPersistence(getCustomAppOptions(urlParams)); } + const pdfOptionsHandler = (event) => { + if (event.detail?.source === window && window.PDFViewerApplicationOptions) { + window.PDFViewerApplicationOptions.set("disablePreferences", true); + window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); + } + }; if (window.parent && window.parent !== window) { - window.parent.addEventListener('webviewerloaded', (event) => { - if (event.detail?.source === window && window.PDFViewerApplicationOptions) { - window.PDFViewerApplicationOptions.set("disablePreferences", true); - window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); - } - }); + window.parent.addEventListener('webviewerloaded', pdfOptionsHandler); + window.addEventListener('unload', () => window.parent.removeEventListener('webviewerloaded', pdfOptionsHandler)); } // Wait for the PDF viewer application to be available. From d52f529b24d5d133b25d661445a57f1f56a4a748 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 01:10:09 +0200 Subject: [PATCH 5/9] extract handler setup into a function --- packages/pdfjs-viewer/src/custom.ts | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index baf188c0c7..99efe60fa2 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -18,16 +18,7 @@ async function main() { interceptPersistence(getCustomAppOptions(urlParams)); } - const pdfOptionsHandler = (event) => { - if (event.detail?.source === window && window.PDFViewerApplicationOptions) { - window.PDFViewerApplicationOptions.set("disablePreferences", true); - window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); - } - }; - if (window.parent && window.parent !== window) { - window.parent.addEventListener('webviewerloaded', pdfOptionsHandler); - window.addEventListener('unload', () => window.parent.removeEventListener('webviewerloaded', pdfOptionsHandler)); - } + configurePdfViewerOptions(); // Wait for the PDF viewer application to be available. while (!window.PDFViewerApplication) { @@ -50,6 +41,19 @@ async function main() { await app.initializedPromise; }; +function configurePdfViewerOptions() { + const pdfOptionsHandler = (event) => { + if (event.detail?.source === window && window.PDFViewerApplicationOptions) { + window.PDFViewerApplicationOptions.set("disablePreferences", true); + window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); + } + }; + if (window.parent && window.parent !== window) { + window.parent.addEventListener("webviewerloaded", pdfOptionsHandler); + window.addEventListener("unload", () => window.parent.removeEventListener("webviewerloaded", pdfOptionsHandler)); + } +} + function hideSidebar() { window.TRILIUM_HIDE_SIDEBAR = true; const toggleButtonEl = document.getElementById("viewsManagerToggleButton"); From d4bc1ec444b8c306f01940cf3a292850d403b810 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 00:18:56 +0200 Subject: [PATCH 6/9] add typings --- packages/pdfjs-viewer/src/custom.ts | 2 +- packages/pdfjs-viewer/src/typings.d.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index 99efe60fa2..ad781a7872 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -42,7 +42,7 @@ async function main() { }; function configurePdfViewerOptions() { - const pdfOptionsHandler = (event) => { + const pdfOptionsHandler = (event: CustomEvent) => { if (event.detail?.source === window && window.PDFViewerApplicationOptions) { window.PDFViewerApplicationOptions.set("disablePreferences", true); window.PDFViewerApplicationOptions.set("enableHighlightFloatingButton", true); diff --git a/packages/pdfjs-viewer/src/typings.d.ts b/packages/pdfjs-viewer/src/typings.d.ts index 50ac44fc07..db12b178d0 100644 --- a/packages/pdfjs-viewer/src/typings.d.ts +++ b/packages/pdfjs-viewer/src/typings.d.ts @@ -46,5 +46,6 @@ declare global { }; store: ViewHistory; }; + PDFViewerApplicationOptions?: { set(name: string, value: any): void; } } } From 5ae9952ba135bcce3f0a88f766456d8053999f81 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 01:30:59 +0200 Subject: [PATCH 7/9] use pagehide event instead of unload --- packages/pdfjs-viewer/src/custom.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index ad781a7872..1344a68897 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -50,7 +50,7 @@ function configurePdfViewerOptions() { }; if (window.parent && window.parent !== window) { window.parent.addEventListener("webviewerloaded", pdfOptionsHandler); - window.addEventListener("unload", () => window.parent.removeEventListener("webviewerloaded", pdfOptionsHandler)); + window.addEventListener("pagehide", () => window.parent.removeEventListener("webviewerloaded", pdfOptionsHandler)); } } From 940f7f77f581e535e012bd6f1cadbd79a6f50785 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 11:00:56 +0200 Subject: [PATCH 8/9] add automatic removal of the event --- packages/pdfjs-viewer/src/custom.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index 1344a68897..4bfa955d70 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -49,7 +49,7 @@ function configurePdfViewerOptions() { } }; if (window.parent && window.parent !== window) { - window.parent.addEventListener("webviewerloaded", pdfOptionsHandler); + window.parent.addEventListener("webviewerloaded", pdfOptionsHandler, { once: true }); window.addEventListener("pagehide", () => window.parent.removeEventListener("webviewerloaded", pdfOptionsHandler)); } } From 10e28789e22fbdaea245ac7e4f07c8c4bf3b723a Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 14 Mar 2026 11:02:36 +0200 Subject: [PATCH 9/9] add optional chaining to access window.parent in callback --- packages/pdfjs-viewer/src/custom.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pdfjs-viewer/src/custom.ts b/packages/pdfjs-viewer/src/custom.ts index 4bfa955d70..dc49dd4bd3 100644 --- a/packages/pdfjs-viewer/src/custom.ts +++ b/packages/pdfjs-viewer/src/custom.ts @@ -7,9 +7,9 @@ import { setupPdfLayers } from "./layers"; async function main() { const urlParams = new URLSearchParams(window.location.search); const isEditable = urlParams.get("editable") === "1"; - + document.body.classList.toggle("read-only-document", !isEditable); - + if (urlParams.get("sidebar") === "0") { hideSidebar(); } @@ -50,7 +50,7 @@ function configurePdfViewerOptions() { }; if (window.parent && window.parent !== window) { window.parent.addEventListener("webviewerloaded", pdfOptionsHandler, { once: true }); - window.addEventListener("pagehide", () => window.parent.removeEventListener("webviewerloaded", pdfOptionsHandler)); + window.addEventListener("pagehide", () => window.parent?.removeEventListener("webviewerloaded", pdfOptionsHandler)); } }