diff options
Diffstat (limited to 'apps/web/src/hooks/use-timeline-zoom-actions.ts')
| -rw-r--r-- | apps/web/src/hooks/use-timeline-zoom-actions.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/apps/web/src/hooks/use-timeline-zoom-actions.ts b/apps/web/src/hooks/use-timeline-zoom-actions.ts new file mode 100644 index 00000000..85003684 --- /dev/null +++ b/apps/web/src/hooks/use-timeline-zoom-actions.ts @@ -0,0 +1,37 @@ +"use client"; + +import { useActionHandler } from "@/constants/actions"; + +interface UseTimelineZoomActionsProps { + zoomLevel: number; + setZoomLevel: (zoomLevel: number | ((prev: number) => number)) => void; + onFitToWindow?: () => void; +} + +export function useTimelineZoomActions({ + zoomLevel, + setZoomLevel, + onFitToWindow, +}: UseTimelineZoomActionsProps) { + // Zoom in action + useActionHandler("zoom-in", () => { + setZoomLevel((prev) => Math.min(5, prev + 0.2)); + }); + + // Zoom out action + useActionHandler("zoom-out", () => { + setZoomLevel((prev) => Math.max(0.1, prev - 0.2)); + }); + + // Reset zoom action + useActionHandler("zoom-reset", () => { + setZoomLevel(1); + }); + + // Fit to window action + useActionHandler("zoom-fit", () => { + if (onFitToWindow) { + onFitToWindow(); + } + }); +} |
