@grafana/ui
Version:
Grafana Components Library
35 lines (28 loc) • 1.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
;
function useCustomClickAway(onClickAway) {
const ref = React__default.default.useRef(null);
const refCb = React__default.default.useRef(onClickAway);
React__default.default.useLayoutEffect(() => {
refCb.current = onClickAway;
});
React__default.default.useEffect(() => {
const handler = (e) => {
const element = ref.current;
if (element && e.target instanceof Node && !element.contains(e.target)) {
refCb.current(e);
}
};
document.addEventListener("pointerdown", handler);
return () => {
document.removeEventListener("pointerdown", handler);
};
}, []);
return ref;
}
exports.useCustomClickAway = useCustomClickAway;
//# sourceMappingURL=useSidebarClickAway.cjs.map