import { FC, useEffect, useRef, useState } from 'react'; import { useDeckyState } from './DeckyState'; import PluginView from './PluginView'; import { QuickAccessVisibleState } from './QuickAccessVisibleState'; const DeckyDesktopSidebar: FC = () => { const { desktopMenuOpen, setDesktopMenuOpen } = useDeckyState(); const [closed, setClosed] = useState(!desktopMenuOpen); const [openAnimStart, setOpenAnimStart] = useState(desktopMenuOpen); const closedInterval = useRef(null); useEffect(() => { const anim = requestAnimationFrame(() => setOpenAnimStart(desktopMenuOpen)); return () => cancelAnimationFrame(anim); }, [desktopMenuOpen]); useEffect(() => { closedInterval.current && clearTimeout(closedInterval.current); if (desktopMenuOpen) { setClosed(false); } else { closedInterval.current = setTimeout(() => setClosed(true), 500); } }, [desktopMenuOpen]); return ( <>
setDesktopMenuOpen(false)} />
); }; export default DeckyDesktopSidebar;