import { MouseEvent, useCallback, useState } from 'react'; function usePopoverState() { const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); const handleClick = useCallback( (e: MouseEvent | undefined) => setAnchorEl(e?.currentTarget ?? null), [setAnchorEl] ); const handleClose = useCallback(() => setAnchorEl(null), [setAnchorEl]); const handleToggle = useCallback( (e: MouseEvent | undefined) => { if (!open) { handleClick(e); } else { handleClose(); } }, [open, handleClick, handleClose] ); return { anchorEl: anchorEl, open: open, handleClick: handleClick, handleClose: handleClose, handleToggle: handleToggle }; } export { usePopoverState };