import { useState } from "react"; import { Button } from "../ui/button"; import { Slider } from "../ui/slider"; import { Tooltip, TooltipContent, TooltipTrigger, } from "../ui/tooltip"; import { ZoomIn, ZoomOut, Maximize2 } from "lucide-react"; interface TimelineZoomControlProps { zoomLevel: number; onZoomChange: (zoom: number) => void; onFitToWindow?: () => void; className?: string; } export function TimelineZoomControl({ zoomLevel, onZoomChange, onFitToWindow, className, }: TimelineZoomControlProps) { // Convert zoom level to percentage for display const zoomPercentage = Math.round(zoomLevel * 100); const handleZoomIn = () => { onZoomChange(Math.min(10, zoomLevel + 0.2)); }; const handleZoomOut = () => { onZoomChange(Math.max(0.1, zoomLevel - 0.2)); }; const handleReset = () => { if (onFitToWindow) { onFitToWindow(); } else { onZoomChange(1); } }; const handleSliderChange = (value: number[]) => { onZoomChange(value[0]); }; return (
Zoom out
Ctrl + - / Ctrl + Wheel
Zoom in
Ctrl + + / Ctrl + Wheel
{onFitToWindow ? "Fit to Window" : "Reset Zoom"}
{onFitToWindow ? "Show all track content" : "Ctrl + 0"}