From faeb76a7e738b8c416e8d8c9901048f11e7d684d Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Sat, 24 Oct 2026 02:24:34 +0000 Subject: [PATCH] books reader: zoom, 1/2-page spreads, scroll vs paged mode - Zoom buttons + Ctrl/Cmd +/-/0, Ctrl+wheel/trackpad pinch, touch pinch on PDFs; PDF scales the pdf.js render (sharp re-render after it settles), EPUB scales text. Remembered per format, and per book. - One/two pages side by side: PDF rows with the cover alone, foliate max-column-count. - Scroll vs Pages mode for both engines; PDF paged shows one page/spread fitted to the screen, prev/next move a whole spread; spreads stack when scrolling. - Reading position is kept across zoom/spread/mode changes; progress keeps saving. - layout.ts helpers with unit tests; old flow/fontSize/pdfZoom settings migrate. --- src/lib/books/reader/EpubReader.svelte | 53 +++- src/lib/books/reader/PdfReader.svelte | 273 +++++++++++++----- src/lib/books/reader/layout.test.ts | 111 +++++++ src/lib/books/reader/layout.ts | 124 ++++++++ src/lib/books/reader/types.ts | 16 +- .../books/[id=integer]/read/+page.svelte | 272 ++++++++++++----- 6 files changed, 693 insertions(+), 156 deletions(-) create mode 100644 src/lib/books/reader/layout.test.ts create mode 100644 src/lib/books/reader/layout.ts diff --git a/src/lib/books/reader/EpubReader.svelte b/src/lib/books/reader/EpubReader.svelte index 0994cfd..11d6bb0 100644 --- a/src/lib/books/reader/EpubReader.svelte +++ b/src/lib/books/reader/EpubReader.svelte @@ -1,7 +1,8 @@