playable
Version:
Video player based on HTML5Video
79 lines • 2.95 kB
JavaScript
;
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