import {RefObject, useEffect} from 'react' export function useClickOutside( ref: RefObject, callback: (event: MouseEvent | TouchEvent) => void, ) { useEffect(() => { const handleClickOutside = (event: MouseEvent | TouchEvent) => { if (ref.current && !ref.current.contains(event.target as Node)) { callback(event) } } document.addEventListener('mousedown', handleClickOutside) document.addEventListener('touchstart', handleClickOutside) return () => { document.removeEventListener('mousedown', handleClickOutside) document.removeEventListener('touchstart', handleClickOutside) } }, [ref, callback]) }