@bianic-ui/utils
Version:
Common utilties and types for Bianic UI
45 lines (38 loc) • 1.57 kB
JavaScript
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
;