import React from 'react'; import { createPortal } from 'react-dom'; interface DesktopSpeedMenuProps { showSpeedMenu: boolean; playbackRate: number; speeds: number[]; onSpeedChange: (speed: number) => void; onToggleSpeedMenu: () => void; onMouseEnter: () => void; onMouseLeave: () => void; } export function DesktopSpeedMenu({ showSpeedMenu, playbackRate, speeds, onSpeedChange, onToggleSpeedMenu, onMouseEnter, onMouseLeave }: DesktopSpeedMenuProps) { const buttonRef = React.useRef(null); const [menuPosition, setMenuPosition] = React.useState({ top: 0, left: 0 }); React.useEffect(() => { if (showSpeedMenu && buttonRef.current) { const rect = buttonRef.current.getBoundingClientRect(); setMenuPosition({ top: rect.bottom + 10, left: rect.right // Align with right edge }); } }, [showSpeedMenu]); const handleToggle = () => { if (!showSpeedMenu && buttonRef.current) { const rect = buttonRef.current.getBoundingClientRect(); setMenuPosition({ top: rect.bottom + 10, left: rect.right // Align with right edge }); } onToggleSpeedMenu(); }; const MenuContent = (
{speeds.map((speed) => ( ))}
); return (
{/* Speed Menu (Portal) */} {showSpeedMenu && typeof document !== 'undefined' && createPortal(MenuContent, document.body)}
); }