learngerman/maps/playerPlugins-video.5f4c24a...

1 line
34 KiB
Plaintext

{"version":3,"sources":["../node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels.es.js","../node_modules/videojs-hls-quality-selector/dist/videojs-hls-quality-selector.es.js"],"names":["_assertThisInitialized","self","ReferenceError","QualityLevel","representation","level","this","videojs","browser","IS_IE8","prop","document","createElement","prototype","id","label","width","height","bitrate","bandwidth","enabled_","enabled","Object","defineProperty","get","set","enable","QualityLevelList","_videojs$EventTarget","subClass","superClass","_this","list","call","levels_","selectedIndex_","length","create","constructor","__proto__","_proto","addQualityLevel","qualityLevel","getQualityLevelById","index","push","trigger","type","removeQualityLevel","removed","i","l","splice","dispose","EventTarget","event","allowedEvents_","change","addqualitylevel","removequalitylevel","version","registerPlugin","plugin","qualityLevels","options","player","originalPluginFn","qualityLevelList","on","disposeHandler","off","VERSION","initPlugin","mergeOptions","_typeof","Symbol","iterator","obj","classCallCheck","AwaitValue","value","AsyncGenerator","gen","front","back","resume","key","arg","result","Promise","resolve","then","settle","done","err","reject","next","_invoke","request","return","undefined","asyncIterator","throw","instance","Constructor","TypeError","inherits","enumerable","writable","configurable","setPrototypeOf","possibleConstructorReturn","VideoJsButtonClass","getComponent","VideoJsMenuClass","VideoJsComponent","Dom","dom","ConcreteButton","_VideoJsButtonClass","title","localize","name","createItems","createMenu","string","menu","player_","menuButton","hideThreshold_","options_","titleEl","createEl","className","innerHTML","charAt","toUpperCase","slice","tabIndex","titleComponent","el","addItem","items","ConcreteMenuItem","_VideoJsMenuItemClass","item","qualityButton","selectable","selected","handleClick","setQuality","defaults","HlsQualitySelectorPlugin","config","getHls","createQualityButton","bindPlayerEvents","tech","IWillNotUseThisInPlugins","hls","onAddQualityLevel","bind","_qualityButton","placementIndex","controlBar","children","concreteButtonInstance","addChild","componentClass","addClass","displayCurrentQuality","setButtonInnerText","icon","vjsIconClass","menuButton_","$","removeClass","text","getQualityMenuItem","levels","levelItems","_loop","filter","_existingItem","levelItem","sort","current","update","qualityList","_currentQuality","quality","unpressButton","getCurrentQuality","hlsQualitySelector","_this2","ready","onPlayerReady"],"mappings":"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","file":"static/js/playerPlugins-video.5f4c24a0.chunk.js","sourcesContent":["/*! @name videojs-contrib-quality-levels @version 2.1.0 @license Apache-2.0 */\nimport videojs from 'video.js';\nimport document from 'global/document';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * A single QualityLevel.\n *\n * interface QualityLevel {\n * readonly attribute DOMString id;\n * attribute DOMString label;\n * readonly attribute long width;\n * readonly attribute long height;\n * readonly attribute long bitrate;\n * attribute boolean enabled;\n * };\n *\n * @class QualityLevel\n */\n\nvar QualityLevel =\n/**\n * Creates a QualityLevel\n *\n * @param {Representation|Object} representation The representation of the quality level\n * @param {string} representation.id Unique id of the QualityLevel\n * @param {number=} representation.width Resolution width of the QualityLevel\n * @param {number=} representation.height Resolution height of the QualityLevel\n * @param {number} representation.bandwidth Bitrate of the QualityLevel\n * @param {Function} representation.enabled Callback to enable/disable QualityLevel\n */\nfunction QualityLevel(representation) {\n var level = this; // eslint-disable-line\n\n if (videojs.browser.IS_IE8) {\n level = document.createElement('custom');\n\n for (var prop in QualityLevel.prototype) {\n if (prop !== 'constructor') {\n level[prop] = QualityLevel.prototype[prop];\n }\n }\n }\n\n level.id = representation.id;\n level.label = level.id;\n level.width = representation.width;\n level.height = representation.height;\n level.bitrate = representation.bandwidth;\n level.enabled_ = representation.enabled;\n Object.defineProperty(level, 'enabled', {\n /**\n * Get whether the QualityLevel is enabled.\n *\n * @return {boolean} True if the QualityLevel is enabled.\n */\n get: function get() {\n return level.enabled_();\n },\n\n /**\n * Enable or disable the QualityLevel.\n *\n * @param {boolean} enable true to enable QualityLevel, false to disable.\n */\n set: function set(enable) {\n level.enabled_(enable);\n }\n });\n return level;\n};\n\n/**\n * A list of QualityLevels.\n *\n * interface QualityLevelList : EventTarget {\n * getter QualityLevel (unsigned long index);\n * readonly attribute unsigned long length;\n * readonly attribute long selectedIndex;\n *\n * void addQualityLevel(QualityLevel qualityLevel)\n * void removeQualityLevel(QualityLevel remove)\n * QualityLevel? getQualityLevelById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddqualitylevel;\n * attribute EventHandler onremovequalitylevel;\n * };\n *\n * @extends videojs.EventTarget\n * @class QualityLevelList\n */\n\nvar QualityLevelList =\n/*#__PURE__*/\nfunction (_videojs$EventTarget) {\n _inheritsLoose(QualityLevelList, _videojs$EventTarget);\n\n function QualityLevelList() {\n var _this;\n\n _this = _videojs$EventTarget.call(this) || this;\n\n var list = _assertThisInitialized(_assertThisInitialized(_this)); // eslint-disable-line\n\n\n if (videojs.browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in QualityLevelList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = QualityLevelList.prototype[prop];\n }\n }\n }\n\n list.levels_ = [];\n list.selectedIndex_ = -1;\n /**\n * Get the index of the currently selected QualityLevel.\n *\n * @returns {number} The index of the selected QualityLevel. -1 if none selected.\n * @readonly\n */\n\n Object.defineProperty(list, 'selectedIndex', {\n get: function get() {\n return list.selectedIndex_;\n }\n });\n /**\n * Get the length of the list of QualityLevels.\n *\n * @returns {number} The length of the list.\n * @readonly\n */\n\n Object.defineProperty(list, 'length', {\n get: function get() {\n return list.levels_.length;\n }\n });\n return list || _assertThisInitialized(_this);\n }\n /**\n * Adds a quality level to the list.\n *\n * @param {Representation|Object} representation The representation of the quality level\n * @param {string} representation.id Unique id of the QualityLevel\n * @param {number=} representation.width Resolution width of the QualityLevel\n * @param {number=} representation.height Resolution height of the QualityLevel\n * @param {number} representation.bandwidth Bitrate of the QualityLevel\n * @param {Function} representation.enabled Callback to enable/disable QualityLevel\n * @return {QualityLevel} the QualityLevel added to the list\n * @method addQualityLevel\n */\n\n\n var _proto = QualityLevelList.prototype;\n\n _proto.addQualityLevel = function addQualityLevel(representation) {\n var qualityLevel = this.getQualityLevelById(representation.id); // Do not add duplicate quality levels\n\n if (qualityLevel) {\n return qualityLevel;\n }\n\n var index = this.levels_.length;\n qualityLevel = new QualityLevel(representation);\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.levels_[index];\n }\n });\n }\n\n this.levels_.push(qualityLevel);\n this.trigger({\n qualityLevel: qualityLevel,\n type: 'addqualitylevel'\n });\n return qualityLevel;\n };\n /**\n * Removes a quality level from the list.\n *\n * @param {QualityLevel} remove QualityLevel to remove to the list.\n * @return {QualityLevel|null} the QualityLevel removed or null if nothing removed\n * @method removeQualityLevel\n */\n\n\n _proto.removeQualityLevel = function removeQualityLevel(qualityLevel) {\n var removed = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === qualityLevel) {\n removed = this.levels_.splice(i, 1)[0];\n\n if (this.selectedIndex_ === i) {\n this.selectedIndex_ = -1;\n } else if (this.selectedIndex_ > i) {\n this.selectedIndex_--;\n }\n\n break;\n }\n }\n\n if (removed) {\n this.trigger({\n qualityLevel: qualityLevel,\n type: 'removequalitylevel'\n });\n }\n\n return removed;\n };\n /**\n * Searches for a QualityLevel with the given id.\n *\n * @param {string} id The id of the QualityLevel to find.\n * @return {QualityLevel|null} The QualityLevel with id, or null if not found.\n * @method getQualityLevelById\n */\n\n\n _proto.getQualityLevelById = function getQualityLevelById(id) {\n for (var i = 0, l = this.length; i < l; i++) {\n var level = this[i];\n\n if (level.id === id) {\n return level;\n }\n }\n\n return null;\n };\n /**\n * Resets the list of QualityLevels to empty\n *\n * @method dispose\n */\n\n\n _proto.dispose = function dispose() {\n this.selectedIndex_ = -1;\n this.levels_.length = 0;\n };\n\n return QualityLevelList;\n}(videojs.EventTarget);\n/**\n * change - The selected QualityLevel has changed.\n * addqualitylevel - A QualityLevel has been added to the QualityLevelList.\n * removequalitylevel - A QualityLevel has been removed from the QualityLevelList.\n */\n\n\nQualityLevelList.prototype.allowedEvents_ = {\n change: 'change',\n addqualitylevel: 'addqualitylevel',\n removequalitylevel: 'removequalitylevel'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in QualityLevelList.prototype.allowedEvents_) {\n QualityLevelList.prototype['on' + event] = null;\n}\n\nvar version = \"2.1.0\";\n\nvar registerPlugin = videojs.registerPlugin || videojs.plugin;\n/**\n * Initialization function for the qualityLevels plugin. Sets up the QualityLevelList and\n * event handlers.\n *\n * @param {Player} player Player object.\n * @param {Object} options Plugin options object.\n * @function initPlugin\n */\n\nvar initPlugin = function initPlugin(player, options) {\n var originalPluginFn = player.qualityLevels;\n var qualityLevelList = new QualityLevelList();\n\n var disposeHandler = function disposeHandler() {\n qualityLevelList.dispose();\n player.qualityLevels = originalPluginFn;\n player.off('dispose', disposeHandler);\n };\n\n player.on('dispose', disposeHandler);\n\n player.qualityLevels = function () {\n return qualityLevelList;\n };\n\n player.qualityLevels.VERSION = version;\n return qualityLevelList;\n};\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @param {Object} options Plugin options object\n * @function qualityLevels\n */\n\n\nvar qualityLevels = function qualityLevels(options) {\n return initPlugin(this, videojs.mergeOptions({}, options));\n}; // Register the plugin with video.js.\n\n\nregisterPlugin('qualityLevels', qualityLevels); // Include the version number.\n\nqualityLevels.VERSION = version;\n\nexport default qualityLevels;\n","import videojs from 'video.js';\n\nvar version = \"1.1.4\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar asyncGenerator = function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(function (arg) {\n resume(\"next\", arg);\n }, function (arg) {\n resume(\"throw\", arg);\n });\n } else {\n settle(result.done ? \"return\" : \"normal\", result.value);\n }\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== \"function\") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n\n AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n };\n\n AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke(\"throw\", arg);\n };\n\n AsyncGenerator.prototype.return = function (arg) {\n return this._invoke(\"return\", arg);\n };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar VideoJsButtonClass = videojs.getComponent('MenuButton');\nvar VideoJsMenuClass = videojs.getComponent('Menu');\nvar VideoJsComponent = videojs.getComponent('Component');\nvar Dom = videojs.dom;\n\n/**\n * Convert string to title case.\n *\n * @param {string} string - the string to convert\n * @return {string} the returned titlecase string\n */\nfunction toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Extend vjs button class for quality button.\n */\n\nvar ConcreteButton = function (_VideoJsButtonClass) {\n inherits(ConcreteButton, _VideoJsButtonClass);\n\n /**\n * Button constructor.\n *\n * @param {Player} player - videojs player instance\n */\n function ConcreteButton(player) {\n classCallCheck(this, ConcreteButton);\n return possibleConstructorReturn(this, _VideoJsButtonClass.call(this, player, {\n title: player.localize('Quality'),\n name: 'QualityButton'\n }));\n }\n\n /**\n * Creates button items.\n *\n * @return {Array} - Button items\n */\n\n\n ConcreteButton.prototype.createItems = function createItems() {\n return [];\n };\n\n /**\n * Create the menu and add all items to it.\n *\n * @return {Menu}\n * The constructed menu\n */\n\n\n ConcreteButton.prototype.createMenu = function createMenu() {\n var menu = new VideoJsMenuClass(this.player_, { menuButton: this });\n\n this.hideThreshold_ = 0;\n\n // Add a title list item to the top\n if (this.options_.title) {\n var titleEl = Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n });\n var titleComponent = new VideoJsComponent(this.player_, { el: titleEl });\n\n this.hideThreshold_ += 1;\n\n menu.addItem(titleComponent);\n }\n\n this.items = this.createItems();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n };\n\n return ConcreteButton;\n}(VideoJsButtonClass);\n\n// Concrete classes\nvar VideoJsMenuItemClass = videojs.getComponent('MenuItem');\n\n/**\n * Extend vjs menu item class.\n */\n\nvar ConcreteMenuItem = function (_VideoJsMenuItemClass) {\n inherits(ConcreteMenuItem, _VideoJsMenuItemClass);\n\n /**\n * Menu item constructor.\n *\n * @param {Player} player - vjs player\n * @param {Object} item - Item object\n * @param {ConcreteButton} qualityButton - The containing button.\n * @param {HlsQualitySelectorPlugin} plugin - This plugin instance.\n */\n function ConcreteMenuItem(player, item, qualityButton, plugin) {\n classCallCheck(this, ConcreteMenuItem);\n\n var _this = possibleConstructorReturn(this, _VideoJsMenuItemClass.call(this, player, {\n label: item.label,\n selectable: true,\n selected: item.selected || false\n }));\n\n _this.item = item;\n _this.qualityButton = qualityButton;\n _this.plugin = plugin;\n return _this;\n }\n\n /**\n * Click event for menu item.\n */\n\n\n ConcreteMenuItem.prototype.handleClick = function handleClick() {\n\n // Reset other menu items selected status.\n for (var i = 0; i < this.qualityButton.items.length; ++i) {\n this.qualityButton.items[i].selected(false);\n }\n\n // Set this menu item to selected, and set quality.\n this.plugin.setQuality(this.item.value);\n this.selected(true);\n };\n\n return ConcreteMenuItem;\n}(VideoJsMenuItemClass);\n\n// Default options for the plugin.\nvar defaults = {};\n\n// Cross-compatibility for Video.js 5 and 6.\nvar registerPlugin = videojs.registerPlugin || videojs.plugin;\n// const dom = videojs.dom || videojs;\n\n/**\n * VideoJS HLS Quality Selector Plugin class.\n */\n\nvar HlsQualitySelectorPlugin = function () {\n\n /**\n * Plugin Constructor.\n *\n * @param {Player} player - The videojs player instance.\n * @param {Object} options - The plugin options.\n */\n function HlsQualitySelectorPlugin(player, options) {\n classCallCheck(this, HlsQualitySelectorPlugin);\n\n this.player = player;\n this.config = options;\n\n // If there is quality levels plugin and the HLS tech exists\n // then continue.\n if (this.player.qualityLevels && this.getHls()) {\n // Create the quality button.\n this.createQualityButton();\n this.bindPlayerEvents();\n }\n }\n\n /**\n * Returns HLS Plugin\n *\n * @return {*} - videojs-hls-contrib plugin.\n */\n\n\n HlsQualitySelectorPlugin.prototype.getHls = function getHls() {\n return this.player.tech({ IWillNotUseThisInPlugins: true }).hls;\n };\n\n /**\n * Binds listener for quality level changes.\n */\n\n\n HlsQualitySelectorPlugin.prototype.bindPlayerEvents = function bindPlayerEvents() {\n this.player.qualityLevels().on('addqualitylevel', this.onAddQualityLevel.bind(this));\n };\n\n /**\n * Adds the quality menu button to the player control bar.\n */\n\n\n HlsQualitySelectorPlugin.prototype.createQualityButton = function createQualityButton() {\n\n var player = this.player;\n\n this._qualityButton = new ConcreteButton(player);\n\n var placementIndex = player.controlBar.children().length - 2;\n var concreteButtonInstance = player.controlBar.addChild(this._qualityButton, { componentClass: 'qualitySelector' }, this.config.placementIndex || placementIndex);\n\n concreteButtonInstance.addClass('vjs-quality-selector');\n if (!this.config.displayCurrentQuality) {\n var icon = ' ' + (this.config.vjsIconClass || 'vjs-icon-hd');\n\n concreteButtonInstance.menuButton_.$('.vjs-icon-placeholder').className += icon;\n } else {\n this.setButtonInnerText('auto');\n }\n concreteButtonInstance.removeClass('vjs-hidden');\n };\n\n /**\n *Set inner button text.\n *\n * @param {string} text - the text to display in the button.\n */\n\n\n HlsQualitySelectorPlugin.prototype.setButtonInnerText = function setButtonInnerText(text) {\n this._qualityButton.menuButton_.$('.vjs-icon-placeholder').innerHTML = text;\n };\n\n /**\n * Builds individual quality menu items.\n *\n * @param {Object} item - Individual quality menu item.\n * @return {ConcreteMenuItem} - Menu item\n */\n\n\n HlsQualitySelectorPlugin.prototype.getQualityMenuItem = function getQualityMenuItem(item) {\n var player = this.player;\n\n return new ConcreteMenuItem(player, item, this._qualityButton, this);\n };\n\n /**\n * Executed when a quality level is added from HLS playlist.\n */\n\n\n HlsQualitySelectorPlugin.prototype.onAddQualityLevel = function onAddQualityLevel() {\n var _this = this;\n\n var player = this.player;\n var qualityList = player.qualityLevels();\n var levels = qualityList.levels_ || [];\n var levelItems = [];\n\n var _loop = function _loop(i) {\n if (!levelItems.filter(function (_existingItem) {\n return _existingItem.item && _existingItem.item.value === levels[i].height;\n }).length) {\n var levelItem = _this.getQualityMenuItem.call(_this, {\n label: levels[i].height + 'p',\n value: levels[i].height\n });\n\n levelItems.push(levelItem);\n }\n };\n\n for (var i = 0; i < levels.length; ++i) {\n _loop(i);\n }\n\n levelItems.sort(function (current, next) {\n if ((typeof current === 'undefined' ? 'undefined' : _typeof(current)) !== 'object' || (typeof next === 'undefined' ? 'undefined' : _typeof(next)) !== 'object') {\n return -1;\n }\n if (current.item.value < next.item.value) {\n return -1;\n }\n if (current.item.value > next.item.value) {\n return 1;\n }\n return 0;\n });\n\n levelItems.push(this.getQualityMenuItem.call(this, {\n label: player.localize('Auto'),\n value: 'auto',\n selected: true\n }));\n\n if (this._qualityButton) {\n this._qualityButton.createItems = function () {\n return levelItems;\n };\n this._qualityButton.update();\n }\n };\n\n /**\n * Sets quality (based on media height)\n *\n * @param {number} height - A number representing HLS playlist.\n */\n\n\n HlsQualitySelectorPlugin.prototype.setQuality = function setQuality(height) {\n var qualityList = this.player.qualityLevels();\n\n // Set quality on plugin\n this._currentQuality = height;\n\n if (this.config.displayCurrentQuality) {\n this.setButtonInnerText(height === 'auto' ? height : height + 'p');\n }\n\n for (var i = 0; i < qualityList.length; ++i) {\n var quality = qualityList[i];\n\n quality.enabled = quality.height === height || height === 'auto';\n }\n this._qualityButton.unpressButton();\n };\n\n /**\n * Return the current set quality or 'auto'\n *\n * @return {string} the currently set quality\n */\n\n\n HlsQualitySelectorPlugin.prototype.getCurrentQuality = function getCurrentQuality() {\n return this._currentQuality || 'auto';\n };\n\n return HlsQualitySelectorPlugin;\n}();\n\n/**\n * Function to invoke when the player is ready.\n *\n * This is a great place for your plugin to initialize itself. When this\n * function is called, the player will have its DOM and child components\n * in place.\n *\n * @function onPlayerReady\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\n\n\nvar onPlayerReady = function onPlayerReady(player, options) {\n player.addClass('vjs-hls-quality-selector');\n player.hlsQualitySelector = new HlsQualitySelectorPlugin(player, options);\n};\n\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @function hlsQualitySelector\n * @param {Object} [options={}]\n * An object of options left to the plugin author to define.\n */\nvar hlsQualitySelector = function hlsQualitySelector(options) {\n var _this2 = this;\n\n this.ready(function () {\n onPlayerReady(_this2, videojs.mergeOptions(defaults, options));\n });\n};\n\n// Register the plugin with video.js.\nregisterPlugin('hlsQualitySelector', hlsQualitySelector);\n\n// Include the version number.\nhlsQualitySelector.VERSION = version;\n\nexport default hlsQualitySelector;\n"],"sourceRoot":""}