/* * Copyright (c) Facebook, Inc. and its affiliates. */ import * as React from 'react'; import cn from 'classnames'; import NextLink from 'next/link'; import {useRouter} from 'next/router'; import {IconClose} from 'components/Icon/IconClose'; import {IconHamburger} from 'components/Icon/IconHamburger'; import {Search} from 'components/Search'; import {MenuContext} from 'components/useMenu'; import {useActiveSection} from 'hooks/useActiveSection'; import {Logo} from '../../Logo'; import {Feedback} from '../Feedback'; import NavLink from './NavLink'; declare global { interface Window { __theme: string; __setPreferredTheme: (theme: string) => void; } } const feedbackIcon = ( ); const darkIcon = ( ); const lightIcon = ( ); export default function Nav() { const {isOpen, toggleOpen} = React.useContext(MenuContext); const [showFeedback, setShowFeedback] = React.useState(false); const feedbackAutohideRef = React.useRef(null); const section = useActiveSection(); const feedbackPopupRef = React.useRef(null); React.useEffect(() => { if (!showFeedback) { return; } function handleDocumentClickCapture(e: MouseEvent) { if (!feedbackPopupRef.current!.contains(e.target as any)) { e.stopPropagation(); e.preventDefault(); setShowFeedback(false); } } document.addEventListener('click', handleDocumentClickCapture, { capture: true, }); return () => document.removeEventListener('click', handleDocumentClickCapture, { capture: true, }); }, [showFeedback]); function handleFeedback() { clearTimeout(feedbackAutohideRef.current); setShowFeedback(!showFeedback); } return ( ); }