import { useEffect, useRef } from 'react'; import { formatAutoPlayDelay } from '../hooks/useExplorer.js'; import Button from './ui/Button.jsx'; const SHORTCUTS = [['Enter', 'Apply'], ['F', 'Flip'], ['C', 'Clear'], ['←', 'Back'], ['→', 'Forward']]; const DELAY_MIN = 0; const DELAY_MAX = 2500; export default function SettingsPanel({ explorer }) { const { settingsOpen, setSettingsOpen, showRootRow, variant, autoplayDelayMs, actions } = explorer; const panelRef = useRef(null); const chess960 = variant === 'chess960'; useEffect(() => { if (!settingsOpen) return; function onDocClick(e) { if (panelRef.current && !panelRef.current.contains(e.target) && !e.target.closest('#settings-btn')) { setSettingsOpen(false); } } function onKeydown(e) { if (e.key === 'Escape') { e.preventDefault(); setSettingsOpen(false); } } document.addEventListener('click', onDocClick); document.addEventListener('keydown', onKeydown); return () => { document.removeEventListener('click', onDocClick); document.removeEventListener('keydown', onKeydown); }; }, [settingsOpen, setSettingsOpen]); const pct = ((autoplayDelayMs - DELAY_MIN) / (DELAY_MAX - DELAY_MIN)) * 100; return (