import React, { useEffect, useRef } from 'react'; interface OutsideElementEventProps { className?: string; children: React.ReactNode; onOutsideEvent: (event: MouseEvent | TouchEvent) => void; style?: Record; } const OutsideElementEvent: React.FC = ({ className, children, onOutsideEvent, style }) => { const ref = useRef(null); const handleOutsideEvent = (event) => { if (event.target.hasAttribute('data-detector-ignore-navigation')) { return; } if (ref.current && !ref.current.contains(event.target)) { onOutsideEvent(event); return; } }; useEffect(() => { document.addEventListener('mousedown', handleOutsideEvent); document.addEventListener('touchstart', handleOutsideEvent); return () => { document.removeEventListener('mousedown', handleOutsideEvent); document.removeEventListener('touchstart', handleOutsideEvent); }; }, []); return (
{children}
); }; export default OutsideElementEvent;