import { h, Fragment } from 'preact'; import LinkedLogo from './components/LinkedLogo'; import { Match } from 'preact-router/match'; import { memo } from 'preact/compat'; import { ENV } from './env'; import { useMemo } from 'preact/hooks' import useSWR from 'swr'; import NavigationDrawer, { Destination, Separator } from './components/NavigationDrawer'; export default function Sidebar() { const { data: config } = useSWR('config'); const sortedCameras = useMemo(() => { if (!config) { return []; } return Object.entries(config.cameras) .filter(([_, conf]) => conf.ui.dashboard) .sort(([_, aConf], [__, bConf]) => aConf.ui.order - bConf.ui.order); }, [config]); if (!config) { return null; } const { birdseye } = config; return ( }> {({ matches }) => matches ? ( ) : null } {({ matches }) => matches ? ( ) : null } {birdseye?.enabled ? : null}
{ENV !== 'production' ? ( ) : null} ); } function CameraSection({ sortedCameras }) { return ( {sortedCameras.map(([camera]) => ( ))} ); } function RecordingSection({ sortedCameras }) { return ( {sortedCameras.map(([camera, _]) => { return ( ); })} ); } const Header = memo(() => { return (
); });