import { AnimatePresence, motion } from 'framer-motion'; import { useCallback, useEffect, useRef, useState } from 'react'; import { useLocation } from 'react-router-dom'; import PropTypes from 'prop-types'; import { clsm } from '../../utils'; import { createAnimationProps } from '../../helpers/animationPropsHelper'; import { useResponsiveDevice } from '../../contexts/ResponsiveDevice'; import MenuPopup from './MenuPopup'; import useClickAway from '../../hooks/useClickAway'; const ProfileMenu = ({ asPortal, children: ToggleBtn, containerClassName, fadeBackground, menuClassName, navData }) => { const [isOpen, setIsOpen] = useState(false); const { pathname } = useLocation(); const { isMobileView, isLandscape, setIsProfileMenuOpen } = useResponsiveDevice(); const profileMenuRef = useRef(); const toggleRef = useRef(); useEffect(() => { setIsProfileMenuOpen(isOpen); }, [isOpen, setIsProfileMenuOpen]); const toggleProfileMenu = useCallback( (value) => setIsOpen((prevIsPopupMenuOpen) => value !== undefined ? value : !prevIsPopupMenuOpen ), [setIsOpen] ); useClickAway([profileMenuRef, toggleRef], () => toggleProfileMenu(false)); useEffect(() => toggleProfileMenu(false), [pathname, toggleProfileMenu]); useEffect(() => { isMobileView && toggleProfileMenu(false); }, [isMobileView, isLandscape, toggleProfileMenu]); return (