@redocly/theme
Version:
Shared UI components lib
25 lines • 958 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useOutsideClick = useOutsideClick;
const react_1 = require("react");
function useOutsideClick(refs, handler) {
(0, react_1.useEffect)(() => {
const refList = Array.isArray(refs) ? refs : [refs];
const listener = (event) => {
if (!handler)
return;
const target = event.target;
const isInside = refList.some((ref) => ref.current && ref.current.contains(target));
if (!isInside) {
handler(event);
}
};
document.addEventListener('mousedown', listener);
document.addEventListener('touchstart', listener);
return () => {
document.removeEventListener('mousedown', listener);
document.removeEventListener('touchstart', listener);
};
}, [refs, handler]);
}
//# sourceMappingURL=use-outside-click.js.map