@enact/sandstone
Version:
Large-screen/TV support library for Enact, containing a variety of UI components.
49 lines (47 loc) • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.startCapture = startCapture;
exports.stopCapture = stopCapture;
var _handle = _interopRequireWildcard(require("@enact/core/handle"));
var _snapshot = _interopRequireDefault(require("@enact/core/snapshot"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
// Utility to return true if any of the handlers returns true
var any = function any() {
for (var _len = arguments.length, handlers = new Array(_len), _key = 0; _key < _len; _key++) {
handlers[_key] = arguments[_key];
}
return function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return handlers.find(function (fn) {
return fn.apply(void 0, args);
}) != null;
};
};
var capturing = false;
// If capturing, prevent default behaviors and stop all event propagation
var handleGlobalKeyDownCapture = (0, _handle["default"])(function () {
return capturing;
}, any((0, _handle.forKey)('cancel'), (0, _handle.forKey)('left'), (0, _handle.forKey)('right'), (0, _handle.forKey)('up'), (0, _handle.forKey)('down'), (0, _handle.forKey)('enter')), _handle.preventDefault, _handle.stop, _handle.stopImmediate);
(0, _snapshot["default"])(function () {
// have to attach a handler immediately in order to get in before core/dispatcher and then use a
// module-scoped flag to check further processing. Handling both down (for the key event and
// click emulation) and up (for cancelable).
document.addEventListener('keydown', handleGlobalKeyDownCapture, {
capture: true
});
document.addEventListener('keyup', handleGlobalKeyDownCapture, {
capture: true
});
});
function startCapture() {
capturing = true;
}
function stopCapture() {
capturing = false;
}