UNPKG

playable

Version:

Video player based on HTML5Video

159 lines 7.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var volume_view_1 = (0, tslib_1.__importDefault)(require("./volume.view")); var keyboard_interceptor_1 = (0, tslib_1.__importStar)(require("../../../../utils/keyboard-interceptor")); var keyboard_control_1 = require("../../../keyboard-control/keyboard-control"); var constants_1 = require("../../../../constants"); var VolumeControl = /** @class */ (function () { function VolumeControl(_a) { var engine = _a.engine, eventEmitter = _a.eventEmitter, textMap = _a.textMap, tooltipService = _a.tooltipService, theme = _a.theme; this._engine = engine; this._eventEmitter = eventEmitter; this._textMap = textMap; this._tooltipService = tooltipService; this._theme = theme; this._bindCallbacks(); this._initUI(); this._bindEvents(); this.view.setVolume(this._engine.getVolume()); this.view.setMute(this._engine.isMuted); this._initInterceptor(); } VolumeControl.prototype.getElement = function () { return this.view.getElement(); }; VolumeControl.prototype._initUI = function () { var config = { callbacks: { onDragStart: this._broadcastDragStart, onDragEnd: this._broadcastDragEnd, onVolumeLevelChangeFromInput: this._getVolumeLevelFromInput, onVolumeLevelChangeFromWheel: this._getVolumeLevelFromWheel, onToggleMuteClick: this._toggleMuteState, }, theme: this._theme, textMap: this._textMap, tooltipService: this._tooltipService, }; this.view = new VolumeControl.View(config); }; VolumeControl.prototype._initInterceptor = function () { var _a, _b; var _this = this; this._buttonInterceptor = new keyboard_interceptor_1.default(this.view.getButtonElement(), (_a = {}, _a[keyboard_interceptor_1.KEYCODES.SPACE_BAR] = function (e) { e.stopPropagation(); _this._eventEmitter.emitAsync(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED); _this._eventEmitter.emitAsync(_this._engine.isMuted ? constants_1.UIEvent.UNMUTE_WITH_KEYBOARD : constants_1.UIEvent.MUTE_WITH_KEYBOARD); }, _a[keyboard_interceptor_1.KEYCODES.ENTER] = function (e) { e.stopPropagation(); _this._eventEmitter.emitAsync(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED); _this._eventEmitter.emitAsync(_this._engine.isMuted ? constants_1.UIEvent.UNMUTE_WITH_KEYBOARD : constants_1.UIEvent.MUTE_WITH_KEYBOARD); }, _a)); this._inputInterceptor = new keyboard_interceptor_1.default(this.view.getInputElement(), (_b = {}, _b[keyboard_interceptor_1.KEYCODES.RIGHT_ARROW] = function (e) { e.stopPropagation(); e.preventDefault(); _this._eventEmitter.emitAsync(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED); _this._eventEmitter.emitAsync(constants_1.UIEvent.INCREASE_VOLUME_WITH_KEYBOARD); _this._engine.setMute(false); _this._engine.increaseVolume(keyboard_control_1.AMOUNT_TO_CHANGE_VOLUME); }, _b[keyboard_interceptor_1.KEYCODES.LEFT_ARROW] = function (e) { e.stopPropagation(); e.preventDefault(); _this._eventEmitter.emitAsync(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED); _this._eventEmitter.emitAsync(constants_1.UIEvent.DECREASE_VOLUME_WITH_KEYBOARD); _this._engine.setMute(false); _this._engine.decreaseVolume(keyboard_control_1.AMOUNT_TO_CHANGE_VOLUME); }, _b)); }; VolumeControl.prototype._destroyInterceptor = function () { this._buttonInterceptor.destroy(); this._inputInterceptor.destroy(); }; VolumeControl.prototype._bindEvents = function () { this._unbindEvents = this._eventEmitter.bindEvents([[constants_1.VideoEvent.SOUND_STATE_CHANGED, this._updateSoundState]], this); }; VolumeControl.prototype._bindCallbacks = function () { this._getVolumeLevelFromInput = this._getVolumeLevelFromInput.bind(this); this._toggleMuteState = this._toggleMuteState.bind(this); this._getVolumeLevelFromWheel = this._getVolumeLevelFromWheel.bind(this); this._broadcastDragStart = this._broadcastDragStart.bind(this); this._broadcastDragEnd = this._broadcastDragEnd.bind(this); }; VolumeControl.prototype._broadcastDragStart = function () { this._eventEmitter.emitAsync(constants_1.UIEvent.CONTROL_DRAG_START); }; VolumeControl.prototype._broadcastDragEnd = function () { this._eventEmitter.emitAsync(constants_1.UIEvent.CONTROL_DRAG_END); }; VolumeControl.prototype._changeVolumeLevel = function (level) { this._engine.setVolume(level); this._eventEmitter.emitAsync(constants_1.UIEvent.VOLUME_CHANGE, level); if (this._engine.isMuted) { this._toggleMuteState(); } }; VolumeControl.prototype._toggleMuteState = function () { var desiredMuteState = !this._engine.isMuted; this._engine.setMute(desiredMuteState); this._eventEmitter.emitAsync(desiredMuteState ? constants_1.UIEvent.MUTE_CLICK : constants_1.UIEvent.UNMUTE_CLICK); }; VolumeControl.prototype._getVolumeLevelFromWheel = function (delta) { if (!this._engine.isMuted) { var adjustedVolume = this._engine.getVolume() + delta / 10; var validatedVolume = Math.min(100, Math.max(0, adjustedVolume)); this._changeVolumeLevel(validatedVolume); } }; VolumeControl.prototype._getVolumeLevelFromInput = function (level) { this._changeVolumeLevel(level); }; VolumeControl.prototype._updateSoundState = function () { this._setVolumeLevel(this._engine.getVolume()); this._setMuteState(this._engine.isMuted); }; VolumeControl.prototype._setVolumeLevel = function (level) { this.view.setVolume(level); this.view.setMute(Boolean(!level)); }; VolumeControl.prototype._setMuteState = function (isMuted) { var volume = this._engine.getVolume(); this.view.setVolume(isMuted ? 0 : volume); this.view.setMute(isMuted || Boolean(!volume)); }; VolumeControl.prototype.hide = function () { this.isHidden = true; this.view.hide(); }; VolumeControl.prototype.show = function () { this.isHidden = false; this.view.show(); }; VolumeControl.prototype.destroy = function () { this._destroyInterceptor(); this._unbindEvents(); this.view.destroy(); }; VolumeControl.moduleName = 'volumeControl'; VolumeControl.View = volume_view_1.default; VolumeControl.dependencies = [ 'engine', 'eventEmitter', 'textMap', 'tooltipService', 'theme', ]; return VolumeControl; }()); exports.default = VolumeControl; //# sourceMappingURL=volume.js.map