From ca5726e7c3a2dca12211e537172d8e4e55ffccd5 Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 23 Mar 2026 22:45:25 +0100 Subject: [PATCH] fix(frontend): zoom buttons now re-render immediately (#39) scale was only read inside the async renderPage function, so Svelte 5 never tracked it as a reactive dependency of the effect. Reading scale synchronously in the effect condition registers it as a dependency and triggers a re-render on every zoom change. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/lib/components/PdfViewer.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/PdfViewer.svelte b/frontend/src/lib/components/PdfViewer.svelte index d22ca2b4..6514b707 100644 --- a/frontend/src/lib/components/PdfViewer.svelte +++ b/frontend/src/lib/components/PdfViewer.svelte @@ -141,7 +141,10 @@ $effect(() => { }); $effect(() => { - if (pdfDoc && currentPage) { + // Read scale synchronously so Svelte tracks it as a dependency. + // Without this, zoom changes don't re-trigger the effect because + // scale is only read inside the async renderPage call. + if (pdfDoc && currentPage && scale > 0) { renderPage(pdfDoc, currentPage).then(() => { if (pdfDoc) prerender(pdfDoc, currentPage); });