UNPKG

@ntragas/pouncejstest

Version:

A collection of UI components from Panther labs

38 lines (29 loc) 1.01 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = _interopRequireDefault(require("react")); var useEscapeKey = function useEscapeKey(_ref) { var ref = _ref.ref, callback = _ref.callback, _ref$disabled = _ref.disabled, disabled = _ref$disabled === void 0 ? false : _ref$disabled; var listener = _react.default.useCallback(function (event) { var _ref$current; if (event.key === 'Escape' && ((_ref$current = ref.current) == null ? void 0 : _ref$current.contains(event.target))) { callback(event); } }, [callback, ref]); _react.default.useEffect(function () { if (!disabled) { window.addEventListener('keydown', listener); } return function () { if (!disabled) { window.removeEventListener('keydown', listener); } }; }, [disabled, listener]); }; var _default = useEscapeKey; exports.default = _default;