From 3e255fa6473cfdd84d51f3a9d77d265d24fb9b6e Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 29 Dec 2025 10:15:15 +0200 Subject: [PATCH] feat(client/pdf): add debouncing --- packages/pdfjs-viewer/src/custom.mjs | 29 +++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/pdfjs-viewer/src/custom.mjs b/packages/pdfjs-viewer/src/custom.mjs index 48d73e719..1f75add44 100644 --- a/packages/pdfjs-viewer/src/custom.mjs +++ b/packages/pdfjs-viewer/src/custom.mjs @@ -5,19 +5,30 @@ async function main() { } const app = PDFViewerApplication; - await app.initializedPromise; - + await app.initializedPromise; + app.eventBus.on("documentloaded", () => { const storage = app.pdfDocument.annotationStorage; + let timeout = null; + + function debouncedSave() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(async () => { + console.log("Triggered debounce save"); + const data = await app.pdfDocument.saveDocument(); + window.parent.postMessage({ + type: "pdfjs-viewer-document-modified", + data: data + }, "*"); + storage.resetModified(); + timeout = null; + }, 2_000); + } storage.onSetModified = async () => { - console.log("Document modified"); - const data = await app.pdfDocument.saveDocument(); - window.parent.postMessage({ - type: "pdfjs-viewer-document-modified", - data: data - }, "*"); - storage.resetModified(); + debouncedSave(); }; }); };