videojs-hls-quality-selector
Version:
Adds a quality selector menu for HLS sources played in videojs.
55 lines (51 loc) • 1.77 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _video = _interopRequireDefault(require("video.js"));
// Concrete classes
var VideoJsMenuItemClass = _video.default.getComponent('MenuItem');
/**
* Extend vjs menu item class.
*/
var ConcreteMenuItem = exports.default = /*#__PURE__*/function (_VideoJsMenuItemClass) {
(0, _inheritsLoose2.default)(ConcreteMenuItem, _VideoJsMenuItemClass);
/**
* Menu item constructor.
*
* @param {Player} player - vjs player
* @param {Object} item - Item object
* @param {ConcreteButton} qualityButton - The containing button.
* @param {HlsQualitySelector} plugin - This plugin instance.
*/
function ConcreteMenuItem(player, item, qualityButton, plugin) {
var _this;
_this = _VideoJsMenuItemClass.call(this, player, {
label: item.label,
selectable: true,
selected: item.selected || false
}) || this;
_this.item = item;
_this.qualityButton = qualityButton;
_this.plugin = plugin;
return _this;
}
/**
* Click event for menu item.
*/
var _proto = ConcreteMenuItem.prototype;
_proto.handleClick = function handleClick() {
// Reset other menu items selected status.
for (var i = 0; i < this.qualityButton.items.length; ++i) {
this.qualityButton.items[i].selected(false);
}
// Set this menu item to selected, and set quality.
this.plugin.setQuality(this.item.value);
this.selected(true);
};
return ConcreteMenuItem;
}(VideoJsMenuItemClass);
module.exports = exports.default;
;