From 121896a63995fe2674131a01d6724ce30838ed3f Mon Sep 17 00:00:00 2001 From: Aleksey Date: Mon, 27 Apr 2026 22:19:27 +0300 Subject: [PATCH 1/2] fix: handle numeric defaultZoomLevel on document load --- packages/plugin-zoom/src/lib/zoom-plugin.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/plugin-zoom/src/lib/zoom-plugin.ts b/packages/plugin-zoom/src/lib/zoom-plugin.ts index bd7b94c0f..57f549c43 100644 --- a/packages/plugin-zoom/src/lib/zoom-plugin.ts +++ b/packages/plugin-zoom/src/lib/zoom-plugin.ts @@ -529,14 +529,7 @@ export class ZoomPlugin extends BasePlugin< private recalcAuto(documentId: string, focus?: VerticalZoomFocus) { const docState = this.getDocumentState(documentId); if (!docState) return; - - if ( - docState.zoomLevel === ZoomMode.Automatic || - docState.zoomLevel === ZoomMode.FitPage || - docState.zoomLevel === ZoomMode.FitWidth - ) { - this.handleRequest({ level: docState.zoomLevel, focus }, documentId); - } + this.handleRequest({ level: docState.zoomLevel, focus }, documentId); } // ───────────────────────────────────────────────────────── From 9dbd03f68b50858b7a9730168a38d5b2c1db3463 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Mon, 27 Apr 2026 22:40:09 +0300 Subject: [PATCH 2/2] fix: apply numeric zoom after viewport resize instead of recalcAuto --- packages/plugin-zoom/src/lib/zoom-plugin.ts | 32 ++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/plugin-zoom/src/lib/zoom-plugin.ts b/packages/plugin-zoom/src/lib/zoom-plugin.ts index 57f549c43..53e30fd0e 100644 --- a/packages/plugin-zoom/src/lib/zoom-plugin.ts +++ b/packages/plugin-zoom/src/lib/zoom-plugin.ts @@ -85,12 +85,24 @@ export class ZoomPlugin extends BasePlugin< // Keep automatic modes up to date per document this.viewport.onViewportResize( - (event) => this.recalcAuto(event.documentId, VerticalZoomFocus.Top), - { - mode: 'debounce', - wait: 150, - keyExtractor: (event) => event.documentId, - }, + (event) => { + const docState = this.getDocumentState(event.documentId); + if (!docState) return; + + if (typeof docState.zoomLevel === 'number') { + this.handleRequest( + { level: docState.zoomLevel, focus: VerticalZoomFocus.Top }, + event.documentId + ); + return; + } + this.recalcAuto(event.documentId, VerticalZoomFocus.Top); + }, + { + mode: 'debounce', + wait: 150, + keyExtractor: (event) => event.documentId, + }, ); // Subscribe to spread changes @@ -529,7 +541,13 @@ export class ZoomPlugin extends BasePlugin< private recalcAuto(documentId: string, focus?: VerticalZoomFocus) { const docState = this.getDocumentState(documentId); if (!docState) return; - this.handleRequest({ level: docState.zoomLevel, focus }, documentId); + if ( + docState.zoomLevel === ZoomMode.Automatic || + docState.zoomLevel === ZoomMode.FitPage || + docState.zoomLevel === ZoomMode.FitWidth + ) { + this.handleRequest({ level: docState.zoomLevel, focus }, documentId); + } } // ─────────────────────────────────────────────────────────