From 5212bca3d0c7334ab29dfbcc2131b4a70a577596 Mon Sep 17 00:00:00 2001 From: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> Date: Tue, 3 Feb 2026 18:07:06 +0100 Subject: [PATCH] fix: reset zoom when navigating between assets (#25863) --- .../asset-viewer/photo-viewer.svelte | 11 ++++------ .../managers/asset-viewer-manager.svelte.ts | 20 ++++++++++++------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/web/src/lib/components/asset-viewer/photo-viewer.svelte b/web/src/lib/components/asset-viewer/photo-viewer.svelte index 0a44505f40..2101107f6e 100644 --- a/web/src/lib/components/asset-viewer/photo-viewer.svelte +++ b/web/src/lib/components/asset-viewer/photo-viewer.svelte @@ -55,13 +55,10 @@ let loader = $state(); - assetViewerManager.zoomState = { - currentRotation: 0, - currentZoom: 1, - enable: true, - currentPositionX: 0, - currentPositionY: 0, - }; + $effect.pre(() => { + void asset.id; + untrack(() => assetViewerManager.resetZoomState()); + }); onDestroy(() => { $boundingBoxesArray = []; diff --git a/web/src/lib/managers/asset-viewer-manager.svelte.ts b/web/src/lib/managers/asset-viewer-manager.svelte.ts index 6996d939d5..36047d4690 100644 --- a/web/src/lib/managers/asset-viewer-manager.svelte.ts +++ b/web/src/lib/managers/asset-viewer-manager.svelte.ts @@ -5,6 +5,14 @@ import type { ZoomImageWheelState } from '@zoom-image/core'; const isShowDetailPanel = new PersistedLocalStorage('asset-viewer-state', false); +const createDefaultZoomState = (): ZoomImageWheelState => ({ + currentRotation: 0, + currentZoom: 1, + enable: true, + currentPositionX: 0, + currentPositionY: 0, +}); + export type Events = { Zoom: []; ZoomChange: [ZoomImageWheelState]; @@ -12,13 +20,7 @@ export type Events = { }; export class AssetViewerManager extends BaseEventManager { - #zoomState = $state({ - currentRotation: 0, - currentZoom: 1, - enable: true, - currentPositionX: 0, - currentPositionY: 0, - }); + #zoomState = $state(createDefaultZoomState()); imgRef = $state(); isShowActivityPanel = $state(false); @@ -67,6 +69,10 @@ export class AssetViewerManager extends BaseEventManager { this.#zoomState = state; } + resetZoomState() { + this.zoomState = createDefaultZoomState(); + } + toggleActivityPanel() { this.closeDetailPanel(); this.isShowActivityPanel = !this.isShowActivityPanel;