import { useState, useRef, useEffect, memo } from "react"; import { trackStudioEvent } from "../../utils/studioTelemetry"; import { Tooltip } from "../../components/ui"; const SPEED_OPTIONS = [0.25, 0.5, 1, 1.5, 2] as const; interface SpeedMenuProps { playbackRate: number; setPlaybackRate: (rate: number) => void; disabled: boolean; } export const SpeedMenu = memo(function SpeedMenu({ playbackRate, setPlaybackRate, disabled, }: SpeedMenuProps) { const [showSpeedMenu, setShowSpeedMenu] = useState(false); const speedMenuContainerRef = useRef(null); useEffect(() => { if (!showSpeedMenu) return; const handleMouseDown = (e: MouseEvent) => { if ( speedMenuContainerRef.current && !speedMenuContainerRef.current.contains(e.target as Node) ) { setShowSpeedMenu(false); } }; document.addEventListener("mousedown", handleMouseDown); return () => { document.removeEventListener("mousedown", handleMouseDown); }; }, [showSpeedMenu]); return (
{showSpeedMenu && (
{SPEED_OPTIONS.map((rate) => ( ))}
)}
); });