|
import { useCamera } from '@react-sigma/core' |
|
import { useCallback } from 'react' |
|
import Button from '@/components/ui/Button' |
|
import { ZoomInIcon, ZoomOutIcon, FullscreenIcon } from 'lucide-react' |
|
import { controlButtonVariant } from '@/lib/constants' |
|
|
|
|
|
|
|
|
|
const ZoomControl = () => { |
|
const { zoomIn, zoomOut, reset } = useCamera({ duration: 200, factor: 1.5 }) |
|
|
|
const handleZoomIn = useCallback(() => zoomIn(), [zoomIn]) |
|
const handleZoomOut = useCallback(() => zoomOut(), [zoomOut]) |
|
const handleResetZoom = useCallback(() => reset(), [reset]) |
|
|
|
return ( |
|
<> |
|
<Button variant={controlButtonVariant} onClick={handleZoomIn} tooltip="Zoom In" size="icon"> |
|
<ZoomInIcon /> |
|
</Button> |
|
<Button variant={controlButtonVariant} onClick={handleZoomOut} tooltip="Zoom Out" size="icon"> |
|
<ZoomOutIcon /> |
|
</Button> |
|
<Button |
|
variant={controlButtonVariant} |
|
onClick={handleResetZoom} |
|
tooltip="Reset Zoom" |
|
size="icon" |
|
> |
|
<FullscreenIcon /> |
|
</Button> |
|
</> |
|
) |
|
} |
|
|
|
export default ZoomControl |
|
|