From 5589616921eb2a5c3606404344300de9bd3b8049 Mon Sep 17 00:00:00 2001 From: Dag Stuan Date: Mon, 2 Jun 2025 04:06:48 +0200 Subject: [PATCH] fix(web): Improve zoom behavior in photo-viewer. (#18803) * Fix an issue where clicking the zoom-button after having zoomed in would not zoom completely out, but leave the image in the zoomed-in state. The new behavior properly zoomes the image completely out after clicking the zoom-button. * Revert to the default setting for `wheelZoomRatio` as the previous setting of 0.2 was borderline unusable on a trackpad. This could probably be moved to a user setting if needed. * Add a keyboard shortcut 'z' to toggle image zoom. --- web/src/lib/actions/zoom-image.ts | 10 ++-------- .../lib/components/asset-viewer/photo-viewer.svelte | 11 +++++++---- web/src/lib/stores/zoom-image.store.ts | 1 - 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/web/src/lib/actions/zoom-image.ts b/web/src/lib/actions/zoom-image.ts index 24a1a25ac1..29074fc7b0 100644 --- a/web/src/lib/actions/zoom-image.ts +++ b/web/src/lib/actions/zoom-image.ts @@ -1,15 +1,12 @@ -import { photoZoomState, zoomed } from '$lib/stores/zoom-image.store'; +import { photoZoomState } from '$lib/stores/zoom-image.store'; import { useZoomImageWheel } from '@zoom-image/svelte'; import { get } from 'svelte/store'; -export { zoomed } from '$lib/stores/zoom-image.store'; - export const zoomImageAction = (node: HTMLElement) => { const { createZoomImage, zoomImageState, setZoomImageState } = useZoomImageWheel(); createZoomImage(node, { maxZoom: 10, - wheelZoomRatio: 0.2, }); const state = get(photoZoomState); @@ -17,10 +14,7 @@ export const zoomImageAction = (node: HTMLElement) => { setZoomImageState(state); } - const unsubscribes = [ - zoomed.subscribe((state) => setZoomImageState({ currentZoom: state ? 2 : 1 })), - zoomImageState.subscribe((state) => photoZoomState.set(state)), - ]; + const unsubscribes = [photoZoomState.subscribe(setZoomImageState), zoomImageState.subscribe(photoZoomState.set)]; return { destroy() { for (const unsubscribe of unsubscribes) { diff --git a/web/src/lib/components/asset-viewer/photo-viewer.svelte b/web/src/lib/components/asset-viewer/photo-viewer.svelte index cf846e7af6..35fa63654a 100644 --- a/web/src/lib/components/asset-viewer/photo-viewer.svelte +++ b/web/src/lib/components/asset-viewer/photo-viewer.svelte @@ -1,8 +1,9 @@