From 637e5cd2d3597404e860e558aa85709299d4ad52 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Sun, 26 Jan 2025 15:10:22 -0600 Subject: [PATCH] Disable zoom F key listener on root --- src/components/image/useImageZoomControls.ts | 9 ++- src/photo/PhotoLarge.tsx | 67 ++++++++++++-------- src/photo/PhotosLarge.tsx | 1 + src/site/viewerjs.css | 2 +- 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/components/image/useImageZoomControls.ts b/src/components/image/useImageZoomControls.ts index 4b5ac312..73c36671 100644 --- a/src/components/image/useImageZoomControls.ts +++ b/src/components/image/useImageZoomControls.ts @@ -9,6 +9,7 @@ const EVENT_KEYDOWN = 'keydown'; export default function useImageZoomControls( imageRef: RefObject, isEnabled?: boolean, + shouldExpandOnFKeydown?: boolean, ) { const viewerRef = useRef(null); @@ -67,10 +68,14 @@ export default function useImageZoomControls( // On 'F' keydown, toggle fullscreen const handleKeyDown = useCallback((e: KeyboardEvent) => { - if (!isCommandKOpen && e.key.toUpperCase() === 'F') { + if ( + shouldExpandOnFKeydown && + !isCommandKOpen && + e.key.toUpperCase() === 'F' + ) { viewerRef.current?.show(); } - }, [isCommandKOpen]); + }, [shouldExpandOnFKeydown, isCommandKOpen]); useEffect(() => { document.addEventListener(EVENT_KEYDOWN, handleKeyDown); return () => { diff --git a/src/photo/PhotoLarge.tsx b/src/photo/PhotoLarge.tsx index 6de07a27..3458a50c 100644 --- a/src/photo/PhotoLarge.tsx +++ b/src/photo/PhotoLarge.tsx @@ -53,6 +53,7 @@ export default function PhotoLarge({ showCamera = true, showSimulation = true, showZoomControls: showZoomControlsProp = true, + shouldZoomOnFKeydown = true, shouldShare = true, shouldShareTag, shouldShareCamera, @@ -73,6 +74,7 @@ export default function PhotoLarge({ showCamera?: boolean showSimulation?: boolean showZoomControls?: boolean + shouldZoomOnFKeydown?: boolean shouldShare?: boolean shouldShareTag?: boolean shouldShareCamera?: boolean @@ -105,6 +107,7 @@ export default function PhotoLarge({ const { open } = useImageZoomControls( refZoomControlsContainer, showZoomControls, + shouldZoomOnFKeydown, ); const hasTitle = @@ -141,41 +144,49 @@ export default function PhotoLarge({ } }; + const largePhotoContent = +
+
+ +
+
; + + const largePhotoContainerClassName = clsx(arePhotosMatted && + 'flex items-center justify-center aspect-[3/2] bg-gray-100', + ); + return ( + {largePhotoContent} + + : -
-
- -
-
+ {largePhotoContent} } contentSide={ ul > li { display: flex;