import { useCallback, useEffect, useRef, useState } from 'react';
import { useLocation } from 'react-router-dom';
import { clsm } from '../../utils';
import { useResponsiveDevice } from '../../contexts/ResponsiveDevice';
import { useStreams } from '../../contexts/Streams';
import Header from './Header';
import NavigatorPopup from './NavigatorPopup';
import ResponsivePanel from '../../components/ResponsivePanel';
import StreamSession from './StreamSession';
import useClickAway from '../../hooks/useClickAway';
import useFocusTrap from '../../hooks/useFocusTrap';
import useScrollToTop from '../../hooks/useScrollToTop';
const emptyRef = { current: undefined };
const StreamHealth = () => {
const [isNavOpen, setIsNavOpen] = useState(false);
const { activeStreamSession } = useStreams();
const { isDefaultResponsiveView } = useResponsiveDevice();
const { pathname } = useLocation();
const navPopupRef = useRef();
const headerNavRefs = useRef();
const { headerRef = emptyRef, navButtonRef = emptyRef } =
headerNavRefs.current || {};
const toggleNavPopup = useCallback(
(value = null) => setIsNavOpen((prev) => (value === null ? !prev : value)),
[]
);
useClickAway([navPopupRef, navButtonRef], () => setIsNavOpen(false));
useFocusTrap([headerRef, navPopupRef], isNavOpen);
useScrollToTop({
dependency: activeStreamSession?.streamId,
isResponsiveView: isDefaultResponsiveView
});
useEffect(() => setIsNavOpen(false), [pathname]);
useEffect(() => {
const handleCloseNav = (event) => {
if (event.key === 'Escape') {
setIsNavOpen(false);
navButtonRef.current.focus();
}
};
if (isNavOpen) document.addEventListener('keydown', handleCloseNav);
return () => document.removeEventListener('keydown', handleCloseNav);
}, [isNavOpen, navButtonRef]);
return (
<>
>
);
};
export default StreamHealth;