@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
31 lines (30 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useEscapeClickaway = void 0;
var _react = require("react");
var useEscapeClickaway = exports.useEscapeClickaway = function useEscapeClickaway(onEscape, onClickAway) {
var ref = (0, _react.useRef)(null);
(0, _react.useEffect)(function () {
var handleClickAway = function handleClickAway(event) {
var el = ref.current;
if (event.target instanceof Element && el && !el.contains(event.target)) {
onClickAway();
}
};
var handleKeydown = function handleKeydown(event) {
if (event.key === 'Escape') {
event.preventDefault();
onEscape();
}
};
document.addEventListener('mousedown', handleClickAway);
document.addEventListener('keydown', handleKeydown);
return function () {
document.removeEventListener('mousedown', handleClickAway);
document.removeEventListener('keydown', handleKeydown);
};
}, [onClickAway, onEscape]);
return ref;
};