UNPKG

@bianic-ui/utils

Version:

Common utilties and types for Bianic UI

45 lines (38 loc) 1.57 kB
"use strict"; exports.__esModule = true; exports.createOnKeyDown = createOnKeyDown; var _function = require("./function"); var _dom = require("./dom"); // Credit goes to Diego Haz for this one // https://github.com/reakit/reakit/blob/master/packages/reakit-utils/src/createOnKeyDown.ts function createOnKeyDown(options) { var keyMap = options.keyMap, onKey = options.onKey, stopPropagation = options.stopPropagation, onKeyDown = options.onKeyDown, _options$shouldKeyDow = options.shouldKeyDown, shouldKeyDown = _options$shouldKeyDow === void 0 ? function () { return true; } : _options$shouldKeyDow, _options$preventDefau = options.preventDefault, preventDefault = _options$preventDefau === void 0 ? true : _options$preventDefau; return function (event) { if (!keyMap) return; var finalKeyMap = (0, _function.runIfFn)(keyMap, event); var shouldPreventDefault = (0, _function.runIfFn)(preventDefault, event); var shouldStopPropagation = (0, _function.runIfFn)(stopPropagation, event); var eventKey = (0, _dom.normalizeEventKey)(event); if (eventKey in finalKeyMap) { var action = finalKeyMap[eventKey]; if (typeof action === "function" && shouldKeyDown(event)) { if (shouldPreventDefault) event.preventDefault(); if (shouldStopPropagation) event.stopPropagation(); onKey == null ? void 0 : onKey(event); action(event); return; } } onKeyDown == null ? void 0 : onKeyDown(event); }; } //# sourceMappingURL=keydown.js.map