import { useEffect } from 'react';
function useClickOutside(refs, callback) {
function handleClickOutside(event) {
refs = Array.isArray(refs) ? refs : [refs];
const mountedRefs = refs.every((ref) => !!ref.current);
if (mountedRefs) {
const isSomeRef = refs.every(
(ref) => !ref.current.contains(event.target)
);
if (isSomeRef && callback) callback();
}
}
useEffect(() => {
// Bind the event listener
document.addEventListener('mousedown', handleClickOutside);
return () => {
// Unbind the event listener on clean up
document.removeEventListener('mousedown', handleClickOutside);
};
});
}
export default useClickOutside;