@storm-stack/hooks
Version:
A collection of React hooks used by Storm Software in various client libraries and applications.
23 lines (22 loc) • 845 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useEscapeKeydown = useEscapeKeydown;
var _react = _interopRequireDefault(require("react"));
var _useCallbackRef = require("./use-callback-ref.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
const onEscapeKeyDown = (0, _useCallbackRef.useCallbackRef)(onEscapeKeyDownProp);
_react.default.useEffect(() => {
const handleKeyDown = event => {
if (event.key === "Escape") {
onEscapeKeyDown(event);
}
};
ownerDocument.addEventListener("keydown", handleKeyDown);
return () => {
ownerDocument.removeEventListener("keydown", handleKeyDown);
};
}, [onEscapeKeyDown, ownerDocument]);
}