UNPKG

pouncejs

Version:

A collection of UI components from Panther labs

28 lines (24 loc) 779 B
import React from '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.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.useEffect(function () { if (!disabled) { window.addEventListener('keydown', listener); } return function () { if (!disabled) { window.removeEventListener('keydown', listener); } }; }, [disabled, listener]); }; export default useEscapeKey;