import { useEffect, useCallback } from 'react'; import { useUIStore } from '@/stores/uiStore'; import { useConfigStore } from '@/stores/configStore'; import { CameraPlayer } from './CameraPlayer'; export function FullscreenView() { const { fullscreenCamera, setFullscreenCamera } = useUIStore(); const cameras = useConfigStore((s) => s.cameras); const currentIdx = cameras.findIndex((c) => c.name === fullscreenCamera); const camera = currentIdx >= 0 ? cameras[currentIdx] : null; const navigate = useCallback((dir: 1 | -1) => { if (cameras.length === 0) return; const next = (currentIdx + dir + cameras.length) % cameras.length; setFullscreenCamera(cameras[next].name); }, [cameras, currentIdx, setFullscreenCamera]); const close = useCallback(() => setFullscreenCamera(null), [setFullscreenCamera]); useEffect(() => { const handleKey = (e: KeyboardEvent) => { if (e.key === 'Escape') close(); else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') navigate(1); else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') navigate(-1); }; window.addEventListener('keydown', handleKey); return () => window.removeEventListener('keydown', handleKey); }, [close, navigate]); if (!camera) return null; return (
{/* Header */}

{camera.display_name}

{currentIdx + 1} / {cameras.length}
{/* Video */}
); }