@@ -25,7 +25,7 @@ export function useZoomState(
2525
2626 const { currentSlide, globalIndex } = useLightboxState ( ) ;
2727 const { containerRect, slideRect } = useController ( ) ;
28- const { zoomInMultiplier } = useZoomProps ( ) ;
28+ const { minZoom , zoomInMultiplier } = useZoomProps ( ) ;
2929
3030 const currentSource = currentSlide && isImageSlide ( currentSlide ) ? currentSlide . src : undefined ;
3131 const disabled = ! currentSource || ! zoomWrapperRef ?. current ;
@@ -54,7 +54,10 @@ export function useZoomState(
5454
5555 const changeZoom = React . useCallback (
5656 ( targetZoom : number , rapid ?: boolean , dx ?: number , dy ?: number ) => {
57- const newZoom = round ( Math . min ( Math . max ( targetZoom + 0.001 < maxZoom ? targetZoom : maxZoom , 1 ) , maxZoom ) , 5 ) ;
57+ const newZoom = round (
58+ Math . min ( Math . max ( targetZoom + 0.001 < maxZoom ? targetZoom : maxZoom , minZoom ) , maxZoom ) ,
59+ 5 ,
60+ ) ;
5861
5962 if ( newZoom === zoom ) return ;
6063
@@ -66,7 +69,7 @@ export function useZoomState(
6669
6770 setZoom ( newZoom ) ;
6871 } ,
69- [ zoom , maxZoom , changeOffsets , animate ] ,
72+ [ zoom , minZoom , maxZoom , changeOffsets , animate ] ,
7073 ) ;
7174
7275 const handleControllerRectChange = useEventCallback ( ( ) => {
@@ -81,9 +84,15 @@ export function useZoomState(
8184
8285 useLayoutEffect ( handleControllerRectChange , [ containerRect . width , containerRect . height , handleControllerRectChange ] ) ;
8386
84- const zoomIn = React . useCallback ( ( ) => changeZoom ( zoom * zoomInMultiplier ) , [ zoom , zoomInMultiplier , changeZoom ] ) ;
87+ const zoomIn = React . useCallback ( ( ) => {
88+ const targetZoom = zoom * zoomInMultiplier ;
89+ changeZoom ( zoom < 1 && targetZoom > 1 ? 1 : targetZoom ) ;
90+ } , [ zoom , zoomInMultiplier , changeZoom ] ) ;
8591
86- const zoomOut = React . useCallback ( ( ) => changeZoom ( zoom / zoomInMultiplier ) , [ zoom , zoomInMultiplier , changeZoom ] ) ;
92+ const zoomOut = React . useCallback ( ( ) => {
93+ const targetZoom = zoom / zoomInMultiplier ;
94+ changeZoom ( zoom > 1 && targetZoom < 1 ? 1 : targetZoom ) ;
95+ } , [ zoom , zoomInMultiplier , changeZoom ] ) ;
8796
8897 return { zoom, offsetX, offsetY, disabled, changeOffsets, changeZoom, zoomIn, zoomOut } ;
8998}
0 commit comments