UNPKG

playable

Version:

Video player based on HTML5Video

79 lines 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KEYCODES = void 0; var tslib_1 = require("tslib"); var eventemitter3_1 = require("eventemitter3"); var logger_1 = (0, tslib_1.__importDefault)(require("./logger")); exports.KEYCODES = { SPACE_BAR: 32, ENTER: 13, TAB: 9, LEFT_ARROW: 37, RIGHT_ARROW: 39, UP_ARROW: 38, DOWN_ARROW: 40, DEBUG_KEY: 68, }; var KeyboardInterceptorCore = /** @class */ (function () { function KeyboardInterceptorCore(element, callbacks) { this._eventEmitter = new eventemitter3_1.EventEmitter(); this._element = element; callbacks && this._attachCallbacks(callbacks); this._bindCallbacks(); this._bindEvents(); } KeyboardInterceptorCore.prototype._attachCallbacks = function (callbacks) { var _this = this; Object.keys(callbacks).forEach(function (keyCode) { var keyCodeCallbacks = callbacks[keyCode]; if (Array.isArray(keyCodeCallbacks)) { keyCodeCallbacks.forEach(function (callback) { return _this._eventEmitter.on(keyCode, callback); }); } else { _this._eventEmitter.on(keyCode, keyCodeCallbacks); } }); }; KeyboardInterceptorCore.prototype._unattachCallbacks = function () { this._eventEmitter.removeAllListeners(); }; KeyboardInterceptorCore.prototype._bindCallbacks = function () { this._processKeyboardInput = this._processKeyboardInput.bind(this); }; KeyboardInterceptorCore.prototype._bindEvents = function () { this._element.addEventListener('keydown', this._processKeyboardInput, false); }; KeyboardInterceptorCore.prototype._unbindEvents = function () { this._element.removeEventListener('keydown', this._processKeyboardInput, false); }; KeyboardInterceptorCore.prototype.addCallbacks = function (callbacks) { this._attachCallbacks(callbacks); }; KeyboardInterceptorCore.prototype._processKeyboardInput = function (e) { this._eventEmitter.emit(e.keyCode, e); }; Object.defineProperty(KeyboardInterceptorCore.prototype, "_isDestroyed", { get: function () { return !this._element && !this._eventEmitter; }, enumerable: false, configurable: true }); KeyboardInterceptorCore.prototype.destroy = function () { if (this._isDestroyed) { logger_1.default.warn('KeyboardInterceptor.destroy called after already been destroyed'); return; } else { this._unbindEvents(); this._element = null; this._unattachCallbacks(); this._eventEmitter = null; } }; return KeyboardInterceptorCore; }()); exports.default = KeyboardInterceptorCore; //# sourceMappingURL=keyboard-interceptor.js.map