diff --git a/lib/mejs/lang/de.js b/lib/mejs/lang/de.js index fc3f5c34eefcac7d1dbd2931e7175f3236f1f7da..27bfa9a51bbaee05b1019dc4d9a680f2d3ad422f 100644 --- a/lib/mejs/lang/de.js +++ b/lib/mejs/lang/de.js @@ -28,7 +28,7 @@ "mejs.video-player": "Video-Player", "mejs.audio-player": "Audio-Player", "mejs.captions-subtitles": "Überschriften/Untertitel", - // "mejs.captions-chapters": "Chapters", + "mejs.captions-chapters": "Kapitel", "mejs.none": "Keine", "mejs.afrikaans": "Afrikanisch", "mejs.albanian": "Albanisch", diff --git a/lib/mejs/mediaelement-and-player.js b/lib/mejs/mediaelement-and-player.js index 2ef8d76661e05a134327cbdf5da1b87e1c0f27ea..e59a9648f0b1bf21c1e8d3657effdc510ea5064c 100644 --- a/lib/mejs/mediaelement-and-player.js +++ b/lib/mejs/mediaelement-and-player.js @@ -61,20 +61,8 @@ var _general = _dereq_(25); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Locale. - * - * This object manages translations with pluralization. Also deals with WordPress compatibility. - * @type {Object} - */ var i18n = { lang: 'en', en: _en.EN }; -/** - * Language setter/getter - * - * @param {*} args Can pass the language code and/or the translation strings as an Object - * @return {string} - */ i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -86,13 +74,12 @@ i18n.language = function () { throw new TypeError('Language code must be a string value'); } - if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) { + if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format `xx` or `xx-xx`'); } i18n.lang = args[0]; - // Check if language strings were added; otherwise, check the second argument or set to English as default if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; @@ -104,13 +91,6 @@ i18n.language = function () { return i18n.lang; }; -/** - * Translate a string in the language set up (or English by default) - * - * @param {string} message - * @param {number} pluralParam - * @return {string} - */ i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; @@ -122,57 +102,20 @@ i18n.t = function (message) { var language = i18n.language(); - /** - * Modify string using algorithm to detect plural forms. - * - * @private - * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings - * @param {String|String[]} input - String or array of strings to pick the plural form - * @param {Number} number - Number to determine the proper plural form - * @param {Number} form - Number of language family to apply plural form - * @return {String} - */ var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } - /** - * - * @return {Function[]} - * @private - */ var _pluralForms = function () { - return [ - // 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará, - // Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay, - // Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof - function () { + return [function () { return arguments.length <= 1 ? undefined : arguments[1]; - }, - - // 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish, - // Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans, - // Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri, - // Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa, - // Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch, - // Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal, - // Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento, - // Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala, - // Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino, - // Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 3: Latvian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { @@ -180,10 +123,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 4: Scottish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { @@ -193,10 +133,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 5: Romanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { @@ -204,10 +141,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 6: Lithuanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -215,10 +149,7 @@ i18n.t = function (message) { } else { return [3]; } - }, - - // 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -226,10 +157,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 8: Slovak, Czech - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { @@ -237,10 +165,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 9: Polish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -248,10 +173,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 10: Slovenian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { @@ -261,10 +183,7 @@ i18n.t = function (message) { } else { return arguments.length <= 1 ? undefined : arguments[1]; } - }, - - // 11: Irish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -276,10 +195,7 @@ i18n.t = function (message) { } else { return arguments.length <= 5 ? undefined : arguments[5]; } - }, - - // 12: Arabic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -293,10 +209,7 @@ i18n.t = function (message) { } else { return arguments.length <= 6 ? undefined : arguments[6]; } - }, - - // 13: Maltese - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { @@ -306,10 +219,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 14: Macedonian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { @@ -317,19 +227,9 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 15: Icelandic - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // New additions - - // 16: Kashubian - // In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules - // Breton is listed as #16 but in the Localization Guide it belongs to the group 2 - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -337,10 +237,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 17: Welsh - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -350,15 +247,9 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 18: Javanese - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 19: Cornish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -368,10 +259,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 20: Mandinka - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -382,11 +270,9 @@ i18n.t = function (message) { }]; }(); - // Perform plural form or return original text return _pluralForms[form].apply(null, [number].concat(input)); }; - // Fetch the localized version of the string if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -395,7 +281,6 @@ i18n.t = function (message) { } } - // Fallback to default language if requested uid is not translated if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -404,11 +289,8 @@ i18n.t = function (message) { } } - // As a last resort, use the requested uid, to mimic original behavior of i18n utils - // (in which uid was the english text) str = str || message; - // Replace token if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } @@ -421,7 +303,6 @@ i18n.t = function (message) { _mejs2.default.i18n = i18n; -// `i18n` compatibility workflow with WordPress if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } @@ -453,26 +334,13 @@ var _media = _dereq_(26); var _renderer = _dereq_(7); +var _constants = _dereq_(23); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * Media Core - * - * This class is the foundation to create/render different media formats. - * @class MediaElement - */ -var MediaElement = - -/** - * - * @param {String|Node} idOrNode - * @param {Object} options - * @param {Object[]} sources - * @returns {Element|*} - */ -function MediaElement(idOrNode, options, sources) { +var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); @@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) { sources = Array.isArray(sources) ? sources : null; t.defaults = { - /** - * List of the renderers to use - * @type {String[]} - */ renderers: [], - /** - * Name of MediaElement container - * @type {String} - */ + fakeNodeName: 'mediaelementwrapper', - /** - * The path where shims are located - * @type {String} - */ + pluginPath: 'build/', - /** - * Flag in `<object>` and `<embed>` to determine whether to use local or CDN - * Possible values: 'always' (CDN version) or 'sameDomain' (local files) - */ + shimScriptAccess: 'sameDomain', - /** - * If error happens, set up HTML message - * @type {String} - */ + customError: '' }; options = Object.assign(t.defaults, options); - // create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes) t.mediaElement = _document2.default.createElement(options.fakeNodeName); t.mediaElement.options = options; @@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) { id = id || 'mejs_' + Math.random().toString().slice(2); if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) { - // change id t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); - // to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set - // only if video/audio tags are detected var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); - if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) { + if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } - // add next to this one t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); - // insert this one inside t.mediaElement.appendChild(t.mediaElement.originalNode); - } else { - // TODO: where to put the node? - } + } else {} t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; - /** - * Determine whether the renderer was found or not - * - * @public - * @param {String} rendererName - * @param {Object[]} mediaFiles - * @return {Boolean} - */ + t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this; - // check for a match on the current renderer if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) { return true; } - // if existing renderer is not the right one, then hide it if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.renderer.hide(); } - // see if we have the renderer already created var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; @@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) { var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; - // find the desired renderer in the array of possible ones for (var i = 0, total = rendererArray.length; i < total; i++) { var index = rendererArray[i]; if (index === rendererName) { - - // create the renderer var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; @@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) { newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; - // store for later t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; @@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * Set the element dimensions based on selected renderer's setSize method - * - * @public - * @param {number} width - * @param {number} height - */ t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; - /** - * - * @param {Object[]} urlList - */ t.mediaElement.createErrorMessage = function (urlList) { urlList = Array.isArray(urlList) ? urlList : []; @@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) { var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { - - // wrapper functions var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); @@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement['set' + capName] = setFn; } }, - - // `src` is a property separated from the others since it carries the logic to set the proper renderer - // based on the media files detected - getSrc = function getSrc() { + getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { - var mediaFiles = []; - // clean up URLs if (typeof value === 'string') { mediaFiles.push({ src: value, @@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) { } } - // find a renderer and URL match var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; - // Ensure that the original gets the first source found if (!t.mediaElement.paused) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); @@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.querySelector('.me_cannotplay').remove(); } - // did we find a renderer? if (renderInfo === null) { t.mediaElement.createErrorMessage(mediaFiles); event = (0, _general.createEvent)('error', t.mediaElement); @@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) { return; } - // turn on the renderer (this checks for the existing renderer already) t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles); if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) { @@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) { event.message = 'Error creating renderer'; t.mediaElement.dispatchEvent(event); t.mediaElement.createErrorMessage(mediaFiles); - return; } }, assignMethods = function assignMethods(methodName) { - // run the method on the current renderer t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) { }; }; - // Assign all methods/properties/events to fake node if renderer was found addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; @@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) { assignMethods(methods[_i]); } - // IE && iOS t.mediaElement.events = {}; - // start: fake events t.mediaElement.addEventListener = function (eventName, callback) { - // create or find the array of callbacks for this eventName t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; - // push the callback into the stack t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { - // no eventName means remove all listeners if (!eventName) { t.mediaElement.events = {}; return true; } - // see if we have any callbacks for this eventName var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } - // check for a specific callback if (!callback) { t.mediaElement.events[eventName] = []; return true; } - // remove the specific callback for (var _i2 = 0; _i2 < callbacks.length; _i2++) { if (callbacks[_i2] === callback) { t.mediaElement.events[eventName].splice(_i2, 1); @@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * - * @param {Event} event - */ t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; @@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) { } }; + var processURL = function processURL(url, type) { + + if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + var _url = _window2.default.URL || _window2.default.webkitURL, + blobUrl = _url.createObjectURL(this.response); + t.mediaElement.originalNode.setAttribute('src', blobUrl); + return blobUrl; + } + return url; + }; + xhr.open('GET', url); + xhr.responseType = 'blob'; + xhr.send(); + } + + return url; + }; + var mediaFiles = void 0; if (sources !== null) { @@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { - case 'iframe': mediaFiles.push({ type: '', @@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) { }); break; - case 'audio': case 'video': var _sources = t.mediaElement.originalNode.childNodes.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); - // Consider if node contains the `src` and `type` attributes if (nodeSource) { - var node = t.mediaElement.originalNode; + var node = t.mediaElement.originalNode, + type = (0, _media.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ - type: (0, _media.formatType)(nodeSource, node.getAttribute('type')), - src: nodeSource + type: type, + src: processURL(nodeSource, type) }); } - // test <source> types to see if they are usable for (var _i4 = 0; _i4 < _sources; _i4++) { var n = t.mediaElement.originalNode.childNodes[_i4]; if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), - type = (0, _media.formatType)(src, n.getAttribute('type')); - mediaFiles.push({ type: type, src: src }); + _type = (0, _media.formatType)(src, n.getAttribute('type')); + mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } - // Set the best match based on renderers if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } @@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement; exports.default = MediaElement; -},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ +},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Namespace var mejs = {}; -// version number -mejs.version = '4.1.0'; +mejs.version = '4.1.1'; -// Basic HTML5 settings mejs.html5media = { - /** - * @type {String[]} - */ - properties: [ - // GET/SET - 'volume', 'src', 'currentTime', 'muted', - - // GET only - 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', - - // OTHERS - 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], + properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], - /** - * @type {String[]} - */ + methods: ['load', 'play', 'pause', 'canPlayType'], - /** - * @type {String[]} - */ + events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'], - /** - * @type {String[]} - */ - mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg'] + + mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; @@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * - * Class to manage renderer selection and addition. - * @class Renderer - */ var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); @@ -1014,18 +799,9 @@ var Renderer = function () { this.order = []; } - /** - * Register a new renderer. - * - * @param {Object} renderer - An object with all the rendered information (name REQUIRED) - * @method add - */ - - _createClass(Renderer, [{ key: 'add', value: function add(renderer) { - if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } @@ -1033,35 +809,20 @@ var Renderer = function () { this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } - - /** - * Iterate a list of renderers to determine which one should the player use. - * - * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}] - * @param {?String[]} renderers - Optional list of pre-selected renderers - * @return {?Object} The renderer's name and source selected - * @method select - */ - }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; - // If renderers are not set, set a default order: - // 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV) - // 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG) - // 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.) if (!renderersLength) { - var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/], + var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { - if (renderer.match(rendererIndicator[i]) !== null) { + if (rendererIndicator[i].test(renderer)) { return i; } } @@ -1091,13 +852,9 @@ var Renderer = function () { return null; } - - // Setters/getters - }, { key: 'order', set: function set(order) { - if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } @@ -1110,7 +867,6 @@ var Renderer = function () { }, { key: 'renderers', set: function set(renderers) { - if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } @@ -1160,68 +916,26 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Fullscreen button - * - * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it - * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {Boolean} - */ usePluginFullScreen: true, - /** - * @type {?String} - */ + fullscreenText: null }); Object.assign(_player2.default.prototype, { - - /** - * @type {Boolean} - */ isFullScreen: false, - /** - * @type {Boolean} - */ + isNativeFullScreen: false, - /** - * @type {Boolean} - */ + isInIframe: false, - /** - * @type {Boolean} - */ + isPluginClickThroughCreated: false, - /** - * Possible modes - * (1) 'native-native' HTML5 video + browser fullscreen (IE10+, etc.) - * (2) 'plugin-native' plugin video + browser fullscreen (fails in some versions of Firefox) - * (3) 'fullwindow' Full window (retains all UI) - * - * @type {String} - */ + fullscreenMode: '', - /** - * - */ + containerSizeTimeout: null, - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildfullscreen: function buildfullscreen(player) { - if (!player.isVideo) { return; } @@ -1239,7 +953,6 @@ Object.assign(_player2.default.prototype, { t.addControlElement(fullscreenBtn, 'fullscreen'); fullscreenBtn.addEventListener('click', function () { - // toggle fullscreen var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen; if (isFullScreen) { @@ -1261,26 +974,16 @@ Object.assign(_player2.default.prototype, { t.normalHeight = 0; t.normalWidth = 0; - // setup native fullscreen event if (Features.HAS_TRUE_NATIVE_FULLSCREEN) { - - // - /** - * Detect any changes on fullscreen - * - * Chrome doesn't always fire this in an `<iframe>` - * @private - */ var fullscreenChanged = function fullscreenChanged() { if (player.isFullScreen) { if (Features.isFullScreen()) { player.isNativeFullScreen = true; - // reset the controls once we are fully in full screen + player.setControlsSize(); } else { player.isNativeFullScreen = false; - // when a user presses ESC - // make sure to put the player back into place + player.exitFullScreen(); } } @@ -1289,17 +992,9 @@ Object.assign(_player2.default.prototype, { player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged); } }, - - - /** - * Detect the type of fullscreen based on browser's capabilities - * - * @return {String} - */ detectFullscreenMode: function detectFullscreenMode() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); var mode = ''; @@ -1316,26 +1011,12 @@ Object.assign(_player2.default.prototype, { t.fullscreenMode = mode; return mode; }, - - - /** - * Feature destructor. - * - * Always has to be prefixed with `clean` and the name that was used in features list - * @param {MediaElementPlayer} player - */ cleanfullscreen: function cleanfullscreen(player) { player.exitFullScreen(); }, - - - /** - * - */ enterFullScreen: function enterFullScreen() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null, + isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName), containerStyles = getComputedStyle(t.container); if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN) { @@ -1347,52 +1028,38 @@ Object.assign(_player2.default.prototype, { return; } - // set it to not show scroll bars so 100% will work (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen'); - // store sizing t.normalHeight = parseFloat(containerStyles.height); t.normalWidth = parseFloat(containerStyles.width); - // attempt to do true fullscreen if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { - Features.requestFullScreen(t.container); if (t.isInIframe) { - // sometimes exiting from fullscreen doesn't work - // notably in Chrome <iframe>. Fixed in version 17 setTimeout(function checkFullscreen() { if (t.isNativeFullScreen) { var percentErrorMargin = 0.002, - // 0.2% - windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, + windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, screenWidth = screen.width, absDiff = Math.abs(screenWidth - windowWidth), marginError = screenWidth * percentErrorMargin; - // check if the video is suddenly not really fullscreen if (absDiff > marginError) { - // manually exit t.exitFullScreen(); } else { - // test again setTimeout(checkFullscreen, 500); } } }, 1000); } - } else if (t.fullscreeMode === 'fullwindow') {} - // move into position + } - // make full size t.container.style.width = '100%'; t.container.style.height = '100%'; - // Only needed for safari 5.1 native full screen, can cause display issues elsewhere - // Actually, it seems to be needed for IE8, too t.containerSizeTimeout = setTimeout(function () { t.container.style.width = '100%'; t.container.style.height = '100%'; @@ -1440,25 +1107,16 @@ Object.assign(_player2.default.prototype, { var event = (0, _general.createEvent)('enteredfullscreen', t.container); t.container.dispatchEvent(event); }, - - - /** - * - */ exitFullScreen: function exitFullScreen() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); - // Prevent container from attempting to stretch a second time clearTimeout(t.containerSizeTimeout); - // come out of native fullscreen if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) { Features.cancelFullScreen(); } - // restore scroll bars to document (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen'); @@ -1530,38 +1188,14 @@ var _dom = _dereq_(24); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Play/Pause button - * - * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state - * between paused and playing. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {?String} - */ playText: null, - /** - * @type {?String} - */ + pauseText: null }); Object.assign(_player2.default.prototype, { - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - * @public - */ buildplaypause: function buildplaypause(player, controls, layers, media) { - var t = this, op = t.options, playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'), @@ -1581,10 +1215,6 @@ Object.assign(_player2.default.prototype, { var playBtn = play.querySelector('button'); t.addControlElement(play, 'playpause'); - /** - * @private - * @param {String} which - token to determine new state of button - */ function togglePlayPause(which) { if ('play' === which) { (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); @@ -1605,8 +1235,7 @@ Object.assign(_player2.default.prototype, { togglePlayPause('pse'); media.addEventListener('loadedmetadata', function () { - // `loadedmetadata` in Flash is executed simultaneously with `play`, so avoid it - if (media.rendererName.match(/flash/) === null) { + if (media.rendererName.indexOf('flash') === -1) { togglePlayPause('pse'); } }); @@ -1620,7 +1249,6 @@ Object.assign(_player2.default.prototype, { togglePlayPause('pse'); }); media.addEventListener('ended', function () { - if (!player.options.loop) { (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); @@ -1635,8 +1263,6 @@ Object.assign(_player2.default.prototype, { },{"16":16,"2":2,"24":24,"25":25,"4":4}],10:[function(_dereq_,module,exports){ 'use strict'; -// import window from 'global/window'; - var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); @@ -1657,38 +1283,13 @@ var _dom = _dereq_(24); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Progress/loaded bar - * - * This feature creates a progress bar with a slider in the control bar, and updates it based on native events. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * Enable tooltip that shows time in progress bar - * @type {Boolean} - */ enableProgressTooltip: true, - /** - * Enable smooth behavior when hovering progress bar - * @type {Boolean} - */ useSmoothHover: true }); Object.assign(_player2.default.prototype, { - - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildprogress: function buildprogress(player, controls, layers, media) { var lastKeyPressTime = 0, @@ -1697,7 +1298,7 @@ Object.assign(_player2.default.prototype, { var t = this, autoRewindInitial = player.options.autoRewind, - tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : "", + tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '', rail = _document2.default.createElement('div'); rail.className = t.options.classPrefix + 'time-rail'; @@ -1726,13 +1327,7 @@ Object.assign(_player2.default.prototype, { element.style.OTransform = value; }; - /** - * - * @private - * @param {Event} e - */ var handleMouseMove = function handleMouseMove(e) { - var totalStyles = getComputedStyle(t.total), offsetStyles = (0, _dom.offset)(t.total), width = parseFloat(totalStyles.width), @@ -1763,11 +1358,9 @@ Object.assign(_player2.default.prototype, { pos = 0, x = void 0; - // mouse or touch position relative to the object if (e.originalEvent && e.originalEvent.changedTouches) { x = e.originalEvent.changedTouches[0].pageX; } else if (e.changedTouches) { - // for Zepto x = e.changedTouches[0].pageX; } else { x = e.pageX; @@ -1784,13 +1377,11 @@ Object.assign(_player2.default.prototype, { percentage = pos / width; t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration; - // fake seek to where the mouse is if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) { t.setCurrentRailHandle(t.newTime); t.updateCurrent(t.newTime); } - // position floating time box if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) { if (pos < 0) { pos = 0; @@ -1817,15 +1408,7 @@ Object.assign(_player2.default.prototype, { } } }, - - /** - * Update elements in progress bar for accessibility purposes only when player is paused. - * - * This is to avoid attempts to repeat the time over and over again when media is playing. - * @private - */ - updateSlider = function updateSlider() { - + updateSlider = function updateSlider() { var seconds = media.currentTime, timeSliderText = _i18n2.default.t('mejs.time-slider'), time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength), @@ -1848,19 +1431,12 @@ Object.assign(_player2.default.prototype, { t.slider.removeAttribute('aria-valuetext'); } }, - - /** - * - * @private - */ - restartPlayer = function restartPlayer() { - var now = new Date(); - if (now - lastKeyPressTime >= 1000) { + restartPlayer = function restartPlayer() { + if (new Date() - lastKeyPressTime >= 1000) { media.play(); } }, handleMouseup = function handleMouseup() { - if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) { media.setCurrentTime(t.newTime); player.setCurrentRail(); @@ -1872,7 +1448,6 @@ Object.assign(_player2.default.prototype, { t.forcedHandlePause = false; }; - // Events t.slider.addEventListener('focus', function () { player.options.autoRewind = false; }); @@ -1880,7 +1455,6 @@ Object.assign(_player2.default.prototype, { player.options.autoRewind = autoRewindInitial; }); t.slider.addEventListener('keydown', function (e) { - if (new Date() - lastKeyPressTime >= 1000) { startedPaused = media.paused; } @@ -1895,30 +1469,25 @@ Object.assign(_player2.default.prototype, { var seekTime = media.currentTime; switch (keyCode) { - case 37: // left + case 37: case 40: - // Down if (media.duration !== Infinity) { seekTime -= seekBackward; } break; - case 39: // Right + case 39: case 38: - // Up if (media.duration !== Infinity) { seekTime += seekForward; } break; case 36: - // Home seekTime = 0; break; case 35: - // end seekTime = duration; break; case 32: - // space if (!_constants.IS_FIREFOX) { if (media.paused) { media.play(); @@ -1928,7 +1497,6 @@ Object.assign(_player2.default.prototype, { } return; case 13: - // enter if (media.paused) { media.play(); } else { @@ -1958,7 +1526,6 @@ Object.assign(_player2.default.prototype, { var events = ['mousedown', 'touchstart']; - // Required to manipulate mouse movements that require drag 'n' drop properly t.slider.addEventListener('dragstart', function () { return false; }); @@ -1967,9 +1534,7 @@ Object.assign(_player2.default.prototype, { t.slider.addEventListener(events[i], function (e) { t.forcedHandlePause = false; if (media.duration !== Infinity) { - // only handle left clicks or touch if (e.which === 1 || e.which === 0) { - if (!media.paused) { t.media.pause(); t.forcedHandlePause = true; @@ -2029,9 +1594,6 @@ Object.assign(_player2.default.prototype, { } }); - // loading - // If media is does not have a finite duration, remove progress bar interaction - // and indicate that is a live broadcast media.addEventListener('progress', function (e) { var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); if (media.duration !== Infinity) { @@ -2052,7 +1614,6 @@ Object.assign(_player2.default.prototype, { } }); - // current time media.addEventListener('timeupdate', function (e) { var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); if (media.duration !== Infinity) { @@ -2084,79 +1645,41 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Calculate the progress on the media and update progress bar's width - * - * @param {Event} e - */ setProgressRail: function setProgressRail(e) { - - var percent = null; - var t = this, target = e !== undefined ? e.target : t.media; - // newest HTML5 spec has buffered array (FF4, Webkit) + var percent = null; + if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) { - // account for a real array with multiple values - always read the end of the last buffer percent = target.buffered.end(target.buffered.length - 1) / target.duration; - } - // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end() - // to be anything other than 0. If the byte count is available we use this instead. - // Browsers that support the else if do not seem to have the bufferedBytes value and - // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8. - else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { + } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { percent = target.bufferedBytes / target.bytesTotal; - } - // Firefox 3 with an Ogg file seems to go this way - else if (e && e.lengthComputable && e.total !== 0) { + } else if (e && e.lengthComputable && e.total !== 0) { percent = e.loaded / e.total; } - // finally update the progress bar if (percent !== null) { percent = Math.min(1, Math.max(0, percent)); - // update loaded bar + if (t.loaded && t.total) { t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')'); } } }, - - /** - * Update the slider's width depending on the time assigned - * - * @param {Number} fakeTime - */ setCurrentRailHandle: function setCurrentRailHandle(fakeTime) { var t = this; t.setCurrentRailMain(t, fakeTime); }, - - /** - * Update the slider's width depending on the current time - * - */ setCurrentRail: function setCurrentRail() { var t = this; t.setCurrentRailMain(t); }, - - /** - * Method that handles the calculation of the width of the rail. - * - * @param {MediaElementPlayer} t - * @param {?Number} fakeTime - */ setCurrentRailMain: function setCurrentRailMain(t, fakeTime) { if (t.media.currentTime !== undefined && t.media.duration) { var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime; - // update bar and handle if (t.total && t.handle) { - var tW = parseFloat(getComputedStyle(t.total).width); var newWidth = Math.round(tW * nTime / t.media.duration), @@ -2203,36 +1726,13 @@ var _dom = _dereq_(24); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Current/duration times - * - * This feature creates/updates the duration and progress times in the control bar, based on native events. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * The initial duration - * @type {Number} - */ duration: 0, - /** - * @type {String} - */ + timeAndDurationSeparator: '<span> | </span>' }); Object.assign(_player2.default.prototype, { - - /** - * Current time constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildcurrent: function buildcurrent(player, controls, layers, media) { var t = this, time = _document2.default.createElement('div'); @@ -2250,27 +1750,13 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Duration time constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildduration: function buildduration(player, controls, layers, media) { - var t = this, currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime'); if (currTime) { controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>'); } else { - - // add class to current time if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) { (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container'); } @@ -2288,12 +1774,6 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Update the current time and output it in format 00:00 - * - */ updateCurrent: function updateCurrent() { var t = this; @@ -2307,12 +1787,6 @@ Object.assign(_player2.default.prototype, { t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); } }, - - - /** - * Update the duration time and output it in format 00:00 - * - */ updateDuration: function updateDuration() { var t = this; @@ -2328,7 +1802,6 @@ Object.assign(_player2.default.prototype, { var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); - // Toggle long-video class if time code is >5 digits (MM:SS) if (timecode.length > 5) { (0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video'); } @@ -2366,68 +1839,25 @@ var _dom = _dereq_(24); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Closed Captions (CC) button - * - * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media - * with a certain language (if available), toggle captions, etc. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.) - * If there are multiple tracks for one language, the last track node found is activated - * @see https://www.loc.gov/standards/iso639-2/php/code_list.php - * @type {String} - */ startLanguage: '', - /** - * @type {?String} - */ + tracksText: null, - /** - * @type {?String} - */ + chaptersText: null, - /** - * Avoid to screen reader speak captions over an audio track. - * - * @type {Boolean} - */ + tracksAriaLive: false, - /** - * Remove the [cc] button when no track nodes are present - * @type {Boolean} - */ + hideCaptionsButtonWhenEmpty: true, - /** - * Change captions to pop-up if true and only one track node is found - * @type {Boolean} - */ + toggleCaptionsButtonWhenOnlyOne: false, - /** - * @type {String} - */ + slidesSelector: '' }); Object.assign(_player2.default.prototype, { - - /** - * @type {Boolean} - */ hasChapters: false, - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildtracks: function buildtracks(player, controls, layers, media) { if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) { @@ -2440,7 +1870,6 @@ Object.assign(_player2.default.prototype, { chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'), total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length; - // If browser will do native captions, prefer mejs captions, loop through tracks and hide if (t.domNode.textTracks) { for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) { t.domNode.textTracks[i].mode = 'hidden'; @@ -2484,7 +1913,6 @@ Object.assign(_player2.default.prototype, { player.selectedTrack = null; player.isLoadingTrack = false; - // add to list for (var _i2 = 0; _i2 < total; _i2++) { var _kind = player.tracks[_i2].kind; if (_kind === 'subtitles' || _kind === 'captions') { @@ -2492,15 +1920,12 @@ Object.assign(_player2.default.prototype, { } } - // start loading tracks player.loadNextTrack(); var inEvents = ['mouseenter', 'focusin'], outEvents = ['mouseleave', 'focusout']; - // if only one language then just make the button a toggle if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) { - // click player.captionsButton.addEventListener('click', function () { var trackId = 'none'; if (player.selectedTrack === null) { @@ -2511,7 +1936,7 @@ Object.assign(_player2.default.prototype, { } else { var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'), captions = player.captionsButton.querySelectorAll('input[type=radio]'); - // hover or keyboard focus + for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) { player.captionsButton.addEventListener(inEvents[_i3], function () { (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); @@ -2524,12 +1949,8 @@ Object.assign(_player2.default.prototype, { }); } - // handle clicks to the language radio buttons for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) { captions[_i5].addEventListener('click', function () { - // value is trackId, same as the actual id, and we're using it here - // because the "none" checkbox doesn't have a trackId - // to use, but we want to know when "none" is clicked player.setTrack(this.value); }); } @@ -2544,7 +1965,6 @@ Object.assign(_player2.default.prototype, { }); } - //Allow up/down arrow to change the selected radio without changing the volume. player.captionsButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); @@ -2564,21 +1984,17 @@ Object.assign(_player2.default.prototype, { }); } - //Allow up/down arrow to change the selected radio without changing the volume. player.chaptersButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); if (!player.options.alwaysShowControls) { - // move with controls player.container.addEventListener('controlsshown', function () { - // push captions above controls (0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); }); player.container.addEventListener('controlshidden', function () { if (!media.paused) { - // move back to normal place (0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); } }); @@ -2598,16 +2014,7 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * Feature destructor. - * - * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list - * @param {MediaElementPlayer} player - */ cleartracks: function cleartracks(player) { - if (player) { if (player.captions) { player.captions.remove(); @@ -2636,7 +2043,6 @@ Object.assign(_player2.default.prototype, { tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles, total = tracktags.length; - // store for use by plugins t.tracks = []; for (var i = 0; i < total; i++) { var track = tracktags[i], @@ -2653,12 +2059,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * - * @param {String} trackId, or "none" to disable captions - */ setTrack: function setTrack(trackId) { var t = this, @@ -2704,11 +2104,6 @@ Object.assign(_player2.default.prototype, { event.detail.caption = t.selectedTrack; t.media.dispatchEvent(event); }, - - - /** - * - */ loadNextTrack: function loadNextTrack() { var t = this; @@ -2717,37 +2112,25 @@ Object.assign(_player2.default.prototype, { t.isLoadingTrack = true; t.loadTrack(t.trackToLoad); } else { - // add done? t.isLoadingTrack = false; t.checkForTracks(); } }, - - - /** - * - * @param index - */ loadTrack: function loadTrack(index) { var t = this, track = t.tracks[index]; if (track !== undefined && (track.src !== undefined || track.src !== "")) { (0, _dom.ajax)(track.src, 'text', function (d) { - - // parse the loaded file track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d); track.isLoaded = true; - t.enableTrackButton(track); t.loadNextTrack(); if (track.kind === 'slides') { t.setupSlides(track); - } - // Load by default the first track with `chapters` kind - else if (track.kind === 'chapters' && !t.hasChapters) { + } else if (track.kind === 'chapters' && !t.hasChapters) { t.drawChapters(track); t.hasChapters = true; } @@ -2757,12 +2140,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * - * @param {String} track - The language code - */ enableTrackButton: function enableTrackButton(track) { var t = this, lang = track.srclang, @@ -2785,23 +2162,14 @@ Object.assign(_player2.default.prototype, { targetSiblings[i].innerHTML = label; } - // auto select if (t.options.startLanguage === lang) { target.checked = true; var event = (0, _general.createEvent)('click', target); target.dispatchEvent(event); } }, - - - /** - * - * @param {String} trackId - */ removeTrackButton: function removeTrackButton(trackId) { - var element = _document2.default.getElementById('' + trackId); - if (element) { var button = element.closest('li'); if (button) { @@ -2809,36 +2177,19 @@ Object.assign(_player2.default.prototype, { } } }, - - - /** - * - * @param {String} trackId - * @param {String} lang - The language code - * @param {String} label - */ addTrackButton: function addTrackButton(trackId, lang, label) { var t = this; if (label === '') { label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; } - // trackId is used in the value, too, because the "none" - // caption option doesn't have a trackId but we need to be able - // to set it, too - t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label">' + label + ' (loading)</label>') + '</li>'; + t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>'; }, - - - /** - * - */ checkForTracks: function checkForTracks() { var t = this; var hasSubtitles = false; - // check if any subtitles if (t.options.hideCaptionsButtonWhenEmpty) { for (var i = 0, total = t.tracks.length; i < total; i++) { var kind = t.tracks[i].kind; @@ -2852,13 +2203,7 @@ Object.assign(_player2.default.prototype, { t.setControlsSize(); } }, - - - /** - * - */ displayCaptions: function displayCaptions() { - if (this.tracks === undefined) { return; } @@ -2866,19 +2211,15 @@ Object.assign(_player2.default.prototype, { var t = this, track = t.selectedTrack, sanitize = function sanitize(html) { - var div = _document2.default.createElement('div'); div.innerHTML = html; - // Remove all `<script>` tags first var scripts = div.getElementsByTagName('script'); var i = scripts.length; while (i--) { scripts[i].remove(); } - // Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute - // (`onerror`, `onclick`, etc.) var allElements = div.getElementsByTagName('*'); for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) { var attributesObj = allElements[_i12].attributes, @@ -2898,38 +2239,23 @@ Object.assign(_player2.default.prototype, { if (track !== null && track.isLoaded) { var i = t.searchTrackPosition(track.entries, t.media.currentTime); if (i > -1) { - // Set the line before the timecode as a class so the cue can be targeted if needed t.captionsText.innerHTML = sanitize(track.entries[i].text); t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || ''); t.captions.style.display = ''; t.captions.style.height = '0px'; - return; // exit out if one is visible; + return; } - t.captions.style.display = 'none'; } else { t.captions.style.display = 'none'; } }, - - - /** - * - * @param {HTMLElement} track - */ setupSlides: function setupSlides(track) { var t = this; - t.slides = track; t.slides.entries.imgs = [t.slides.entries.length]; t.showSlide(0); }, - - - /** - * - * @param {Number} index - */ showSlide: function showSlide(index) { var _this = this; @@ -2944,7 +2270,6 @@ Object.assign(_player2.default.prototype, { var img = t.slides.entries[index].imgs; if (img === undefined || img.fadeIn === undefined) { - var image = _document2.default.createElement('img'); image.src = url; image.addEventListener('load', function () { @@ -2970,11 +2295,6 @@ Object.assign(_player2.default.prototype, { } } }, - - - /** - * - */ displaySlides: function displaySlides() { var t = this; @@ -2987,15 +2307,8 @@ Object.assign(_player2.default.prototype, { if (i > -1) { t.showSlide(i); - return; // exit out if one is visible; } }, - - - /** - * - * @param {Object} chapters - */ drawChapters: function drawChapters(chapters) { var t = this, total = chapters.entries.length; @@ -3007,7 +2320,7 @@ Object.assign(_player2.default.prototype, { t.chaptersButton.querySelector('ul').innerHTML = ''; for (var i = 0; i < total; i++) { - t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>'; + t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>'; } var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'), @@ -3049,14 +2362,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - /** - * Perform binary search to look for proper track index - * - * @param {Object[]} tracks - * @param {Number} currentTime - * @return {Number} - */ searchTrackPosition: function searchTrackPosition(tracks, currentTime) { var lo = 0, hi = tracks.length - 1, @@ -3082,11 +2387,6 @@ Object.assign(_player2.default.prototype, { } }); -/** - * Map all possible languages with their respective code - * - * @constructor - */ _mejs2.default.language = { codes: { af: 'mejs.afrikaans', @@ -3147,35 +2447,10 @@ _mejs2.default.language = { } }; -/* - Parses WebVTT format which should be formatted as - ================================ - WEBVTT - - 1 - 00:00:01,1 --> 00:00:05,000 - A line of text - - 2 - 00:01:15,1 --> 00:02:05,000 - A second line of text - - =============================== - - Adapted from: http://www.delphiki.com/html5/playr - */ _mejs2.default.TrackFormatParser = { webvtt: { - /** - * @type {String} - */ pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, - /** - * - * @param {String} trackText - * @returns {{text: Array, times: Array}} - */ parse: function parse(trackText) { var lines = trackText.split(/\r?\n/), entries = []; @@ -3192,7 +2467,7 @@ _mejs2.default.TrackFormatParser = { identifier = lines[i - 1]; } i++; - // grab all the (possibly multi-line) text that follows + text = lines[i]; i++; while (lines[i] !== '' && i < lines.length) { @@ -3213,13 +2488,8 @@ _mejs2.default.TrackFormatParser = { return entries; } }, - // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420 + dfxp: { - /** - * - * @param {String} trackText - * @returns {{text: Array, times: Array}} - */ parse: function parse(trackText) { trackText = $(trackText).filter('tt'); var container = trackText.firstChild, @@ -3305,56 +2575,22 @@ var _dom = _dereq_(24); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Volume button - * - * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its - * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {?String} - */ muteText: null, - /** - * @type {?String} - */ + unmuteText: null, - /** - * @type {?String} - */ + allyVolumeControlText: null, - /** - * @type {Boolean} - */ + hideVolumeOnTouchDevices: true, - /** - * @type {String} - */ + audioVolume: 'horizontal', - /** - * @type {String} - */ + videoVolume: 'vertical' }); Object.assign(_player2.default.prototype, { - - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - * @public - */ buildvolume: function buildvolume(player, controls, layers, media) { - - // Android and iOS don't support volume controls if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) { return; } @@ -3367,55 +2603,55 @@ Object.assign(_player2.default.prototype, { mute = _document2.default.createElement('div'); mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute'; - mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider">') + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; + mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; t.addControlElement(mute, 'volume'); - // horizontal version if (mode === 'horizontal') { var anchor = _document2.default.createElement('a'); anchor.className = t.options.classPrefix + 'horizontal-volume-slider'; anchor.href = 'javascript:void(0);'; + anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); + anchor.setAttribute('aria-valuemin', 0); + anchor.setAttribute('aria-valuemax', 100); + anchor.setAttribute('role', 'slider'); anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>'; mute.parentNode.insertBefore(anchor, mute.nextSibling); } + var mouseIsDown = false, + mouseIsOver = false, + updateVolumeSlider = function updateVolumeSlider() { + var volume = Math.floor(media.volume * 100); + volumeSlider.setAttribute('aria-valuenow', volume); + volumeSlider.setAttribute('aria-valuetext', volume + '%'); + }; + var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'), volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'), volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'), volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'), - button = mute.firstElementChild, - - - /** - * @private - * @param {Number} volume - */ - positionVolumeHandle = function positionVolumeHandle(volume) { - - // correct to 0-1 + positionVolumeHandle = function positionVolumeHandle(volume) { volume = Math.max(0, volume); volume = Math.min(volume, 1); - // adjust mute button style if (volume === 0) { (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); - var _button = mute.firstElementChild; - _button.setAttribute('title', unmuteText); - _button.setAttribute('aria-label', unmuteText); + var button = mute.firstElementChild; + button.setAttribute('title', unmuteText); + button.setAttribute('aria-label', unmuteText); } else { (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); - var _button2 = mute.firstElementChild; - _button2.setAttribute('title', muteText); - _button2.setAttribute('aria-label', muteText); + var _button = mute.firstElementChild; + _button.setAttribute('title', muteText); + _button.setAttribute('aria-label', muteText); } var volumePercentage = volume * 100 + '%', volumeStyles = getComputedStyle(volumeHandle); - // position slider if (mode === 'vertical') { volumeCurrent.style.bottom = 0; volumeCurrent.style.height = volumePercentage; @@ -3428,26 +2664,18 @@ Object.assign(_player2.default.prototype, { volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px'; } }, - - /** - * @private - */ - handleVolumeMove = function handleVolumeMove(e) { - + handleVolumeMove = function handleVolumeMove(e) { var totalOffset = (0, _dom.offset)(volumeTotal), volumeStyles = getComputedStyle(volumeTotal); var volume = null; - // calculate the new volume based on the most recent position if (mode === 'vertical') { - var railHeight = parseFloat(volumeStyles.height), newY = e.pageY - totalOffset.top; volume = (railHeight - newY) / railHeight; - // the controls just hide themselves (usually when mouse moves too far up) if (totalOffset.top === 0 || totalOffset.left === 0) { return; } @@ -3458,14 +2686,11 @@ Object.assign(_player2.default.prototype, { volume = newX / railWidth; } - // ensure the volume isn't outside 0-1 volume = Math.max(0, volume); volume = Math.min(volume, 1); - // position the slider and handle positionVolumeHandle(volume); - // set the media object (this will trigger the `volumechanged` event) if (volume === 0) { media.setMuted(true); } else { @@ -3489,6 +2714,12 @@ Object.assign(_player2.default.prototype, { volumeSlider.style.display = 'block'; mouseIsOver = true; }); + + mute.addEventListener('focusout', function (e) { + if (!e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider') && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); mute.addEventListener('mouseleave', function () { mouseIsOver = false; if (!mouseIsDown && mode === 'vertical') { @@ -3497,22 +2728,17 @@ Object.assign(_player2.default.prototype, { }); mute.addEventListener('focusout', function () { mouseIsOver = false; - if (!mouseIsDown && mode === 'vertical') { - volumeSlider.style.display = 'none'; - } }); mute.addEventListener('keydown', function (e) { - if (t.options.keyActions.length) { var keyCode = e.which || e.keyCode || 0, volume = media.volume; + switch (keyCode) { case 38: - // Up volume = Math.min(volume + 0.1, 1); break; case 40: - // Down volume = Math.max(0, volume - 0.1); break; default: @@ -3527,26 +2753,12 @@ Object.assign(_player2.default.prototype, { e.stopPropagation(); } }); + mute.querySelector('button').addEventListener('click', function () { + media.setMuted(!media.muted); + var event = (0, _general.createEvent)('volumechange', media); + media.dispatchEvent(event); + }); - var mouseIsDown = false, - mouseIsOver = false, - - - /** - * @private - */ - updateVolumeSlider = function updateVolumeSlider() { - var volume = Math.floor(media.volume * 100); - volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); - volumeSlider.setAttribute('aria-valuemin', 0); - volumeSlider.setAttribute('aria-valuemax', 100); - volumeSlider.setAttribute('aria-valuenow', volume); - volumeSlider.setAttribute('aria-valuetext', volume + '%'); - volumeSlider.setAttribute('role', 'slider'); - volumeSlider.tabIndex = -1; - }; - - // Events volumeSlider.addEventListener('dragstart', function () { return false; }); @@ -3554,6 +2766,16 @@ Object.assign(_player2.default.prototype, { volumeSlider.addEventListener('mouseover', function () { mouseIsOver = true; }); + volumeSlider.addEventListener('focusin', function () { + volumeSlider.style.display = 'block'; + mouseIsOver = true; + }); + volumeSlider.addEventListener('focusout', function () { + mouseIsOver = false; + if (!mouseIsDown && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); volumeSlider.addEventListener('mousedown', function (e) { handleVolumeMove(e); t.globalBind('mousemove.vol', function (event) { @@ -3571,29 +2793,10 @@ Object.assign(_player2.default.prototype, { } }); mouseIsDown = true; - e.preventDefault(); e.stopPropagation(); }); - // MUTE button - button.addEventListener('click', function () { - media.setMuted(!media.muted); - var event = (0, _general.createEvent)('volumechange', media); - media.dispatchEvent(event); - }); - button.addEventListener('focus', function () { - if (mode === 'vertical') { - volumeSlider.style.display = 'block'; - } - }); - button.addEventListener('blur', function () { - if (mode === 'vertical') { - volumeSlider.style.display = 'none'; - } - }); - - // listen for volume change events from other sources media.addEventListener('volumechange', function (e) { if (!mouseIsDown) { if (media.muted) { @@ -3609,17 +2812,11 @@ Object.assign(_player2.default.prototype, { updateVolumeSlider(e); }); - // mutes the media and sets the volume icon muted if the initial volume is set to 0 if (player.options.startVolume === 0) { media.setMuted(true); } - // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements - var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; - - if (isNative) { - media.setVolume(player.options.startVolume); - } + media.setVolume(player.options.startVolume); t.container.addEventListener('controlsresize', function () { if (media.muted) { @@ -3638,53 +2835,33 @@ Object.assign(_player2.default.prototype, { },{"16":16,"2":2,"23":23,"24":24,"25":25,"4":4}],14:[function(_dereq_,module,exports){ 'use strict'; -/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js - */ - Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { "mejs.plural-form": 1, - // core/mediaelement.js "mejs.download-file": "Download File", - // renderers/flash.js "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", - // features/fullscreen.js "mejs.fullscreen": "Fullscreen", - // features/playpause.js "mejs.play": "Play", "mejs.pause": "Pause", - // features/progress.js "mejs.time-slider": "Time Slider", "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", "mejs.live-broadcast": "Live Broadcast", - // features/volume.js "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", "mejs.unmute": "Unmute", "mejs.mute": "Mute", "mejs.volume-slider": "Volume Slider", - // core/player.js "mejs.video-player": "Video Player", "mejs.audio-player": "Audio Player", - // features/tracks.js "mejs.captions-subtitles": "Captions/Subtitles", "mejs.captions-chapters": "Chapters", "mejs.none": "None", @@ -3820,109 +2997,91 @@ _mejs2.default.mepIndex = 0; _mejs2.default.players = {}; -// default player values var config = exports.config = { - // url to poster (to fix iOS 3.x) poster: '', - // When the video is ended, show the poster. + showPosterWhenEnded: false, - // When the video is paused, show the poster. + showPosterWhenPaused: false, - // Default if the <video width> is not specified + defaultVideoWidth: 480, - // Default if the <video height> is not specified + defaultVideoHeight: 270, - // If set, overrides <video width> + videoWidth: -1, - // If set, overrides <video height> + videoHeight: -1, - // Default if the user doesn't specify + defaultAudioWidth: 400, - // Default if the user doesn't specify + defaultAudioHeight: 40, - // Default amount to move back when back key is pressed + defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) { return media.duration * 0.05; }, - // Default amount to move forward when forward key is pressed + defaultSeekForwardInterval: function defaultSeekForwardInterval(media) { return media.duration * 0.05; }, - // Set dimensions via JS instead of CSS + setDimensions: true, - // Width of audio player + audioWidth: -1, - // Height of audio player + audioHeight: -1, - // Initial volume when the player starts (overridden by user cookie) + startVolume: 0.8, - // Useful for <audio> player loops + loop: false, - // Rewind to beginning when media ends + autoRewind: true, - // Resize to media dimensions + enableAutosize: true, - /* - * Time format to use. Default: 'mm:ss' - * Supported units: - * h: hour - * m: minute - * s: second - * f: frame count - * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits. - * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible. - * - * Example to display 75 seconds: - * Format 'mm:ss': 01:15 - * Format 'm:ss': 1:15 - * Format 'm:s': 1:15 - */ + timeFormat: '', - // Force the hour marker (##:00:00) + alwaysShowHours: false, - // Show framecount in timecode (##:00:00:00) + showTimecodeFrameCount: false, - // Used when showTimecodeFrameCount is set to true + framesPerSecond: 25, - // Hide controls when playing and mouse is not over the video + alwaysShowControls: false, - // Display the video control when media is loading + hideVideoControlsOnLoad: false, - // Display the video controls when media is paused + hideVideoControlsOnPause: false, - // Enable click video element to toggle play/pause + clickToPlayPause: true, - // Time in ms to hide controls + controlsTimeoutDefault: 1500, - // Time in ms to trigger the timer when mouse moves + controlsTimeoutMouseEnter: 2500, - // Time in ms to trigger the timer when mouse leaves + controlsTimeoutMouseLeave: 1000, - // Force iPad's native controls + iPadUseNativeControls: false, - // Force iPhone's native controls + iPhoneUseNativeControls: false, - // Force Android's native controls + AndroidUseNativeControls: false, - // Features to show + features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'], - // Only for dynamic + isVideo: true, - // Stretching modes (auto, fill, responsive, none) + stretching: 'auto', - // Prefix class names on elements + classPrefix: 'mejs__', - // Turn keyboard support on and off for this instance + enableKeyboard: true, - // When this player starts, it will pause other players + pauseOtherPlayers: true, - // Number of decimal places to show if frames are shown + secondsDecimalLength: 0, - // Array of keyboard actions such as play/pause + keyActions: [{ - keys: [32, // SPACE - 179 // GOOGLE play/pause button - ], + keys: [32, 179], action: function action(player, media) { if (!_constants.IS_FIREFOX) { @@ -3934,7 +3093,7 @@ var config = exports.config = { } } }, { - keys: [38], // UP + keys: [38], action: function action(player, media) { if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { @@ -3952,7 +3111,7 @@ var config = exports.config = { } } }, { - keys: [40], // DOWN + keys: [40], action: function action(player, media) { if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { @@ -3972,9 +3131,7 @@ var config = exports.config = { } } }, { - keys: [37, // LEFT - 227 // Google TV rewind - ], + keys: [37, 227], action: function action(player, media) { if (!isNaN(media.duration) && media.duration > 0) { if (player.isVideo) { @@ -3982,15 +3139,12 @@ var config = exports.config = { player.startControlsTimer(); } - // 5% var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0); media.setCurrentTime(newTime); } } }, { - keys: [39, // RIGHT - 228 // Google TV forward - ], + keys: [39, 228], action: function action(player, media) { if (!isNaN(media.duration) && media.duration > 0) { @@ -3999,13 +3153,12 @@ var config = exports.config = { player.startControlsTimer(); } - // 5% var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration); media.setCurrentTime(newTime); } } }, { - keys: [70], // F + keys: [70], action: function action(player, media, key, event) { if (!event.ctrlKey) { if (typeof player.enterFullScreen !== 'undefined') { @@ -4018,7 +3171,7 @@ var config = exports.config = { } } }, { - keys: [77], // M + keys: [77], action: function action(player) { player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = ''; @@ -4037,15 +3190,6 @@ var config = exports.config = { _mejs2.default.MepDefaults = config; -/** - * Wrap a MediaElement object in player controls - * - * @constructor - * @param {HTMLElement|String} node - * @param {Object} o - * @return {?MediaElementPlayer} - */ - var MediaElementPlayer = function () { function MediaElementPlayer(node, o) { _classCallCheck(this, MediaElementPlayer); @@ -4061,36 +3205,28 @@ var MediaElementPlayer = function () { t.controlsTimer = null; - // enforce object, even without "new" (via John Resig) if (!(t instanceof MediaElementPlayer)) { return new MediaElementPlayer(element, o); } - // these will be reset after the MediaElement.success fires - // t.media will be the fake node to emulate all HTML5 events, methods, etc - // t.node will be the node to be restored t.node = t.media = element; if (!t.node) { return; } - // check for existing player if (t.media.player !== undefined) { return t.media.player; } - // try to get options from data-mejsoptions if (o === undefined) { var options = t.node.getAttribute('data-mejsoptions'); o = options ? JSON.parse(options) : {}; } - // extend default options t.options = Object.assign({}, config, o); if (!t.options.timeFormat) { - // Generate the time format according to options t.options.timeFormat = 'mm:ss'; if (t.options.alwaysShowHours) { t.options.timeFormat = 'hh:mm:ss'; @@ -4102,13 +3238,10 @@ var MediaElementPlayer = function () { (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25); - // unique ID t.id = 'mep_' + _mejs2.default.mepIndex++; - // add to player array (for focus events) _mejs2.default.players[t.id] = t; - // start up var meOptions = Object.assign({}, t.options, { success: function success(media, domNode) { t._meReady(media, domNode); @@ -4119,36 +3252,26 @@ var MediaElementPlayer = function () { }), tagName = t.node.tagName.toLowerCase(); - // get video from src or href? t.isDynamic = tagName !== 'audio' && tagName !== 'video'; t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo; t.mediaFiles = null; t.trackFiles = null; - // use native controls in iPad, iPhone, and Android if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) { - - // add controls and stop t.node.setAttribute('controls', true); - // override Apple's autoplay override for iPads if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) { t.play(); } } else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) { - - // DESKTOP: use MediaElementPlayer controls - - // remove native controls t.node.removeAttribute('controls'); var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player'); - // insert description for screen readers + var offscreen = _document2.default.createElement('span'); offscreen.className = t.options.classPrefix + 'offscreen'; offscreen.innerText = videoPlayerTitle; t.media.parentNode.insertBefore(offscreen, t.media); - // build container t.container = _document2.default.createElement('div'); t.container.id = t.id; t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className; @@ -4159,29 +3282,21 @@ var MediaElementPlayer = function () { t.container.addEventListener('focus', function (e) { if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { t.showControls(true); - // In versions older than IE11, the focus causes the playbar to be displayed - // if user clicks on the Play/Pause button in the control bar once it attempts - // to hide it - if (!_constants.HAS_MS_NATIVE_FULLSCREEN) { - // If e.relatedTarget appears before container, send focus to play button, - // else send focus to last control button. - var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', - button = t.container.querySelector(btnSelector); - - button.focus(); - } + + var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', + button = t.container.querySelector(btnSelector); + + button.focus(); } }); t.node.parentNode.insertBefore(t.container, t.node); - // When no elements in controls, hide bar completely if (!t.options.features.length) { t.container.style.background = 'transparent'; t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none'; } if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) { - // outer container t.outerContainer = t.media.parentNode; var wrapper = _document2.default.createElement('div'); @@ -4190,7 +3305,6 @@ var MediaElementPlayer = function () { wrapper.appendChild(t.container); } - // add classes for user and content if (_constants.IS_ANDROID) { dom.addClass(t.container, t.options.classPrefix + 'android'); } @@ -4205,9 +3319,6 @@ var MediaElementPlayer = function () { } dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio'); - // Workflow for Safari desktop: "clone" element and remove children, but save them to check sources, captions, etc. - // This ensure full compatibility when using keyboard, since Safari creates a keyboard trap when appending - // video/audio elements with children if (_constants.IS_SAFARI && !_constants.IS_IOS) { dom.addClass(t.container, t.options.classPrefix + 'hide-cues'); @@ -4228,7 +3339,6 @@ var MediaElementPlayer = function () { Array.prototype.slice.call(childNode.attributes).forEach(function (item) { elements[item.name] = item.value; }); - elements.type = (0, _media.formatType)(elements.src, elements.type); mediaFiles.push(elements); break; @@ -4255,25 +3365,13 @@ var MediaElementPlayer = function () { } } - // move the `video`/`audio` tag into the right spot t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node); - // needs to be assigned here, after iOS remap t.media.player = t; - // find parts t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls'); t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers'); - // determine the size - - /* size priority: - (1) videoWidth (forced), - (2) style="width;height;" - (3) width attribute, - (4) defaultVideoWidth (for unspecified cases) - */ - var tagType = t.isVideo ? 'video' : 'audio', capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1); @@ -4299,23 +3397,17 @@ var MediaElementPlayer = function () { t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width; - // set the size, while we wait for the plugins to load below t.setPlayerSize(t.width, t.height); - // create MediaElementShim meOptions.pluginWidth = t.width; meOptions.pluginHeight = t.height; - } - // Hide media completely for audio that doesn't have any features - else if (!t.isVideo && !t.options.features.length) { + } else if (!t.isVideo && !t.options.features.length) { t.node.style.display = 'none'; } - // create MediaElement shim new _mediaelement2.default(t.media, meOptions, t.mediaFiles); if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) { - // controls are shown when loaded var event = (0, _general.createEvent)('controlsshown', t.container); t.container.dispatchEvent(event); } @@ -4330,7 +3422,7 @@ var MediaElementPlayer = function () { doAnimation = doAnimation === undefined || doAnimation; - if (t.controlsAreVisible) { + if (t.controlsAreVisible || !t.isVideo) { return; } @@ -4342,7 +3434,6 @@ var MediaElementPlayer = function () { t.container.dispatchEvent(event); }); - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop = function _loop(i, total) { @@ -4358,8 +3449,8 @@ var MediaElementPlayer = function () { } else { dom.removeClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; + t.controls.style.opacity = 1; - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); @@ -4386,7 +3477,6 @@ var MediaElementPlayer = function () { if (doAnimation) { (function () { - // fade out main controls dom.fadeOut(t.controls, 200, function () { dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; @@ -4394,7 +3484,6 @@ var MediaElementPlayer = function () { t.container.dispatchEvent(event); }); - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop2 = function _loop2(i, total) { @@ -4409,12 +3498,10 @@ var MediaElementPlayer = function () { } })(); } else { - - // hide main controls dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; + t.controls.style.opacity = 0; - // hide others var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); @@ -4430,7 +3517,6 @@ var MediaElementPlayer = function () { }, { key: 'startControlsTimer', value: function startControlsTimer(timeout) { - var t = this; timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault; @@ -4445,7 +3531,6 @@ var MediaElementPlayer = function () { }, { key: 'killControlsTimer', value: function killControlsTimer() { - var t = this; if (t.controlsTimer !== null) { @@ -4471,33 +3556,22 @@ var MediaElementPlayer = function () { t.controlsEnabled = true; t.showControls(false); } - - /** - * Set up all controls and events - * - * @param media - * @param domNode - * @private - */ - }, { key: '_meReady', value: function _meReady(media, domNode) { - var t = this, autoplayAttr = domNode.getAttribute('autoplay'), autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'), - isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null; + isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); if (t.controls) { t.enableControls(); } - if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) { + if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) { t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = ''; } - // make sure it can't create itself again if a plugin reloads if (t.created) { return; } @@ -4507,13 +3581,7 @@ var MediaElementPlayer = function () { t.domNode = domNode; if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) { - - // In the event that no features are specified for audio, - // create only MediaElement instance rather than - // doing all the work to create a full player if (!t.isVideo && !t.options.features.length) { - - // force autoplay for HTML5 if (autoplay && isNative) { t.play(); } @@ -4530,25 +3598,20 @@ var MediaElementPlayer = function () { return; } - // two built in features t.buildposter(t, t.controls, t.layers, t.media); t.buildkeyboard(t, t.controls, t.layers, t.media); t.buildoverlays(t, t.controls, t.layers, t.media); - // grab for use by features t.findTracks(); - // cache container to store control elements' original position t.featurePosition = {}; - // add user-defined features/controls for (var i = 0, total = t.options.features.length; i < total; i++) { var feature = t.options.features[i]; if (t['build' + feature]) { try { t['build' + feature](t, t.controls, t.layers, t.media); } catch (e) { - // TODO: report control error console.error('error building ' + feature, e); } } @@ -4557,15 +3620,10 @@ var MediaElementPlayer = function () { var event = (0, _general.createEvent)('controlsready', t.container); t.container.dispatchEvent(event); - // reset all layers and controls t.setPlayerSize(t.width, t.height); t.setControlsSize(); - // controls fade if (t.isVideo) { - - // create callback here since it needs access to current - // MediaElement object t.clickToPlayPauseCallback = function () { if (t.options.clickToPlayPause) { @@ -4586,16 +3644,10 @@ var MediaElementPlayer = function () { t.createIframeLayer(); - // click to play/pause t.media.addEventListener('click', t.clickToPlayPauseCallback); if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) { - - // for touch devices (iOS, Android) - // show/hide without animation on touch t.node.addEventListener('touchstart', function () { - - // toggle controls if (t.controlsAreVisible) { t.hideControls(false); } else { @@ -4605,8 +3657,6 @@ var MediaElementPlayer = function () { } }); } else { - - // show/hide controls t.container.addEventListener('mouseenter', function () { if (t.controlsEnabled) { if (!t.options.alwaysShowControls) { @@ -4639,16 +3689,12 @@ var MediaElementPlayer = function () { t.hideControls(false); } - // check for autoplay if (autoplay && !t.options.alwaysShowControls) { t.hideControls(); } - // resizer if (t.options.enableAutosize) { t.media.addEventListener('loadedmetadata', function (e) { - // if the <video height> was not set and the options.videoHeight was not set - // then resize to the real dimensions if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) { t.setPlayerSize(e.target.videoWidth, e.target.videoHeight); t.setControlsSize(); @@ -4658,13 +3704,9 @@ var MediaElementPlayer = function () { } } - // EVENTS - - // FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them) t.media.addEventListener('play', function () { t.hasFocus = true; - // go through all other players for (var playerIndex in _mejs2.default.players) { if (_mejs2.default.players.hasOwnProperty(playerIndex)) { var p = _mejs2.default.players[playerIndex]; @@ -4677,13 +3719,11 @@ var MediaElementPlayer = function () { } }); - // ended for all t.media.addEventListener('ended', function () { if (t.options.autoRewind) { try { t.media.setCurrentTime(0); - // Fixing an Android stock browser bug, where "seeked" isn't fired correctly after - // ending the video and jumping to the beginning + setTimeout(function () { var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading'); if (loadingElement && loadingElement.parentNode) { @@ -4715,7 +3755,6 @@ var MediaElementPlayer = function () { } }); - // resize on the first play t.media.addEventListener('loadedmetadata', function () { (0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25); @@ -4733,14 +3772,12 @@ var MediaElementPlayer = function () { } }); - // Only change the time format when necessary var duration = null; t.media.addEventListener('timeupdate', function () { if (duration !== t.media.duration) { duration = t.media.duration; (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25); - // make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15 if (t.updateDuration) { t.updateDuration(); } @@ -4751,11 +3788,21 @@ var MediaElementPlayer = function () { } }); + t.container.addEventListener('click', function (e) { + dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + }); + + t.container.addEventListener('focusin', function (e) { + dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + if (t.controlsEnabled && !t.options.alwaysShowControls) { + t.showControls(false); + } + }); + t.container.addEventListener('focusout', function (e) { setTimeout(function () { - //FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787 if (e.relatedTarget) { - if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) { + if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) { t.keyboardAction = false; if (t.isVideo && !t.options.alwaysShowControls) { t.hideControls(true); @@ -4765,44 +3812,20 @@ var MediaElementPlayer = function () { }, 0); }); - // webkit has trouble doing this without a delay setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); }, 0); - // adjust controls whenever window sizes (used to be in fullscreen only) t.globalBind('resize', function () { - - // don't resize for fullscreen mode if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) { t.setPlayerSize(t.width, t.height); } - // always adjust controls t.setControlsSize(); }); - - // Disable focus outline to improve look-and-feel for regular users - t.globalBind('click', function (e) { - if (e.target.matches('.' + t.options.classPrefix + 'container')) { - dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive'); - } else if (e.target.closest('.' + t.options.classPrefix + 'container')) { - dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive'); - } - }); - - // Enable focus outline for Accessibility purposes - t.globalBind('keydown', function (e) { - if (e.target.matches('.' + t.options.classPrefix + 'container')) { - dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive'); - } else if (e.target.closest('.' + t.options.classPrefix + 'container')) { - dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive'); - } - }); } - // force autoplay for HTML5 if (autoplay && isNative) { t.play(); } @@ -4816,13 +3839,6 @@ var MediaElementPlayer = function () { } } } - - /** - * - * @param {Event} e - * @private - */ - }, { key: '_handleError', value: function _handleError(e) { @@ -4838,7 +3854,6 @@ var MediaElementPlayer = function () { play.style.display = 'none'; } - // Tell user that the file cannot be played if (t.options.error) { t.options.error(e); } @@ -4860,10 +3875,8 @@ var MediaElementPlayer = function () { t.height = height; } - // check stretching modes switch (t.options.stretching) { case 'fill': - // The 'fill' effect only makes sense on video; for audio we will set the dimensions if (t.isVideo) { t.setFillMode(); } else { @@ -4876,7 +3889,7 @@ var MediaElementPlayer = function () { case 'none': t.setDimensions(t.width, t.height); break; - // This is the 'auto' mode + default: if (t.hasFluidMode() === true) { t.setResponsiveMode(); @@ -4891,8 +3904,7 @@ var MediaElementPlayer = function () { value: function hasFluidMode() { var t = this; - // detect 100% mode - use currentStyle for IE since css() doesn't return percentages - return t.height.toString().includes('%') || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; + return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; } }, { key: 'setResponsiveMode', @@ -4903,15 +3915,10 @@ var MediaElementPlayer = function () { var parentEl = void 0, el = t.container; - // traverse parents to find the closest visible one while (el) { try { - if (_window2.default.self !== _window2.default.top) { - if (_window2.default.frameElement !== null) { - return _window2.default.frameElement; - } else { - parentEl = _window2.default.frameElement.parentNode; - } + if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) { + return _window2.default.frameElement; } else { parentEl = el.parentElement; } @@ -4978,17 +3985,15 @@ var MediaElementPlayer = function () { parentWidth = parseFloat(parentStyles.width); if (t.isVideo) { - // Responsive video is based on width: 100% and height: 100% if (t.height === '100%') { - newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10); + newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10); } else { - newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10); + newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10); } } else { newHeight = nativeHeight; } - // If we were unable to compute newHeight, get the container height instead if (isNaN(newHeight)) { newHeight = parentHeight; } @@ -4999,21 +4004,16 @@ var MediaElementPlayer = function () { } if (newHeight && parentWidth) { - - // set outer container size t.container.style.width = parentWidth + 'px'; t.container.style.height = newHeight + 'px'; - // set native <video> or <audio> and shims t.node.style.width = '100%'; t.node.style.height = '100%'; - // if shim is ready, send the size to the embedded plugin if (t.isVideo && t.media.setSize) { t.media.setSize(parentWidth, newHeight); } - // set the layers var layerChildren = t.layers.childNodes; for (var i = 0, total = layerChildren.length; i < total; i++) { layerChildren[i].style.width = '100%'; @@ -5026,11 +4026,13 @@ var MediaElementPlayer = function () { value: function setFillMode() { var t = this; - var parent = void 0; + var parent = void 0, + isIframe = false; try { if (_window2.default.self !== _window2.default.top) { - parent = _window2.default.frameElement.parentNode; + isIframe = true; + parent = _window2.default.frameElement; } else { parent = t.outerContainer; } @@ -5040,7 +4042,6 @@ var MediaElementPlayer = function () { var parentStyles = getComputedStyle(parent); - // Remove the responsive attributes in the event they are there if (t.node.style.height !== 'none' && t.node.style.height !== t.height) { t.node.style.height = 'auto'; } @@ -5064,11 +4065,11 @@ var MediaElementPlayer = function () { } } - if (!parseFloat(parentStyles.width)) { + if (!isIframe && !parseFloat(parentStyles.width)) { parent.style.width = t.media.offsetWidth + 'px'; } - if (!parseFloat(parentStyles.height)) { + if (!isIframe && !parseFloat(parentStyles.height)) { parent.style.height = t.media.offsetHeight + 'px'; } @@ -5079,27 +4080,19 @@ var MediaElementPlayer = function () { t.setDimensions('100%', '100%'); - // This prevents an issue when displaying poster var poster = t.container.querySelector(t.options.classPrefix + 'poster img'); if (poster) { poster.style.display = ''; } - // calculate new width and height var targetElement = t.container.querySelectorAll('object, embed, iframe, video'), initHeight = t.height, initWidth = t.width, - - // scale to the target width - scaleX1 = parentWidth, + scaleX1 = parentWidth, scaleY1 = initHeight * parentWidth / initWidth, - - // scale to the target height - scaleX2 = initWidth * parentHeight / initHeight, + scaleX2 = initWidth * parentHeight / initHeight, scaleY2 = parentHeight, - - // now figure out which one we should use - bScaleOnWidth = scaleX2 > parentWidth === false, + bScaleOnWidth = scaleX2 > parentWidth === false, finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2), width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px', @@ -5121,8 +4114,8 @@ var MediaElementPlayer = function () { value: function setDimensions(width, height) { var t = this; - width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px'; - height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px'; + width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px'; + height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px'; t.container.style.width = width; t.container.style.height = height; @@ -5138,7 +4131,6 @@ var MediaElementPlayer = function () { value: function setControlsSize() { var t = this; - // skip calculation if hidden if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) { return; } @@ -5160,21 +4152,12 @@ var MediaElementPlayer = function () { siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1; - // Substract the width of the feature siblings from time rail var controlsWidth = parseFloat(t.controls.offsetWidth); t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px'; var event = (0, _general.createEvent)('controlsresize', t.container); t.container.dispatchEvent(event); } - - /** - * Add featured control element and cache its position in case features are reset - * - * @param {HTMLElement} element - * @param {String} key - */ - }, { key: 'addControlElement', value: function addControlElement(element, key) { @@ -5195,20 +4178,12 @@ var MediaElementPlayer = function () { } } } - - /** - * Append layer to manipulate `<iframe>` elements safely. - * - * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`. - */ - }, { key: 'createIframeLayer', value: function createIframeLayer() { - var t = this; - if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { + if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { var layer = _document2.default.createElement('div'), target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName); @@ -5235,7 +4210,7 @@ var MediaElementPlayer = function () { key: 'resetSize', value: function resetSize() { var t = this; - // webkit has trouble doing this without a delay + setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); @@ -5298,7 +4273,6 @@ var MediaElementPlayer = function () { }, { key: 'globalUnbind', value: function globalUnbind(events, callback) { - var t = this, doc = t.node ? t.node.ownerDocument : _document2.default; @@ -5325,7 +4299,6 @@ var MediaElementPlayer = function () { }, { key: 'buildposter', value: function buildposter(player, controls, layers, media) { - var t = this, poster = _document2.default.createElement('div'); @@ -5334,12 +4307,10 @@ var MediaElementPlayer = function () { var posterUrl = player.media.getAttribute('poster'); - // priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster) if (player.options.poster !== '') { posterUrl = player.options.poster; } - // second, try the real poster if (posterUrl) { t.setPoster(posterUrl); } else { @@ -5366,8 +4337,6 @@ var MediaElementPlayer = function () { if (player.options.showPosterWhenPaused) { media.addEventListener('pause', function () { - // To avoid displaying the poster when video ended, since it - // triggers a pause event as well if (!media.ended) { poster.style.display = ''; } @@ -5385,12 +4354,10 @@ var MediaElementPlayer = function () { var t = this, loading = _document2.default.createElement('div'), error = _document2.default.createElement('div'), - - // this needs to come last so it's on top - bigPlay = _document2.default.createElement('div'), + bigPlay = _document2.default.createElement('div'), buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering'); - loading.style.display = 'none'; // start out hidden + loading.style.display = 'none'; loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>'; layers.appendChild(loading); @@ -5403,8 +4370,6 @@ var MediaElementPlayer = function () { bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play'; bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>'); bigPlay.addEventListener('click', function () { - // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay - // started and immediately stopped the video if (t.options.clickToPlayPause) { var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'), @@ -5419,13 +4384,23 @@ var MediaElementPlayer = function () { button.setAttribute('aria-pressed', !!pressed); } }); + + bigPlay.addEventListener('keydown', function (e) { + var keyPressed = e.keyCode || e.which || 0; + + if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) { + var event = (0, _general.createEvent)('click', bigPlay); + bigPlay.dispatchEvent(event); + return false; + } + }); + layers.appendChild(bigPlay); - if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) { + if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) { bigPlay.style.display = 'none'; } - // show/hide big play button media.addEventListener('play', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; @@ -5434,7 +4409,6 @@ var MediaElementPlayer = function () { } error.style.display = 'none'; }); - media.addEventListener('playing', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; @@ -5443,7 +4417,6 @@ var MediaElementPlayer = function () { } error.style.display = 'none'; }); - media.addEventListener('seeking', function () { bigPlay.style.display = 'none'; loading.style.display = ''; @@ -5451,7 +4424,6 @@ var MediaElementPlayer = function () { buffer.style.display = ''; } }); - media.addEventListener('seeked', function () { bigPlay.style.display = media.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none'; loading.style.display = 'none'; @@ -5459,7 +4431,6 @@ var MediaElementPlayer = function () { buffer.style.display = ''; } }); - media.addEventListener('pause', function () { loading.style.display = 'none'; if (!_constants.IS_STOCK_ANDROID) { @@ -5469,7 +4440,6 @@ var MediaElementPlayer = function () { buffer.style.display = 'none'; } }); - media.addEventListener('waiting', function () { loading.style.display = ''; if (buffer) { @@ -5477,15 +4447,12 @@ var MediaElementPlayer = function () { } }); - // show/hide loading media.addEventListener('loadeddata', function () { loading.style.display = ''; if (buffer) { buffer.style.display = ''; } - // Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices - // (https://github.com/johndyer/mediaelement/issues/1305) if (_constants.IS_ANDROID) { media.canplayTimeout = setTimeout(function () { if (_document2.default.createEvent) { @@ -5501,11 +4468,10 @@ var MediaElementPlayer = function () { if (buffer) { buffer.style.display = 'none'; } - // Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice + clearTimeout(media.canplayTimeout); }); - // error handling media.addEventListener('error', function (e) { t._handleError(e); loading.style.display = 'none'; @@ -5533,7 +4499,6 @@ var MediaElementPlayer = function () { t.keyboardAction = true; }); - // listen for key presses t.globalBind('keydown', function (event) { var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'), target = t.media.closest('.' + t.options.classPrefix + 'container'); @@ -5541,7 +4506,6 @@ var MediaElementPlayer = function () { return t.onkeydown(player, media, event); }); - // check if someone clicked outside a player region, then kill its focus t.globalBind('click', function (event) { t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container'); }); @@ -5551,7 +4515,6 @@ var MediaElementPlayer = function () { value: function onkeydown(player, media, e) { if (player.hasFocus && player.options.enableKeyboard) { - // find a matching key for (var i = 0, total = player.options.keyActions.length; i < total; i++) { var keyAction = player.options.keyActions[i]; @@ -5572,7 +4535,6 @@ var MediaElementPlayer = function () { value: function play() { var t = this; - // only load if the current time is 0 to ensure proper playing if (t.media.getCurrentTime() <= 0) { t.load(); } @@ -5634,17 +4596,14 @@ var MediaElementPlayer = function () { } t.media.setSrc(src); - t.createIframeLayer(); } }, { key: 'remove', value: function remove() { - var t = this, rendererName = t.media.rendererName; - // Stop completely media playing if (!t.media.paused) { t.media.pause(); } @@ -5652,55 +4611,51 @@ var MediaElementPlayer = function () { var src = t.media.getSrc(); t.media.setSrc(''); - // invoke features cleanup for (var featureIndex in t.options.features) { var feature = t.options.features[featureIndex]; if (t['clean' + feature]) { try { t['clean' + feature](t); } catch (e) { - // @todo: report control error console.error('error cleaning ' + feature, e); } } } - // reset dimensions var nativeWidth = t.node.getAttribute('width'), nativeHeight = t.node.getAttribute('height'); + if (nativeWidth) { - if (nativeWidth.match('%') === null) { + if (nativeWidth.indexOf('%') === -1) { nativeWidth = nativeWidth + 'px'; } } else { nativeWidth = 'auto'; } + if (nativeHeight) { - if (nativeHeight.match('%') === null) { + if (nativeHeight.indexOf('%') === -1) { nativeHeight = nativeHeight + 'px'; } } else { nativeHeight = 'auto'; } + t.node.style.width = nativeWidth; t.node.style.height = nativeHeight; - // grab video and put it back in place if (!t.isDynamic) { (function () { t.node.setAttribute('controls', true); t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', '')); - // Remove `autoplay` (not worth bringing it back once player is destroyed) delete t.node.autoplay; - // Reintegrate file if it can be played if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') { t.node.setAttribute('src', src); } - // If <iframe>, remove overlay - if (rendererName.match(/iframe/i) !== null) { + if (~rendererName.indexOf('iframe')) { var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay'); layer.remove(); } @@ -5710,7 +4665,6 @@ var MediaElementPlayer = function () { t.container.parentNode.insertBefore(node, t.container); t.node.remove(); - // Add children if (t.mediaFiles) { for (var i = 0, total = t.mediaFiles.length; i < total; i++) { var source = _document2.default.createElement('source'); @@ -5735,7 +4689,6 @@ var MediaElementPlayer = function () { }); }; - // Load captions properly for (var _i3 = 0, _total3 = t.trackFiles.length; _i3 < _total3; _i3++) { _loop3(_i3, _total3); } @@ -5753,8 +4706,6 @@ var MediaElementPlayer = function () { t.media.destroy(); } - // Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to - // pause a non existent Flash API. delete _mejs2.default.players[t.id]; if (_typeof(t.container) === 'object') { @@ -5775,8 +4726,6 @@ _window2.default.MediaElementPlayer = MediaElementPlayer; exports.default = MediaElementPlayer; -// turn into plugin - (function ($) { if (typeof $ !== 'undefined') { @@ -5798,7 +4747,6 @@ exports.default = MediaElementPlayer; }; $(_document2.default).ready(function () { - // auto enable using JSON attribute $('.' + config.classPrefix + 'player').mediaelementplayer(); }); } @@ -5811,10 +4759,6 @@ var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); @@ -5827,99 +4771,28 @@ var _media = _dereq_(26); var _constants = _dereq_(23); +var _dom = _dereq_(24); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native M(PEG)-Dash renderer - * - * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers. - * It relies on HTML5 video and MediaSource Extensions for playback. - * This renderer integrates new events associated with mpd files. - * @see https://github.com/Dash-Industry-Forum/dash.js - * - */ var NativeDash = { - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an DASH source - * - * @param {Object} settings - an object with settings needed to load an DASH player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeDash.isLoaded) { - NativeDash.createInstance(settings); - } else { - NativeDash.loadScript(settings); - NativeDash.creationQueue.push(settings); - } - }, - /** - * Load dash.mediaplayer.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an DASH player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof dashjs !== 'undefined') { - NativeDash.createInstance(settings); - } else if (!NativeDash.isScriptLoaded) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeDash.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - - NativeDash.isScriptLoaded = true; - } - }, - - /** - * Process queue of DASH player creation - * - */ - mediaReady: function mediaReady() { - - NativeDash.isLoaded = true; - NativeDash.isScriptLoaded = true; + NativeDash._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js'; - while (NativeDash.creationQueue.length > 0) { - var settings = NativeDash.creationQueue.pop(); - NativeDash.createInstance(settings); + NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); + NativeDash.promise.then(function () { + NativeDash._createPlayer(settings); + }); } }, - /** - * Create a new instance of DASH player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate DASH object - */ - createInstance: function createInstance(settings) { - + _createPlayer: function _createPlayer(settings) { var player = dashjs.MediaPlayer().create(); _window2.default['__ready__' + settings.id](player); } @@ -5927,33 +4800,18 @@ var NativeDash = { var DashNativeRenderer = { name: 'native_dash', - options: { prefix: 'native_dash', dash: { - // Special config: used to set the local path/URL of dash.js player library - path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js', + path: 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js', debug: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['application/dash+xml'].includes(type); + return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -5976,10 +4834,9 @@ var DashNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (dashPlayer !== null) { if (propName === 'src') { - dashPlayer.attachSource(value); if (autoplay) { node.play(); @@ -5996,7 +4853,6 @@ var DashNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all M-Dash events _window2.default['__ready__' + id] = function (_dashPlayer) { mediaElement.dashPlayer = dashPlayer = _dashPlayer; @@ -6008,7 +4864,6 @@ var DashNativeRenderer = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), dashEvents = dashjs.MediaPlayer.events, assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { dashPlayer.initialize(node, node.src, false); } @@ -6023,13 +4878,6 @@ var DashNativeRenderer = { assignEvents(events[_i]); } - /** - * Custom M(PEG)-DASH events - * - * These events can be attached to the original node using addEventListener and the name of the event, - * not using dashjs.MediaPlayer.events object - * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html - */ var assignMdashEvents = function assignMdashEvents(e) { var event = (0, _general.createEvent)(e.type, node); event.data = e; @@ -6062,12 +4910,11 @@ var DashNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - NativeDash.prepareSettings({ + NativeDash.load({ options: options.dash, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -6092,18 +4939,13 @@ var DashNativeRenderer = { } }; -/** - * Register Native M(PEG)-Dash type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.mpd') ? 'application/dash+xml' : null; + return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; }); _renderer.renderer.add(DashNativeRenderer); -},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){ +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -6139,30 +4981,9 @@ var _media = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Shim that falls back to Flash if a media type is not supported. - * - * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE), - * will play using Flash. - */ - -/** - * Core detector, plugins are added below - * - */ var PluginDetector = exports.PluginDetector = { - /** - * Cached version numbers - * @type {Array} - */ plugins: [], - /** - * Test a plugin version number - * @param {String} plugin - In this scenario 'flash' will be tested - * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision) - * @return {Boolean} - */ hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; @@ -6170,36 +4991,16 @@ var PluginDetector = exports.PluginDetector = { return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, - /** - * Detect plugin and store its version number - * - * @see PluginDetector.detectPlugin - * @param {String} p - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - */ addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, - /** - * Obtain version number from the mime-type (all but IE) or ActiveX (IE) - * - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - * @return {int[]} - */ detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; - // Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { @@ -6208,7 +5009,6 @@ var PluginDetector = exports.PluginDetector = { version[i] = parseInt(version[i].match(/\d+/), 10); } } - // Internet Explorer / ActiveX } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); @@ -6223,12 +5023,7 @@ var PluginDetector = exports.PluginDetector = { } }; -/** - * Add Flash detection - * - */ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { - // adapted from SWFObject var version = [], d = ax.GetVariable("$version"); @@ -6240,34 +5035,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl }); var FlashMediaElementRenderer = { - - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var flash = {}; - // store main variable flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; - - // insert data flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; - // mediaElements for get/set var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - - // add to flash state that we will store flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -6279,7 +5059,6 @@ var FlashMediaElementRenderer = { if (flash.flashApi['get_' + propName] !== undefined) { var value = flash.flashApi['get_' + propName](); - // special case for buffered to conform to HTML5's newest if (propName === 'buffered') { return { start: function start() { @@ -6306,11 +5085,9 @@ var FlashMediaElementRenderer = { value = (0, _media.absolutizeUrl)(value); } - // send value to Flash if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { flash.flashApi['set_' + propName](value); } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'set', propName: propName, @@ -6324,16 +5101,10 @@ var FlashMediaElementRenderer = { assignGettersSetters(props[i]); } - // add mediaElements for native methods var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement flash[methodName] = function () { - if (flash.flashApi !== null) { - - // send call up to Flash ExternalInterface API if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); @@ -6344,7 +5115,6 @@ var FlashMediaElementRenderer = { } } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'call', methodName: methodName @@ -6357,7 +5127,6 @@ var FlashMediaElementRenderer = { assignMethods(methods[_i]); } - // give initial events like in others renderers var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { @@ -6365,16 +5134,13 @@ var FlashMediaElementRenderer = { mediaElement.dispatchEvent(event); } - // add a ready method that Flash can call to _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); - // do call stack if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { - var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { @@ -6390,19 +5156,15 @@ var FlashMediaElementRenderer = { }; _window2.default['__event__' + flash.id] = function (eventName, message) { - var event = (0, _general.createEvent)(eventName, flash); event.message = message || ''; - // send event from Flash up to the mediaElement flash.mediaElement.dispatchEvent(event); }; - // insert Flash object flash.flashWrapper = _document2.default.createElement('div'); - // If the access script flag does not have any of the valid values, set to `sameDomain` by default - if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) { + if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } @@ -6492,55 +5254,42 @@ var FlashMediaElementRenderer = { var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { - - /** - * Register media type based on URL structure if Flash is detected - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); if (url.startsWith('rtmp')) { - if (url.includes('.mp3')) { + if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } - } else if (url.includes('.oga') || url.includes('.ogg')) { + } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; - } else if (url.includes('.m3u8')) { + } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; - } else if (url.includes('.mpd')) { + } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; - } else if (url.includes('.flv')) { + } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); - // VIDEO var FlashMediaElementVideoRenderer = { name: 'flash_video', - options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, - // start query parameter sent to server for pseudo-streaming + pseudoStreamingStartQueryParam: 'start', - // pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV) + pseudoStreamingType: 'byte' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase()); + return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -6548,88 +5297,60 @@ if (hasFlash) { }; _renderer.renderer.add(FlashMediaElementVideoRenderer); - // HLS var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', - options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()); + return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); - // M(PEG)-DASH var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', - options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/dash+xml'].includes(type.toLowerCase()); + return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); - // AUDIO var FlashMediaElementAudioRenderer = { name: 'flash_audio', - options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/mp3'].includes(type.toLowerCase()); + return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); - // AUDIO - ogg var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', - options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase()); + return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -6644,10 +5365,6 @@ var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); @@ -6660,100 +5377,28 @@ var _constants = _dereq_(23); var _media = _dereq_(26); +var _dom = _dereq_(24); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native FLV renderer - * - * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js. - * It relies on HTML5 video and MediaSource Extensions for playback. - * Currently, it can only play files with the same origin. - * - * @see https://github.com/Bilibili/flv.js - * - */ var NativeFlv = { - /** - * @type {Boolean} - */ - isMediaStarted: false, - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an FLV source - * @param {Object} settings - an object with settings needed to load an FLV player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeFlv.isLoaded) { - NativeFlv.createInstance(settings); - } else { - NativeFlv.loadScript(settings); - NativeFlv.creationQueue.push(settings); - } - }, - /** - * Load flv.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an FLV player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof flvjs !== 'undefined') { - NativeFlv.createInstance(settings); - } else if (!NativeFlv.isMediaStarted) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeFlv.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - NativeFlv.isMediaStarted = true; - } - }, - - /** - * Process queue of FLV player creation - * - */ - mediaReady: function mediaReady() { - NativeFlv.isLoaded = true; - NativeFlv.isMediaLoaded = true; + NativeFlv._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js'; - while (NativeFlv.creationQueue.length > 0) { - var settings = NativeFlv.creationQueue.pop(); - NativeFlv.createInstance(settings); + NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); + NativeFlv.promise.then(function () { + NativeFlv._createPlayer(settings); + }); } }, - /** - * Create a new instance of FLV player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate FLV object - */ - createInstance: function createInstance(settings) { + _createPlayer: function _createPlayer(settings) { var player = flvjs.createPlayer(settings.options); _window2.default['__ready__' + settings.id](player); } @@ -6761,35 +5406,19 @@ var NativeFlv = { var FlvNativeRenderer = { name: 'native_flv', - options: { prefix: 'native_flv', flv: { - // Special config: used to set the local path/URL of flv.js library - path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js', - // To modify more elements from FLV player, - // see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config + path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js', + cors: true } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type); + return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -6810,7 +5439,7 @@ var FlvNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (flvPlayer !== null) { node[propName] = value; @@ -6829,16 +5458,13 @@ var FlvNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all FLV events _window2.default['__ready__' + id] = function (_flvPlayer) { mediaElement.flvPlayer = flvPlayer = _flvPlayer; var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { - flvPlayer.unload(); flvPlayer.detachMediaElement(); flvPlayer.attachMediaElement(node); @@ -6871,16 +5497,14 @@ var FlvNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - // Options that cannot be overridden options.flv.type = 'flv'; options.flv.url = node.getAttribute('src'); - NativeFlv.prepareSettings({ + NativeFlv.load({ options: options.flv, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -6913,28 +5537,19 @@ var FlvNativeRenderer = { } }; -/** - * Register Native FLV type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.flv') ? 'video/flv' : null; + return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; }); _renderer.renderer.add(FlvNativeRenderer); -},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){ +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); @@ -6947,101 +5562,28 @@ var _constants = _dereq_(23); var _media = _dereq_(26); +var _dom = _dereq_(24); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native HLS renderer - * - * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client. - * It relies on HTML5 video and MediaSource Extensions for playback. - * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does. - * @see https://github.com/dailymotion/hls.js - * - */ var NativeHls = { - /** - * @type {Boolean} - */ - isMediaStarted: false, - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an HLS source - * - * @param {Object} settings - an object with settings needed to load an HLS player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeHls.isLoaded) { - NativeHls.createInstance(settings); - } else { - NativeHls.loadScript(settings); - NativeHls.creationQueue.push(settings); - } - }, - /** - * Load hls.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an HLS player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof Hls !== 'undefined') { - NativeHls.createInstance(settings); - } else if (!NativeHls.isMediaStarted) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeHls.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - NativeHls.isMediaStarted = true; - } - }, - - /** - * Process queue of HLS player creation - * - */ - mediaReady: function mediaReady() { - NativeHls.isLoaded = true; - NativeHls.isMediaLoaded = true; + NativeHls._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js'; - while (NativeHls.creationQueue.length > 0) { - var settings = NativeHls.creationQueue.pop(); - NativeHls.createInstance(settings); + NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); + NativeHls.promise.then(function () { + NativeHls._createPlayer(settings); + }); } }, - /** - * Create a new instance of HLS player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate HLS object - * @return {Hls} - */ - createInstance: function createInstance(settings) { + _createPlayer: function _createPlayer(settings) { var player = new Hls(settings.options); _window2.default['__ready__' + settings.id](player); return player; @@ -7050,37 +5592,20 @@ var NativeHls = { var HlsNativeRenderer = { name: 'native_hls', - options: { prefix: 'native_hls', hls: { - // Special config: used to set the local path/URL of hls.js library - path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js', - // To modify more elements from hls.js, - // see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning + path: 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js', + autoStartLoad: false, debug: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()); + return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -7095,7 +5620,6 @@ var HlsNativeRenderer = { options = Object.assign(options, mediaElement.options); options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; - // WRAPPERS for PROPs var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -7105,14 +5629,14 @@ var HlsNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (hlsPlayer !== null) { node[propName] = value; if (propName === 'src') { hlsPlayer.destroy(); - hlsPlayer = NativeHls.createInstance({ + hlsPlayer = NativeHls._createPlayer({ options: options.hls, id: id }); @@ -7129,7 +5653,6 @@ var HlsNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all HLS events _window2.default['__ready__' + id] = function (_hlsPlayer) { mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; @@ -7137,9 +5660,7 @@ var HlsNativeRenderer = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), hlsEvents = Hls.Events, assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { - var url = mediaElement.originalNode.src; hlsPlayer.detachMedia(); hlsPlayer.loadSource(url); @@ -7147,7 +5668,6 @@ var HlsNativeRenderer = { } node.addEventListener(eventName, function (e) { - // copy event var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }); @@ -7157,16 +5677,6 @@ var HlsNativeRenderer = { assignEvents(events[_i]); } - /** - * Custom HLS events - * - * These events can be attached to the original node using addEventListener and the name of the event, - * not using Hls.Events object - * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js - * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js - * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events - * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors - */ var recoverDecodingErrorDate = void 0, recoverSwapAudioCodecDate = void 0; var assignHlsEvents = function assignHlsEvents(e, data) { @@ -7177,7 +5687,6 @@ var HlsNativeRenderer = { if (e === 'hlsError') { console.warn(e, data); - // borrowed from http://dailymotion.github.io/hls.js/demo/ if (data.fatal) { switch (data.type) { case 'mediaError': @@ -7200,7 +5709,6 @@ var HlsNativeRenderer = { default: hlsPlayer.destroy(); break; - } } } @@ -7242,12 +5750,11 @@ var HlsNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - NativeHls.prepareSettings({ + NativeHls.load({ options: options.hls, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -7284,18 +5791,13 @@ var HlsNativeRenderer = { } }; -/** - * Register Native HLS type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.m3u8') ? 'application/x-mpegURL' : null; + return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; }); _renderer.renderer.add(HlsNativeRenderer); -},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){ +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); @@ -7318,54 +5820,31 @@ var _constants = _dereq_(23); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native HTML5 Renderer - * - * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement. - */ var HtmlMediaElement = { - name: 'html5', - options: { prefix: 'html5' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {String} - */ canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); - // Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS; - // also consider URLs that might have obfuscated URLs - if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { + if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { - return mediaElement.canPlayType(type).replace(/no/, ''); + return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ + create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var node = null; - // CREATE NODE if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); @@ -7375,7 +5854,6 @@ var HtmlMediaElement = { node.setAttribute('id', id); - // WRAPPERS for PROPs var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -7385,7 +5863,7 @@ var HtmlMediaElement = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; @@ -7397,10 +5875,7 @@ var HtmlMediaElement = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), assignEvents = function assignEvents(eventName) { - node.addEventListener(eventName, function (e) { - // copy event - var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }); @@ -7410,7 +5885,6 @@ var HtmlMediaElement = { assignEvents(events[_i]); } - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -7472,38 +5946,18 @@ var _general = _dereq_(25); var _media = _dereq_(26); +var _dom = _dereq_(24); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * YouTube renderer - * - * Uses <iframe> approach and uses YouTube API to manipulate it. - * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event, - * so it doesn't work - not sure if Google problem or not. - * @see https://developers.google.com/youtube/iframe_api_reference - */ var YouTubeApi = { - /** - * @type {Boolean} - */ isIframeStarted: false, - /** - * @type {Boolean} - */ + isIframeLoaded: false, - /** - * @type {Array} - */ + iframeQueue: [], - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ enqueueIframe: function enqueueIframe(settings) { - - // Check whether YouTube API is already loaded. YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; if (YouTubeApi.isLoaded) { @@ -7514,24 +5968,13 @@ var YouTubeApi = { } }, - /** - * Load YouTube API script on the header of the document - * - */ loadIframeApi: function loadIframeApi() { if (!YouTubeApi.isIframeStarted) { - var tag = _document2.default.createElement('script'); - tag.src = '//www.youtube.com/player_api'; - var firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + (0, _dom.loadScript)('https://www.youtube.com/player_api'); YouTubeApi.isIframeStarted = true; } }, - /** - * Process queue of YouTube <iframe> element creation - * - */ iFrameReady: function iFrameReady() { YouTubeApi.isLoaded = true; @@ -7543,35 +5986,17 @@ var YouTubeApi = { } }, - /** - * Create a new instance of YouTube API player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ createIframe: function createIframe(settings) { return new YT.Player(settings.containerId, settings); }, - /** - * Extract ID from YouTube's URL to be loaded through API - * Valid URL format(s): - * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - http://www.youtube.com/v/VIDEO_ID?version=3 - * - http://youtu.be/Djd6tPrxc08 - * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - * @param {String} url - * @return {string} - */ getYouTubeId: function getYouTubeId(url) { var youTubeId = ''; if (url.indexOf('?') > 0) { - // assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 youTubeId = YouTubeApi.getYouTubeIdFromParam(url); - // if it's http://www.youtube.com/v/VIDEO_ID?version=3 if (youTubeId === '') { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } @@ -7582,12 +6007,6 @@ var YouTubeApi = { return youTubeId; }, - /** - * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - * @param {String} url - * @returns {string} - */ getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { @@ -7610,13 +6029,6 @@ var YouTubeApi = { return youTubeId; }, - /** - * Get ID from URL with formats - * - http://www.youtube.com/v/VIDEO_ID?version=3 - * - http://youtu.be/Djd6tPrxc08 - * @param {String} url - * @return {?String} - */ getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { @@ -7628,13 +6040,8 @@ var YouTubeApi = { return url.substring(url.lastIndexOf('/') + 1); }, - /** - * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3 - * @param {String} url - * @return {?String} - */ getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { - if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) { + if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { return url; } @@ -7649,12 +6056,7 @@ var YouTubeIframeRenderer = { options: { prefix: 'youtube_iframe', - /** - * Custom configuration for YouTube player - * - * @see https://developers.google.com/youtube/player_parameters#Parameters - * @type {Object} - */ + youtube: { autoplay: 0, controls: 0, @@ -7667,32 +6069,17 @@ var YouTubeIframeRenderer = { showinfo: 0, start: 0, iv_load_policy: 3, - // custom to inject `-nocookie` element in URL + nocookie: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/youtube', 'video/x-youtube'].includes(type); + return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { - // API objects var youtube = {}, apiStack = [], readyState = 4; @@ -7707,39 +6094,29 @@ var YouTubeIframeRenderer = { youtube.id = mediaElement.id + '_' + options.prefix; youtube.mediaElement = mediaElement; - // wrappers for get/set var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - // add to flash state that we will store - var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['get' + capName] = function () { if (youTubeApi !== null) { var value = null; - // figure out how to get youtube dta here switch (propName) { case 'currentTime': return youTubeApi.getCurrentTime(); - case 'duration': return youTubeApi.getDuration(); - case 'volume': volume = youTubeApi.getVolume() / 100; return volume; - case 'paused': return paused; - case 'ended': return ended; - case 'muted': return youTubeApi.isMuted(); - case 'buffered': var percentLoaded = youTubeApi.getVideoLoadedFraction(), duration = youTubeApi.getDuration(); @@ -7754,7 +6131,6 @@ var YouTubeIframeRenderer = { }; case 'src': return youTubeApi.getVideoUrl(); - case 'readyState': return readyState; } @@ -7766,12 +6142,8 @@ var YouTubeIframeRenderer = { }; youtube['set' + capName] = function (value) { - if (youTubeApi !== null) { - - // do something switch (propName) { - case 'src': var url = typeof value === 'string' ? value : value[0].src, _videoId = YouTubeApi.getYouTubeId(url); @@ -7782,11 +6154,9 @@ var YouTubeIframeRenderer = { youTubeApi.cueVideoById(_videoId); } break; - case 'currentTime': youTubeApi.seekTo(value); break; - case 'muted': if (value) { youTubeApi.mute(); @@ -7798,7 +6168,6 @@ var YouTubeIframeRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'volume': volume = value; youTubeApi.setVolume(value * 100); @@ -7811,13 +6180,11 @@ var YouTubeIframeRenderer = { var event = (0, _general.createEvent)('canplay', youtube); mediaElement.dispatchEvent(event); break; - default: break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -7827,16 +6194,10 @@ var YouTubeIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement youtube[methodName] = function () { - if (youTubeApi !== null) { - - // DO method switch (methodName) { case 'play': paused = false; @@ -7846,7 +6207,6 @@ var YouTubeIframeRenderer = { return youTubeApi.pauseVideo(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -7858,11 +6218,9 @@ var YouTubeIframeRenderer = { assignMethods(methods[_i]); } - // CREATE YouTube var youtubeContainer = _document2.default.createElement('div'); youtubeContainer.id = youtube.id; - // If `nocookie` feature was enabled, modify original URL if (youtube.options.youtube.nocookie) { mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src)); } @@ -7871,8 +6229,8 @@ var YouTubeIframeRenderer = { mediaElement.originalNode.style.display = 'none'; var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', - height = isAudio ? '0' : mediaElement.originalNode.height, - width = isAudio ? '0' : mediaElement.originalNode.width, + height = isAudio ? '1' : mediaElement.originalNode.height, + width = isAudio ? '1' : mediaElement.originalNode.width, videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), youtubeSettings = { id: youtube.id, @@ -7901,7 +6259,6 @@ var YouTubeIframeRenderer = { ended: false }; - // do call stack if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { @@ -7918,7 +6275,6 @@ var YouTubeIframeRenderer = { } } - // a few more events youTubeIframe = youTubeApi.getIframe(); var events = ['mouseover', 'mouseout'], @@ -7932,7 +6288,6 @@ var YouTubeIframeRenderer = { youTubeIframe.addEventListener(events[_i3], assignEvents, false); } - // send init events var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay']; for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { @@ -7941,62 +6296,43 @@ var YouTubeIframeRenderer = { } }, onStateChange: function onStateChange(e) { - - // translate events var events = []; switch (e.data) { case -1: - // not started events = ['loadedmetadata']; paused = true; ended = false; break; - case 0: - // YT.PlayerState.ENDED events = ['ended']; paused = false; ended = true; - youtube.stopInterval(); break; - case 1: - // YT.PlayerState.PLAYING events = ['play', 'playing']; paused = false; ended = false; - youtube.startInterval(); - break; - case 2: - // YT.PlayerState.PAUSED events = ['pause']; paused = true; ended = false; - youtube.stopInterval(); break; - case 3: - // YT.PlayerState.BUFFERING events = ['progress']; ended = false; - break; case 5: - // YT.PlayerState.CUED events = ['loadeddata', 'loadedmetadata', 'canplay']; paused = true; ended = false; - break; } - // send events up for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { var event = (0, _general.createEvent)(events[_i5], youtube); mediaElement.dispatchEvent(event); @@ -8010,12 +6346,10 @@ var YouTubeIframeRenderer = { } }; - // The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio if (isAudio) { youtubeSettings.playerVars.playsinline = 1; } - // send it off for async loading and creation YouTubeApi.enqueueIframe(youtubeSettings); youtube.onEvent = function (eventName, player, _youTubeState) { @@ -8047,7 +6381,6 @@ var YouTubeIframeRenderer = { youtube.interval = null; youtube.startInterval = function () { - // create timer youtube.interval = setInterval(function () { var event = (0, _general.createEvent)('timeupdate', youtube); @@ -8071,14 +6404,14 @@ if (_window2.default.postMessage && _typeof(_window2.default.addEventListener)) }; _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null; + return (/\/\/(www\.youtube|youtu\.be)/i.test(url) ? 'video/x-youtube' : null + ); }); _renderer.renderer.add(YouTubeIframeRenderer); } -},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){ +},{"2":2,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8102,18 +6435,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); - -var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null; -var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null; +var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA); +var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA); var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD; -var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null; -var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null; +var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); +var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); -var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null; -var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null; -var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME; -var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null; - +var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); +var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); +var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; +var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), @@ -8132,7 +6463,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { return !!supports; }(); -// for IE var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; @@ -8140,28 +6470,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } -// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge) -var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null; +var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA); -// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails) - -// iOS var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; -// W3C var hasNativeFullscreen = video.requestFullscreen !== undefined; -// OS X 10.5 can't do this even if it says it can :( -if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) { +if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } -// webkit/firefox/IE11+ var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; - var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; @@ -8169,7 +6491,6 @@ var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; -// Enabled? if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { @@ -8181,7 +6502,6 @@ if (IS_CHROME) { } if (hasTrueNativeFullScreen) { - if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { @@ -8201,7 +6521,6 @@ if (hasTrueNativeFullScreen) { }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { - if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { @@ -8230,7 +6549,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; - exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; @@ -8249,7 +6567,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; - _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; @@ -8266,15 +6583,11 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"6":6}],24:[function(_dereq_,module,exports){ 'use strict'; -/** - * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript, - * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js) - */ - Object.defineProperty(exports, "__esModule", { value: true }); exports.removeClass = exports.addClass = exports.hasClass = undefined; +exports.loadScript = loadScript; exports.offset = offset; exports.toggleClass = toggleClass; exports.fadeOut = fadeOut; @@ -8297,6 +6610,52 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function TinyPromise(handler) { + var thens = []; + var state = -1; + var result = void 0; + var then = void 0; + + function done(value) { + for (result = value; then = thens.shift();) { + then[state] && then[state](result); + } + } + + handler(function (value) { + return done(value, state = 0); + }, function (value) { + return done(value, state = 1); + }); + + return { + then: function then() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + ~state ? args[state] && args[state](result) : thens.push(args); + } + }; +} + +function loadScript(url) { + return TinyPromise(function (resolve, reject) { + var script = _document2.default.createElement('script'); + script.src = url; + script.async = true; + script.onload = function () { + script.remove(); + resolve(); + }; + script.onerror = function () { + script.remove(); + reject(); + }; + _document2.default.head.appendChild(script); + }); +} + function offset(el) { var rect = el.getBoundingClientRect(), scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, @@ -8340,7 +6699,6 @@ function toggleClass(el, className) { hasClass(el, className) ? removeClass(el, className) : addClass(el, className); } -// fade an element from the current state to full opacity in "duration" ms function fadeOut(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; @@ -8365,8 +6723,6 @@ function fadeOut(el) { }); } -// fade out an element from the current state to full transparency in "duration" ms -// display is the display style the element is assigned after the animation is done function fadeIn(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; @@ -8428,7 +6784,7 @@ function ajax(url, dataType, success, error) { break; } - if (!type.includes('application/x-www-form-urlencoded')) { + if (type !== 'application/x-www-form-urlencoded') { accept = type + ', */*; q=0.01'; } @@ -8436,19 +6792,14 @@ function ajax(url, dataType, success, error) { xhr.open('GET', url, true); xhr.setRequestHeader('Accept', accept); xhr.onreadystatechange = function () { - - // Ignore repeat invocations if (completed) { return; } if (xhr.readyState === 4) { if (xhr.status === 200) { - completed = true; - var data = void 0; - switch (dataType) { case 'json': data = JSON.parse(xhr.responseText); @@ -8460,7 +6811,6 @@ function ajax(url, dataType, success, error) { data = xhr.responseText; break; } - success(data); } else if (typeof error === 'function') { error(xhr.status); @@ -8483,6 +6833,7 @@ _mejs2.default.Utils.fadeOut = fadeOut; _mejs2.default.Utils.siblings = siblings; _mejs2.default.Utils.visible = visible; _mejs2.default.Utils.ajax = ajax; +_mejs2.default.Utils.loadScript = loadScript; },{"2":2,"3":3,"6":6}],25:[function(_dereq_,module,exports){ 'use strict'; @@ -8504,11 +6855,6 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * - * @param {String} input - * @return {string} - */ function escapeHTML(input) { if (typeof input !== 'string') { @@ -8527,7 +6873,6 @@ function escapeHTML(input) { }); } -// taken from underscore function debounce(func, wait) { var _this = this, _arguments = arguments; @@ -8563,28 +6908,13 @@ function debounce(func, wait) { }; } -/** - * Determine if an object contains any elements - * - * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object - * @param {Object} instance - * @return {Boolean} - */ function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } -/** - * Group a string of events into `document` (d) and `window` (w) events - * - * @param {String} events List of space separated events - * @param {String} id Namespace appended to events - * @return {{d: Array, w: Array}} - */ function splitEvents(events, id) { - // Global events var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; - // add player ID as an event namespace so it's easier to unbind them all later + var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); @@ -8602,26 +6932,20 @@ function splitEvents(events, id) { return ret; } -/** - * - * @param {string} eventName - * @param {*} target - * @return {Event|Object} - */ function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } - var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/), + var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { - eventName = eventFrags[0]; - detail.namespace = eventFrags[1]; + eventName = eventFrags[1]; + detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { @@ -8629,23 +6953,11 @@ function createEvent(eventName, target) { }); } -/** - * Returns true if targetNode appears after sourceNode in the dom. - * @param {HTMLElement} sourceNode - the source node for comparison - * @param {HTMLElement} targetNode - the node to compare against sourceNode - */ function isNodeAfter(sourceNode, targetNode) { - return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING - ); + return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } -/** - * Determines if a value is a string - * - * @param {*} value to check - * @returns {Boolean} True if a value is a string - */ function isString(value) { return typeof value === 'string'; } @@ -8683,11 +6995,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var typeChecks = exports.typeChecks = []; -/** - * - * @param {String} url - * @return {String} - */ function absolutizeUrl(url) { if (typeof url !== 'string') { @@ -8699,42 +7006,21 @@ function absolutizeUrl(url) { return el.firstChild.href; } -/** - * Get the format of a specific media, based on URL and additionally its mime type - * - * @param {String} url - * @param {String} type - * @return {String} - */ function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : getMimeFromType(type); } -/** - * Return the mime part of the type in case the attribute contains the codec - * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`) - * - * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element - * @param {String} type - * @return {String} - */ function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } - return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type; + return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } -/** - * Get the type of media based on URL structure - * - * @param {String} url - * @return {String} - */ function getTypeFromFile(url) { if (typeof url !== 'string') { @@ -8749,17 +7035,15 @@ function getTypeFromFile(url) { } } - // the do standard extension check var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; - // Obtain correct MIME types if (normalizedExt) { - if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) { + if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; - } else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) { + } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } @@ -8767,12 +7051,6 @@ function getTypeFromFile(url) { return mime; } -/** - * Get media file extension from URL - * - * @param {String} url - * @return {String} - */ function getExtension(url) { if (typeof url !== 'string') { @@ -8781,16 +7059,9 @@ function getExtension(url) { var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); - - return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; + return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } -/** - * Get standard extension of a media file - * - * @param {String} extension - * @return {String} - */ function normalizeExtension(extension) { if (typeof extension !== 'string') { @@ -8832,15 +7103,6 @@ var _document2 = _interopRequireDefault(_document); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Polyfill - * - * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list - * of polyfills provided by Babel. - */ - -// ChildNode.remove polyfill -// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { @@ -8857,11 +7119,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); -// CustomEvent polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent (function () { - if (typeof window.CustomEvent === "function") return false; + if (typeof window.CustomEvent === 'function') { + return false; + } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; @@ -8871,18 +7133,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de } CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; })(); -// Object.assign polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill if (typeof Object.assign !== 'function') { Object.assign = function (target) { - // .length of function is 2 if (target === null || target === undefined) { - // TypeError if undefined or null throw new TypeError('Cannot convert undefined or null to object'); } @@ -8892,9 +7149,7 @@ if (typeof Object.assign !== 'function') { var nextSource = arguments[index]; if (nextSource !== null) { - // Skip over if undefined or null for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } @@ -8905,76 +7160,6 @@ if (typeof Object.assign !== 'function') { }; } -// Array.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill -if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function value(searchElement, fromIndex) { - - // 1. const O be ? ToObject(this value). - if (this === null || this === undefined) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. const len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If len is 0, return false. - if (len === 0) { - return false; - } - - // 4. const n be ? ToInteger(fromIndex). - // (If fromIndex is undefined, this step produces the value 0.) - var n = fromIndex | 0; - - // 5. If n ≥ 0, then - // a. const k be n. - // 6. Else n < 0, - // a. const k be len + n. - // b. If k < 0, const k be 0. - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 7. Repeat, while k < len - while (k < len) { - // a. const elementK be the result of ? Get(O, ! ToString(k)). - // b. If SameValueZero(searchElement, elementK) is true, return true. - // c. Increase k by 1. - // NOTE: === provides the correct "SameValueZero" comparison needed here. - if (o[k] === searchElement) { - return true; - } - k++; - } - - // 8. Return false - return false; - } - }); -} - -// String.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes -if (!String.prototype.includes) { - String.prototype.includes = function (search, start) { - 'use strict'; - - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; -} - -// String.startsWith polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; @@ -8982,8 +7167,6 @@ if (!String.prototype.startsWith) { }; } -// Element.matches polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -8993,8 +7176,6 @@ if (!Element.prototype.matches) { }; } -// Element.closest polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -9008,13 +7189,6 @@ if (window.Element && !Element.prototype.closest) { }; } -// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ -// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - -// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel - -// MIT license - (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; @@ -9038,12 +7212,10 @@ if (window.Element && !Element.prototype.closest) { }; })(); -// Javascript workaround for FF iframe `getComputedStyle` bug -// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009 if (/firefox/i.test(navigator.userAgent)) { - window.oldGetComputedStyle = window.getComputedStyle; + window.mediaElementJsOldGetComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { - var t = window.oldGetComputedStyle(el, pseudoEl); + var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } @@ -9066,27 +7238,11 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976) - * - * @param {Number} fps - Frames per second - * @return {Boolean} - */ function isDropFrame() { var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25; return !(fps % 1 === 0); } -/** - * Format a numeric time in format '00:00:00' - * - * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero - * @param {Boolean} forceHours - * @param {Boolean} showFrameCount - * @param {Number} fps - Frames per second - * @param {Number} secondsDecimalLength - Number of decimals to display if any - * @return {String} - */ function secondsToTimeCode(time) { var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; @@ -9097,8 +7253,7 @@ function secondsToTimeCode(time) { time = !time || typeof time !== 'number' || time < 0 ? 0 : time; var dropFrames = Math.round(fps * 0.066666), - // Number of drop frames to drop on the minute marks (6%) - timeBase = Math.round(fps), + timeBase = Math.round(fps), framesPer24Hours = Math.round(fps * 3600) * 24, framesPer10Minutes = Math.round(fps * 600), frameSep = isDropFrame(fps) ? ';' : ':', @@ -9159,13 +7314,6 @@ function secondsToTimeCode(time) { return result; } -/** - * Convert a '00:00:00' time string into seconds - * - * @param {String} time - * @param {Number} fps - Frames per second - * @return {Number} - */ function timeCodeToSeconds(time) { var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25; @@ -9178,7 +7326,7 @@ function timeCodeToSeconds(time) { time = time.replace(';', ':'); } - if (!time.match(/\d{2}(\:\d{2}){0,3}/)) { + if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) { throw new TypeError('Time code must have the format `00:00:00`'); } @@ -9191,8 +7339,7 @@ function timeCodeToSeconds(time) { frames = 0, totalMinutes = 0, dropFrames = Math.round(fps * 0.066666), - // Number of drop frames to drop on the minute marks (6%) - timeBase = Math.round(fps), + timeBase = Math.round(fps), hFrames = timeBase * 3600, mFrames = timeBase * 60; @@ -9228,15 +7375,6 @@ function timeCodeToSeconds(time) { return parseFloat(output.toFixed(3)); } -/** - * Calculate the time format to use - * - * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media - * duration. Format: 'hh:mm:ss:ff' - * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero - * @param {Object} options - * @param {Number} fps - Frames per second - */ function calculateTimeFormat(time, options) { var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25; @@ -9257,7 +7395,7 @@ function calculateTimeFormat(time, options) { required = false; for (var i = 0, len = lis.length; i < len; i++) { - if (format.indexOf(lis[i][1]) > -1) { + if (~format.indexOf(lis[i][1])) { required = true; } else if (required) { var hasNextValue = false; @@ -9286,12 +7424,6 @@ function calculateTimeFormat(time, options) { options.currentTimeFormat = format; } -/** - * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds - * - * @param {String} SMPTE - * @return {Number} - */ function convertSMPTEtoSeconds(SMPTE) { if (typeof SMPTE !== 'string') { @@ -9300,7 +7432,7 @@ function convertSMPTEtoSeconds(SMPTE) { SMPTE = SMPTE.replace(',', '.'); - var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0; + var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0; var secs = 0, multiplier = 1; diff --git a/lib/mejs/mediaelement-and-player.min.js b/lib/mejs/mediaelement-and-player.min.js index f976b7414e625034da18a2bc767419006b442f70..3adfcf1ca84bee1b152868056c17c08e7cb9a66c 100644 --- a/lib/mejs/mediaelement-and-player.min.js +++ b/lib/mejs/mediaelement-and-player.min.js @@ -8,29 +8,5 @@ * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * - *//*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(25),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,25:25,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(25),m=a(26),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,25:25,26:26,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(23),o=d(n),p=a(25),q=a(24);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,a.detectFullscreenMode();var b=this,c=p.isString(b.options.fullscreenText)?b.options.fullscreenText:k["default"].t("mejs.fullscreen"),d=i["default"].createElement("div");if(d.className=b.options.classPrefix+"button "+b.options.classPrefix+"fullscreen-button",d.innerHTML='<button type="button" aria-controls="'+b.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>',b.addControlElement(d,"fullscreen"),d.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=d,b.globalBind("keydown",function(c){var d=c.which||c.keyCode||0;27===d&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||b.isFullScreen)&&a.exitFullScreen()}),b.normalHeight=0,b.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var e=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,e)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN)return void("function"==typeof a.media.webkitEnterFullscreen?a.media.webkitEnterFullscreen():a.media.originalNode.webkitEnterFullscreen());if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen")),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(25),l=a(24);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){null===d.rendererName.match(/flash/)&&e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(28),m=a(24);Object.assign(g.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-hovered no-hover"></span>')+('<span class="'+i.options.classPrefix+'time-handle"><span class="'+i.options.classPrefix+'time-handle-content"></span></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.hovered=b.querySelector("."+i.options.classPrefix+"time-hovered"),i.newTime=0,i.forcedHandlePause=!1,i.setTransformStyle=function(a,b){a.style.transform=b,a.style.webkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b};var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=function(){return void 0!==c.webkitTransform?"webkitTransform":void 0!==c.mozTransform?"mozTransform ":void 0!==c.oTransform?"oTransform":void 0!==c.msTransform?"msTransform":"transform"}(),j=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),n=0,o=0,p=void 0;if(p=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(p<e.left?p=e.left:p>f+e.left&&(p=f+e.left),o=p-e.left,n=o/f,i.newTime=.02>=n?0:n*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),!k.IS_IOS&&!k.IS_ANDROID&&i.timefloat)){if(0>o&&(o=0),i.options.useSmoothHover&&null!==j&&"undefined"!=typeof window[j]){var q=new window[j](getComputedStyle(i.handle)[h]),r=q.m41,s=o/parseFloat(getComputedStyle(i.total).width)-r/parseFloat(getComputedStyle(i.total).width);i.hovered.style.left=r+"px",i.setTransformStyle(i.hovered,"scaleX("+s+")"),i.hovered.setAttribute("pos",o),s>=0?m.removeClass(i.hovered,"negative"):m.addClass(i.hovered,"negative")}i.timefloat.style.left=o+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"}},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){ -a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){if(i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)){d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a);for(var b=["mouseup","touchend"],c=0,e=b.length;e>c;c++)i.container.addEventListener(b[c],function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)});i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.container.addEventListener("mousemove",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"),i.hovered&&!k.IS_IOS&&!k.IS_ANDROID&&i.options.useSmoothHover&&m.removeClass(i.hovered,"no-hover"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none"),i.hovered&&i.options.useSmoothHover&&m.addClass(i.hovered,"no-hover")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&c.setTransformStyle(c.loaded,"scaleX("+b+")"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=parseFloat(getComputedStyle(a.total).width),e=Math.round(d*c/a.media.duration),f=e-Math.round(a.handle.offsetWidth/2);if(f=0>f?0:f,a.setTransformStyle(a.current,"scaleX("+e/d+")"),a.setTransformStyle(a.handle,"translateX("+f+"px)"),a.options.useSmoothHover&&!m.hasClass(a.hovered,"no-hover")){var g=parseInt(a.hovered.getAttribute("pos"));g=isNaN(g)?0:g;var h=g/d-f/d;a.hovered.style.left=f+"px",a.setTransformStyle(a.hovered,"scaleX("+h+")"),h>=0?m.removeClass(a.hovered,"negative"):m.addClass(a.hovered,"negative")}}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(28),j=a(24);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,24:24,28:28}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(28),n=a(25),o=a(24);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(a.tracks.length||a.trackFiles&&0!==!a.trackFiles.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=null===a.trackFiles?a.tracks.length:a.trackFiles.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-input").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=null===a.trackFiles?a.node.querySelectorAll("track"):a.trackFiles,c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;if(void 0===e||void 0===e.fadeIn){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}else if(!o.visible(e)){var h=o.siblings(self,function(a){return h(a)});o.fadeIn(c.slidesContainer.querySelector(e));for(var i=0,j=h.length;j>i;i++)o.fadeOut(h[i])}}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(25),m=a(24);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(a,b,c){"use strict";/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js */ -Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(23),t=a(25),u=a(28),v=a(26),w=a(24),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;if(void 0===c){var g=d.node.getAttribute("data-mejsoptions");c=g?JSON.parse(g):{}}d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var h=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),i=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==i&&"video"!==i,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==i&&d.options.isVideo,d.mediaFiles=null,d.trackFiles=null,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var j=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),k=l["default"].createElement("span");if(k.className=d.options.classPrefix+"offscreen",k.innerText=j,d.media.parentNode.insertBefore(k,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",j),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var m=l["default"].createElement("div");m.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(m,d.container),m.appendChild(d.container)}if(s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),s.IS_SAFARI&&!s.IS_IOS){x.addClass(d.container,d.options.classPrefix+"hide-cues");for(var o=d.node.cloneNode(),q=d.node.childNodes,w=[],z=[],A=0,B=q.length;B>A;A++){var C=q[A];C&&C.nodeType!==Node.TEXT_NODE&&!function(){switch(C.tagName.toLowerCase()){case"source":var a={};Array.prototype.slice.call(C.attributes).forEach(function(b){a[b.name]=b.value}),a.type=v.formatType(a.src,a.type),w.push(a);break;case"track":C.mode="hidden",z.push(C);break;default:o.appendChild(C)}}()}d.node.remove(),d.node=d.media=o,w.length&&(d.mediaFiles=w),z.length&&(d.trackFiles=z)}d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var D=d.isVideo?"video":"audio",E=D.substring(0,1).toUpperCase()+D.substring(1);d.options[D+"Width"]>0||d.options[D+"Width"].toString().indexOf("%")>-1?d.width=d.options[D+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+E+"Width"],d.options[D+"Height"]>0||d.options[D+"Height"].toString().indexOf("%")>-1?d.height=d.options[D+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+E+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),h.pluginWidth=d.width,h.pluginHeight=d.height}if(new p["default"](d.media,h,d.mediaFiles),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var F=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(F)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),void(c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)));c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var g=0,h=c.options.features.length;h>g;g++){var i=c.options.features[g];if(c["build"+i])try{c["build"+i](c,c.controls,c.layers,c.media)}catch(k){console.error("error building "+i,k)}}var m=t.createEvent("controlsready",c.container);c.container.dispatchEvent(m),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-loading");a&&a.parentNode&&(a.parentNode.style.display="none")},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var o=null;c.media.addEventListener("timeupdate",function(){o!==c.media.duration&&(o=c.media.duration,u.calculateTimeFormat(o,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(m.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;switch("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node&&a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node&&a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){try{if(j["default"].self!==j["default"].top){if(null!==j["default"].frameElement)return j["default"].frameElement;b=j["default"].frameElement.parentNode}else b=c.parentElement}catch(d){b=c.parentElement}if(b&&x.visible(b))return b;c=b}return null}(),c=b?getComputedStyle(b,null):getComputedStyle(l["default"].body,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=void 0;try{b=j["default"].self!==j["default"].top?j["default"].frameElement.parentNode:a.outerContainer}catch(c){b=a.outerContainer}var d=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height="auto"),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth="none"),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight="none"),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height="auto"),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth="none"),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="none")),parseFloat(d.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(d.height)||(b.style.height=a.media.offsetHeight+"px"),d=getComputedStyle(b);var e=parseFloat(d.width),f=parseFloat(d.height);a.setDimensions("100%","100%");var g=a.container.querySelector(a.options.classPrefix+"poster img");g&&(g.style.display="");for(var h=a.container.querySelectorAll("object, embed, iframe, video"),i=a.height,k=a.width,l=e,m=i*e/k,n=k*f/i,o=f,p=n>e==!1,q=p?Math.floor(l):Math.floor(n),r=p?Math.floor(m):Math.floor(o),s=p?e+"px":q+"px",t=p?r+"px":f+"px",u=0,v=h.length;v>u;u++)h[u].style.height=t,h[u].style.width=s,a.media.setSize&&a.media.setSize(s,t),h[u].style.marginLeft=Math.floor((e-q)/2)+"px",h[u].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display=d.paused&&!s.IS_STOCK_ANDROID?"":"none",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),a.message&&(g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message)}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play(); -}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();var c=a.media.getSrc();a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic?a.container.parentNode.insertBefore(a.node,a.container):!function(){if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,""!==a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var d=l["default"].getElementById(a.media.id+"-iframe-overlay");d.remove()}var e=a.node.cloneNode();if(e.style.display="",a.container.parentNode.insertBefore(e,a.container),a.node.remove(),a.mediaFiles)for(var f=0,g=a.mediaFiles.length;g>f;f++){var h=l["default"].createElement("source");h.setAttribute("src",a.mediaFiles[f].src),h.setAttribute("type",a.mediaFiles[f].type),e.appendChild(h)}if(a.trackFiles)for(var i=function(b,c){var d=a.trackFiles[b],f=l["default"].createElement("track");f.kind=d.kind,f.label=d.label,f.srclang=d.srclang,f.src=d.src,e.appendChild(f),f.addEventListener("load",function(){this.mode="showing",e.textTracks[b].mode="showing"})},j=0,k=a.trackFiles.length;k>j;j++)i(j,k);delete a.node,delete a.mediaFiles,delete a.trackFiles}(),"function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var j=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");j.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(26),n=a(23),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof dashjs)o.createInstance(a);else if(!o.isScriptLoaded){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;i=d.cloneNode(!0),b=Object.assign(b,a.options);for(var n=j["default"].html5media.properties,p=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);i["get"+b]=function(){return null!==m?i[a]:null},i["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&("src"===a&&(m.attachSource(b),h&&i.play()),i[a]=b)}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=m=c,m.getDebug().setLogToBrowserConsole(b.dash.debug),m.setAutoPlay(g&&"auto"===g||h),m.setScheduleWhilePaused(g&&"auto"===g||h);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&m.initialize(i,i.src,!1),i.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},k=0,n=d.length;n>k;k++)f(d[k]);var o=function(b){var c=l.createEvent(b.type,i);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var p in e)e.hasOwnProperty(p)&&m.on(e[p],o)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){i.setAttribute("src",c[s].src);break}i.setAttribute("id",e),d.parentNode.insertBefore(i,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),i.setSize=function(a,b){return i.style.width=a+"px",i.style.height=b+"px",i},i.hide=function(){return i.pause(),i.style.display="none",i},i.show=function(){return i.style.display="",i};var u=l.createEvent("rendererready",i);return a.dispatchEvent(u),i}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(25),p=a(23),q=a(26),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof flvjs)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,h=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var i=j["default"].html5media.properties,m=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==h?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==h&&(g[a]=b,"src"===a&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()))}},n=0,p=i.length;p>n;n++)m(i[n]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=h=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()),g.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var q=0,r=c.length;r>q;q++)if(k.renderer.renderers[b.prefix].canPlayType(c[q].type)){g.setAttribute("src",c[q].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==h&&h.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==h&&h.destroy()};var s=l.createEvent("rendererready",g);return a.dispatchEvent(s),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof Hls)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;m=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||h;for(var n=j["default"].html5media.properties,p=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+c]=function(){return null!==i?m[a]:null},m["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(m[a]=c,"src"===a&&(i.destroy(),i=o.createInstance({options:b.hls,id:e}),i.loadSource(c),i.attachMedia(m)))}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){var c=a.originalNode.src;i.detachMedia(),i.loadSource(c),i.attachMedia(m)}m.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var h=void 0,k=void 0,n=function(b,c){var d=l.createEvent(b,m);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!h||e-h>3e3?(h=(new Date).getTime(),i.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),i.swapAudioCodec(),i.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:i.destroy()}};for(var o in d)d.hasOwnProperty(o)&&i.on(d[o],n)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){m.setAttribute("src",c[s].src);break}"auto"===g||h||(m.addEventListener("play",function(){null!==i&&i.startLoad()}),m.addEventListener("pause",function(){null!==i&&i.stopLoad()})),m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==i&&i.destroy()},m.stop=function(){null!==i&&i.stopLoad()};var u=l.createEvent("rendererready",m);return a.dispatchEvent(u),m}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(25),n=a(26),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},e=[],f=4,h=null,j=!0,l=!1,n=null,p=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var q=k["default"].html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==h){var a=null;switch(b){case"currentTime":return h.getCurrentTime();case"duration":return h.getDuration();case"volume":return p=h.getVolume()/100;case"paused":return j;case"ended":return l;case"muted":return h.isMuted();case"buffered":var c=h.getVideoLoadedFraction(),d=h.getDuration();return{start:function(){return 0},end:function(){return c*d},length:1};case"src":return h.getVideoUrl();case"readyState":return f}return a}return null},d["set"+c]=function(c){if(null!==h)switch(b){case"src":var f="string"==typeof c?c:c[0].src,g=o.getYouTubeId(f);a.originalNode.autoplay?h.loadVideoById(g):h.cueVideoById(g);break;case"currentTime":h.seekTo(c);break;case"muted":c?h.mute():h.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":p=c,h.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var i=m.createEvent("canplay",d);a.dispatchEvent(i)}else e.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=k["default"].html5media.methods,v=function(a){d[a]=function(){if(null!==h)switch(a){case"play":return j=!1,h.playVideo();case"pause":return j=!0,h.pauseVideo();case"load":return null}else e.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);var y=i["default"].createElement("div");y.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(y,a.originalNode),a.originalNode.style.display="none";var z="audio"===a.originalNode.tagName.toLowerCase(),A=z?"0":a.originalNode.height,B=z?"0":a.originalNode.width,C=o.getYouTubeId(c[0].src),D={id:d.id,containerId:y.id,videoId:C,height:A,width:B,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=h=b.target,a.youTubeState={paused:!0,ended:!1},e.length)for(var c=0,f=e.length;f>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);d["set"+j](g.value)}else"call"===g.type&&d[g.methodName]()}n=h.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},o=0,p=k.length;p>o;o++)n.addEventListener(k[o],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],j=!0,l=!1;break;case 0:c=["ended"],j=!1,l=!0,d.stopInterval();break;case 1:c=["play","playing"],j=!1,l=!1,d.startInterval();break;case 2:c=["pause"],j=!0,l=!1,d.stopInterval();break;case 3:c=["progress"],l=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],j=!0,l=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return z&&(D.playerVars.playsinline=1),o.enqueueIframe(D),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==h&&h.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),n&&(n.style.display="none")},d.show=function(){n&&(n.style.display="")},d.destroy=function(){h.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{2:2,25:25,26:26,3:3,6:6,7:7}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S, -j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(1-g/b,2);a.style.opacity=0>h?0:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(g/b,2);a.style.opacity=h>1?1:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],25:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&","<":"<",">":">",'"':"""};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],26:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(25),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{25:25,6:6}],27:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}],28:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]); \ No newline at end of file +!function e(t,n,i){function o(r,s){if(!n[r]){if(!t[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(a)return a(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[r]={exports:{}};t[r][0].call(u.exports,function(e){var n=t[r][1][e];return o(n||e)},u,u.exports,e,t,n,i)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var i=void 0!==n?n:"undefined"!=typeof window?window:{},o=e(1);if("undefined"!=typeof document)t.exports=document;else{var a=i["__GLOBAL_DOCUMENT_CACHE@4"];a||(a=i["__GLOBAL_DOCUMENT_CACHE@4"]=o),t.exports=a}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),a=e(14),r=e(25),s={lang:"en",en:a.EN};s.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");s.lang=t[0],void 0===s[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])?t[1]:{},s[t[0]]=(0,r.isObjectEmpty)(t[1])?a.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])&&(s[t[0]]=t[1])}return s.lang},s.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,a=s.language(),l=function(e,t,n){return"object"!==(void 0===e?"undefined":i(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==s[a]&&(n=s[a][e],null!==t&&"number"==typeof t&&(o=s[a]["mejs.plural-form"],n=l.apply(null,[n,t,o]))),!n&&s.en&&(n=s.en[e],null!==t&&"number"==typeof t&&(o=s.en["mejs.plural-form"],n=l.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,r.escapeHTML)(n)}return e},o.default.i18n=s,"undefined"!=typeof mejsL10n&&o.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=s},{14:14,25:25,6:6}],5:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(25),d=e(26),u=e(7),c=e(23),f=function e(t,n,i){var f=this;o(this,e);var p=this;i=Array.isArray(i)?i:null,p.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(p.defaults,n),p.mediaElement=r.default.createElement(n.fakeNodeName),p.mediaElement.options=n;var m=t,h=!1;if("string"==typeof t?p.mediaElement.originalNode=r.default.getElementById(t):(p.mediaElement.originalNode=t,m=t.id),m=m||"mejs_"+Math.random().toString().slice(2),void 0!==p.mediaElement.originalNode&&null!==p.mediaElement.originalNode&&p.mediaElement.appendChild){p.mediaElement.originalNode.setAttribute("id",m+"_from_mejs");var v=p.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!p.mediaElement.originalNode.getAttribute("preload")&&p.mediaElement.originalNode.setAttribute("preload","none"),p.mediaElement.originalNode.parentNode.insertBefore(p.mediaElement,p.mediaElement.originalNode),p.mediaElement.appendChild(p.mediaElement.originalNode)}p.mediaElement.id=m,p.mediaElement.renderers={},p.mediaElement.renderer=null,p.mediaElement.rendererName=null,p.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var i=n.mediaElement.renderers[e],o=null;if(void 0!==i&&null!==i)return i.show(),i.setSrc(t[0].src),n.mediaElement.renderer=i,n.mediaElement.rendererName=e,!0;for(var a=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,r=0,s=a.length;r<s;r++){var l=a[r];if(l===e){o=u.renderer.renderers[l];var d=Object.assign(o.options,n.mediaElement.options);return i=o.create(n.mediaElement,d,t),i.name=e,n.mediaElement.renderers[o.name]=i,n.mediaElement.renderer=i,n.mediaElement.rendererName=e,i.show(),!0}}return!1},p.mediaElement.setSize=function(e,t){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer.setSize(e,t)},p.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=r.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=p.mediaElement.options.customError;if(!n){var i=p.mediaElement.originalNode.getAttribute("poster");i&&(n+='<img src="'+i+'" width="100%" height="100%" alt="'+s.default.i18n.t("mejs.download-file")+'">');for(var o=0,a=e.length;o<a;o++){var l=e[o];n+='<a href="'+l.src+'" data-type="'+l.type+'"><span>'+s.default.i18n.t("mejs.download-file")+": "+l.src+"</span></a>"}}t.innerHTML=n,p.mediaElement.originalNode.parentNode.insertBefore(t,p.mediaElement.originalNode),p.mediaElement.originalNode.style.display="none",h=!0};var y=s.default.html5media.properties,g=s.default.html5media.methods,b=function(e,t,n,i){var o=e[t],a=function(){return n.apply(e,[o])},r=function(t){return o=i.apply(e,[t])};Object.defineProperty(e,t,{get:a,set:r})},E=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer.getSrc():null},S=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,i=e.length;n<i;n++){var o=(0,d.absolutizeUrl)(e[n].src),a=e[n].type;t.push({src:o,type:""!==a&&null!==a&&void 0!==a||!o?a:(0,d.getTypeFromFile)(o)})}var r=u.renderer.select(t,p.mediaElement.options.renderers.length?p.mediaElement.options.renderers:[]),s=void 0;if(p.mediaElement.paused||(p.mediaElement.pause(),s=(0,l.createEvent)("pause",p.mediaElement),p.mediaElement.dispatchEvent(s)),p.mediaElement.originalNode.setAttribute("src",t[0].src||""),p.mediaElement.querySelector(".me_cannotplay")&&p.mediaElement.querySelector(".me_cannotplay").remove(),null===r)return p.mediaElement.createErrorMessage(t),s=(0,l.createEvent)("error",p.mediaElement),s.message="No renderer found",void p.mediaElement.dispatchEvent(s);p.mediaElement.changeRenderer(r.rendererName,t),void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer||((s=(0,l.createEvent)("error",p.mediaElement)).message="Error creating renderer",p.mediaElement.dispatchEvent(s),p.mediaElement.createErrorMessage(t))};b(p.mediaElement,"src",E,S),p.mediaElement.getSrc=E,p.mediaElement.setSrc=S;for(var x=0,w=y.length;x<w;x++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer["get"+t]():null},i=function(e){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer["set"+t](e)};b(p.mediaElement,e,n,i),p.mediaElement["get"+t]=n,p.mediaElement["set"+t]=i}}(y[x]);for(var P=0,T=g.length;P<T;P++)!function(e){p.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];if(void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&"function"==typeof p.mediaElement.renderer[e])try{p.mediaElement.renderer[e](n)}catch(e){p.mediaElement.createErrorMessage()}return null}}(g[P]);p.mediaElement.events={},p.mediaElement.addEventListener=function(e,t){p.mediaElement.events[e]=p.mediaElement.events[e]||[],p.mediaElement.events[e].push(t)},p.mediaElement.removeEventListener=function(e,t){if(!e)return p.mediaElement.events={},!0;var n=p.mediaElement.events[e];if(!n)return!0;if(!t)return p.mediaElement.events[e]=[],!0;for(var i=0;i<n.length;i++)if(n[i]===t)return p.mediaElement.events[e].splice(i,1),!0;return!1},p.mediaElement.dispatchEvent=function(e){var t=p.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var C=function(e,t){if(s.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===a.default.location.protocol&&c.IS_IOS&&!a.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(a.default.URL||a.default.webkitURL).createObjectURL(this.response);return p.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},k=void 0;if(null!==i)k=i;else if(null!==p.mediaElement.originalNode)switch(k=[],p.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":k.push({type:"",src:p.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var _=p.mediaElement.originalNode.childNodes.length,N=p.mediaElement.originalNode.getAttribute("src");if(N){var A=p.mediaElement.originalNode,L=(0,d.formatType)(N,A.getAttribute("type"));k.push({type:L,src:C(N,L)})}for(var F=0;F<_;F++){var j=p.mediaElement.originalNode.childNodes[F];if(j.nodeType===Node.ELEMENT_NODE&&"source"===j.tagName.toLowerCase()){var I=j.getAttribute("src"),M=(0,d.formatType)(I,j.getAttribute("type"));k.push({type:M,src:C(I,M)})}}}return k.length&&(p.mediaElement.src=k),p.mediaElement.options.success&&p.mediaElement.options.success(p.mediaElement,p.mediaElement.originalNode),h&&p.mediaElement.options.error&&p.mediaElement.options.error(p.mediaElement,p.mediaElement.originalNode),p.mediaElement};a.default.MediaElement=f,n.default=f},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),o={};o.version="4.1.1",o.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]},i.default.mejs=o,n.default=o},{3:3}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),s=function(){function e(){i(this,e),this.renderers={},this.order=[]}return a(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var i=[/^(html5|native)/i,/^flash/i,/iframe$/i],o=function(e){for(var t=0,n=i.length;t<n;t++)if(i[t].test(e))return t;return i.length};t.sort(function(e,t){return o(e)-o(t)})}for(var a=0,r=t.length;a<r;a++){var s=t[a],l=this.renderers[s];if(null!==l&&void 0!==l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":o(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),l=n.renderer=new s;r.default.Renderers=l},{6:6}],8:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(4)),s=e(16),l=i(s),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(23)),u=e(25),c=e(24);Object.assign(s.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(l.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(e){if(e.isVideo){e.isInIframe=o.default.location!==o.default.parent.location,e.detectFullscreenMode();var t=this,n=(0,u.isString)(t.options.fullscreenText)?t.options.fullscreenText:r.default.t("mejs.fullscreen"),i=a.default.createElement("div");if(i.className=t.options.classPrefix+"button "+t.options.classPrefix+"fullscreen-button",i.innerHTML='<button type="button" aria-controls="'+t.id+'" title="'+n+'" aria-label="'+n+'" tabindex="0"></button>',t.addControlElement(i,"fullscreen"),i.addEventListener("click",function(){d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||e.isFullScreen?e.exitFullScreen():e.enterFullScreen()}),e.fullscreenBtn=i,t.globalBind("keydown",function(n){27===(n.which||n.keyCode||0)&&(d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||t.isFullScreen)&&e.exitFullScreen()}),t.normalHeight=0,t.normalWidth=0,d.HAS_TRUE_NATIVE_FULLSCREEN){var s=function(){e.isFullScreen&&(d.isFullScreen()?(e.isNativeFullScreen=!0,e.setControlsSize()):(e.isNativeFullScreen=!1,e.exitFullScreen()))};e.globalBind(d.FULLSCREEN_EVENT_NAME,s)}}},detectFullscreenMode:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName),n="";return n=d.HAS_TRUE_NATIVE_FULLSCREEN&&t?"native-native":d.HAS_TRUE_NATIVE_FULLSCREEN&&!t?"plugin-native":e.usePluginFullScreen&&d.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",e.fullscreenMode=n,n},cleanfullscreen:function(e){e.exitFullScreen()},enterFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(html5|native)/i.test(e.media.rendererName),n=getComputedStyle(e.container);if(d.IS_IOS&&d.HAS_IOS_FULLSCREEN)"function"==typeof e.media.webkitEnterFullscreen?e.media.webkitEnterFullscreen():e.media.originalNode.webkitEnterFullscreen();else{if((0,c.addClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.normalHeight=parseFloat(n.height),e.normalWidth=parseFloat(n.width),"native-native"!==e.fullscreenMode&&"plugin-native"!==e.fullscreenMode||(d.requestFullScreen(e.container),e.isInIframe&&setTimeout(function t(){if(e.isNativeFullScreen){var n=o.default.innerWidth||a.default.documentElement.clientWidth||a.default.body.clientWidth,i=screen.width;Math.abs(i-n)>.002*i?e.exitFullScreen():setTimeout(t,500)}},1e3)),e.container.style.width="100%",e.container.style.height="100%",e.containerSizeTimeout=setTimeout(function(){e.container.style.width="100%",e.container.style.height="100%",e.setControlsSize()},500),t)e.node.style.width="100%",e.node.style.height="100%";else for(var i=e.container.querySelectorAll("iframe, embed, object, video"),r=i.length,s=0;s<r;s++)i[s].style.width="100%",i[s].style.height="100%";e.options.setDimensions&&"function"==typeof e.media.setSize&&e.media.setSize(screen.width,screen.height);for(var l=e.layers.childNodes,f=l.length,p=0;p<f;p++)l[p].style.width="100%",l[p].style.height="100%";e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen")),e.setControlsSize(),e.isFullScreen=!0;var m=Math.min(screen.width/e.width,screen.height/e.height),h=e.container.querySelector("."+e.options.classPrefix+"captions-text");h&&(h.style.fontSize=100*m+"%",h.style.lineHeight="normal",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="45px");var v=(0,u.createEvent)("enteredfullscreen",e.container);e.container.dispatchEvent(v)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(clearTimeout(e.containerSizeTimeout),d.HAS_TRUE_NATIVE_FULLSCREEN&&(d.IS_FULLSCREEN||e.isFullScreen)&&d.cancelFullScreen(),(0,c.removeClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.removeClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.container.style.width=e.normalWidth+"px",e.container.style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.container.querySelectorAll("iframe, embed, object, video"),i=n.length,o=0;o<i;o++)n[o].style.width=e.normalWidth+"px",n[o].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.layers.childNodes,s=r.length,l=0;l<s;l++)r[l].style.width=e.normalWidth+"px",r[l].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var f=e.container.querySelector("."+e.options.classPrefix+"captions-text");f&&(f.style.fontSize="",f.style.lineHeight="",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var p=(0,u.createEvent)("exitedfullscreen",e.container);e.container.dispatchEvent(p)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(25),d=e(24);Object.assign(a.config,{playText:null,pauseText:null}),Object.assign(r.default.prototype,{buildplaypause:function(e,t,n,i){function a(e){"play"===e?((0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"pause"),m.setAttribute("title",f),m.setAttribute("aria-label",f)):((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"play"),m.setAttribute("title",c),m.setAttribute("aria-label",c))}var r=this,u=r.options,c=(0,l.isString)(u.playText)?u.playText:s.default.t("mejs.play"),f=(0,l.isString)(u.pauseText)?u.pauseText:s.default.t("mejs.pause"),p=o.default.createElement("div");p.className=r.options.classPrefix+"button "+r.options.classPrefix+"playpause-button "+r.options.classPrefix+"play",p.innerHTML='<button type="button" aria-controls="'+r.id+'" title="'+c+'" aria-label="'+f+'" tabindex="0"></button>',p.addEventListener("click",function(){i.paused?i.play():i.pause()});var m=p.querySelector("button");r.addControlElement(p,"playpause"),a("pse"),i.addEventListener("loadedmetadata",function(){-1===i.rendererName.indexOf("flash")&&a("pse")}),i.addEventListener("play",function(){a("play")}),i.addEventListener("playing",function(){a("play")}),i.addEventListener("pause",function(){a("pse")}),i.addEventListener("ended",function(){e.options.loop||((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.addClass)(p,r.options.classPrefix+"replay"),m.setAttribute("title",c),m.setAttribute("aria-label",c))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(28),u=e(24);Object.assign(a.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(r.default.prototype,{buildprogress:function(e,t,n,i){var a=0,r=!1,c=!1,f=this,p=e.options.autoRewind,m=e.options.enableProgressTooltip?'<span class="'+f.options.classPrefix+'time-float"><span class="'+f.options.classPrefix+'time-float-current">00:00</span><span class="'+f.options.classPrefix+'time-float-corner"></span></span>':"",h=o.default.createElement("div");h.className=f.options.classPrefix+"time-rail",h.innerHTML='<span class="'+f.options.classPrefix+"time-total "+f.options.classPrefix+'time-slider"><span class="'+f.options.classPrefix+'time-buffering"></span><span class="'+f.options.classPrefix+'time-loaded"></span><span class="'+f.options.classPrefix+'time-current"></span><span class="'+f.options.classPrefix+'time-hovered no-hover"></span><span class="'+f.options.classPrefix+'time-handle"><span class="'+f.options.classPrefix+'time-handle-content"></span></span>'+m+"</span>",f.addControlElement(h,"progress"),t.querySelector("."+f.options.classPrefix+"time-buffering").style.display="none",f.rail=t.querySelector("."+f.options.classPrefix+"time-rail"),f.total=t.querySelector("."+f.options.classPrefix+"time-total"),f.loaded=t.querySelector("."+f.options.classPrefix+"time-loaded"),f.current=t.querySelector("."+f.options.classPrefix+"time-current"),f.handle=t.querySelector("."+f.options.classPrefix+"time-handle"),f.timefloat=t.querySelector("."+f.options.classPrefix+"time-float"),f.timefloatcurrent=t.querySelector("."+f.options.classPrefix+"time-float-current"),f.slider=t.querySelector("."+f.options.classPrefix+"time-slider"),f.hovered=t.querySelector("."+f.options.classPrefix+"time-hovered"),f.newTime=0,f.forcedHandlePause=!1,f.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t};var v=function(t){var n=getComputedStyle(f.total),o=(0,u.offset)(f.total),a=parseFloat(n.width),s=function(){return void 0!==n.webkitTransform?"webkitTransform":void 0!==n.mozTransform?"mozTransform ":void 0!==n.oTransform?"oTransform":void 0!==n.msTransform?"msTransform":"transform"}(),c=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),p=0,m=0,h=void 0;if(h=t.originalEvent&&t.originalEvent.changedTouches?t.originalEvent.changedTouches[0].pageX:t.changedTouches?t.changedTouches[0].pageX:t.pageX,i.duration&&(h<o.left?h=o.left:h>a+o.left&&(h=a+o.left),m=h-o.left,p=m/a,f.newTime=p<=.02?0:p*i.duration,r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(f.setCurrentRailHandle(f.newTime),f.updateCurrent(f.newTime)),!l.IS_IOS&&!l.IS_ANDROID&&f.timefloat)){if(m<0&&(m=0),f.options.useSmoothHover&&null!==c&&void 0!==window[c]){var v=new window[c](getComputedStyle(f.handle)[s]).m41,y=m/parseFloat(getComputedStyle(f.total).width)-v/parseFloat(getComputedStyle(f.total).width);f.hovered.style.left=v+"px",f.setTransformStyle(f.hovered,"scaleX("+y+")"),f.hovered.setAttribute("pos",m),y>=0?(0,u.removeClass)(f.hovered,"negative"):(0,u.addClass)(f.hovered,"negative")}f.timefloat.style.left=m+"px",f.timefloatcurrent.innerHTML=(0,d.secondsToTimeCode)(f.newTime,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),f.timefloat.style.display="block"}},y=function(){var t=i.currentTime,n=s.default.t("mejs.time-slider"),o=(0,d.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),a=i.duration;f.slider.setAttribute("role","slider"),f.slider.tabIndex=0,i.paused?(f.slider.setAttribute("aria-label",n),f.slider.setAttribute("aria-valuemin",0),f.slider.setAttribute("aria-valuemax",a),f.slider.setAttribute("aria-valuenow",t),f.slider.setAttribute("aria-valuetext",o)):(f.slider.removeAttribute("aria-label"),f.slider.removeAttribute("aria-valuemin"),f.slider.removeAttribute("aria-valuemax"),f.slider.removeAttribute("aria-valuenow"),f.slider.removeAttribute("aria-valuetext"))},g=function(){new Date-a>=1e3&&i.play()},b=function(){r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(i.setCurrentTime(f.newTime),e.setCurrentRail(),f.updateCurrent(f.newTime)),f.forcedHandlePause&&f.media.play(),f.forcedHandlePause=!1};f.slider.addEventListener("focus",function(){e.options.autoRewind=!1}),f.slider.addEventListener("blur",function(){e.options.autoRewind=p}),f.slider.addEventListener("keydown",function(t){if(new Date-a>=1e3&&(c=i.paused),f.options.keyActions.length){var n=t.which||t.keyCode||0,o=i.duration,r=e.options.defaultSeekForwardInterval(i),s=e.options.defaultSeekBackwardInterval(i),d=i.currentTime;switch(n){case 37:case 40:i.duration!==1/0&&(d-=s);break;case 39:case 38:i.duration!==1/0&&(d+=r);break;case 36:d=0;break;case 35:d=o;break;case 32:return void(l.IS_FIREFOX||(i.paused?i.play():i.pause()));case 13:return void(i.paused?i.play():i.pause());default:return}d=d<0?0:d>=o?o:Math.floor(d),a=new Date,c||i.pause(),d<i.duration&&!c&&setTimeout(g,1100),i.setCurrentTime(d),t.preventDefault(),t.stopPropagation()}});var E=["mousedown","touchstart"];f.slider.addEventListener("dragstart",function(){return!1});for(var S=0,x=E.length;S<x;S++)f.slider.addEventListener(E[S],function(e){if(f.forcedHandlePause=!1,i.duration!==1/0&&(1===e.which||0===e.which)){i.paused||(f.media.pause(),f.forcedHandlePause=!0),r=!0,v(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)f.container.addEventListener(t[n],function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)});f.globalBind("mouseup.dur touchend.dur",function(){b(),r=!1,f.timefloat&&(f.timefloat.style.display="none"),f.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});f.slider.addEventListener("mouseenter",function(e){e.target===f.slider&&i.duration!==1/0&&(f.container.addEventListener("mousemove",function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)}),!f.timefloat||l.IS_IOS||l.IS_ANDROID||(f.timefloat.style.display="block"),f.hovered&&!l.IS_IOS&&!l.IS_ANDROID&&f.options.useSmoothHover&&(0,u.removeClass)(f.hovered,"no-hover"))}),f.slider.addEventListener("mouseleave",function(){i.duration!==1/0&&(r||(f.globalUnbind("mousemove.dur"),f.timefloat&&(f.timefloat.style.display="none"),f.hovered&&f.options.useSmoothHover&&(0,u.addClass)(f.hovered,"no-hover")))}),i.addEventListener("progress",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n);else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),f.slider.style.display="none"}}),i.addEventListener("timeupdate",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n),y();else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),t.querySelector("."+f.options.classPrefix+"time-rail").appendChild(r),f.slider.style.display="none"}}),f.container.addEventListener("controlsresize",function(t){i.duration!==1/0&&(e.setProgressRail(t),f.forcedHandlePause||e.setCurrentRail(t))})},setProgressRail:function(e){var t=this,n=void 0!==e?e.target:t.media,i=null;n&&n.buffered&&n.buffered.length>0&&n.buffered.end&&n.duration?i=n.buffered.end(n.buffered.length-1)/n.duration:n&&void 0!==n.bytesTotal&&n.bytesTotal>0&&void 0!==n.bufferedBytes?i=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(i=e.loaded/e.total),null!==i&&(i=Math.min(1,Math.max(0,i)),t.loaded&&t.total&&t.setTransformStyle(t.loaded,"scaleX("+i+")"))},setCurrentRailHandle:function(e){var t=this;t.setCurrentRailMain(t,e)},setCurrentRail:function(){var e=this;e.setCurrentRailMain(e)},setCurrentRailMain:function(e,t){if(void 0!==e.media.currentTime&&e.media.duration){var n=void 0===t?e.media.currentTime:t;if(e.total&&e.handle){var i=parseFloat(getComputedStyle(e.total).width),o=Math.round(i*n/e.media.duration),a=o-Math.round(e.handle.offsetWidth/2);if(a=a<0?0:a,e.setTransformStyle(e.current,"scaleX("+o/i+")"),e.setTransformStyle(e.handle,"translateX("+a+"px)"),e.options.useSmoothHover&&!(0,u.hasClass)(e.hovered,"no-hover")){var r=parseInt(e.hovered.getAttribute("pos")),s=(r=isNaN(r)?0:r)/i-a/i;e.hovered.style.left=a+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),s>=0?(0,u.removeClass)(e.hovered,"negative"):(0,u.addClass)(e.hovered,"negative")}}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=e(28),l=e(24);Object.assign(a.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(r.default.prototype,{buildcurrent:function(e,t,n,i){var a=this,r=o.default.createElement("div");r.className=a.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+a.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"current"),i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateCurrent()})},buildduration:function(e,t,n,i){var a=this;if(t.lastChild.querySelector("."+a.options.classPrefix+"currenttime"))t.querySelector("."+a.options.classPrefix+"time").innerHTML+=a.options.timeAndDurationSeparator+'<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>";else{t.querySelector("."+a.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+a.options.classPrefix+"currenttime").parentNode,a.options.classPrefix+"currenttime-container");var r=o.default.createElement("div");r.className=a.options.classPrefix+"time "+a.options.classPrefix+"duration-container",r.innerHTML='<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"duration")}i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateDuration()})},updateCurrent:function(){var e=this,t=e.media.currentTime;isNaN(t)&&(t=0),e.controls.querySelector("."+e.options.classPrefix+"currenttime")&&(e.controls.querySelector("."+e.options.classPrefix+"currenttime").innerText=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength))},updateDuration:function(){var e=this,t=e.media.duration;(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),e.options.duration>0&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength);n.length>5&&(0,l.toggleClass)(e.container,e.options.classPrefix+"long-video"),e.controls.querySelector("."+e.options.classPrefix+"duration")&&t>0&&(e.controls.querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,24:24,28:28}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=i(e(6)),r=i(e(4)),s=e(16),l=i(s),d=e(28),u=e(25),c=e(24);Object.assign(s.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l.default.prototype,{hasChapters:!1,buildtracks:function(e,t,n,i){if(e.tracks.length||e.trackFiles&&0!==!e.trackFiles.length){var a=this,s=a.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",l=(0,u.isString)(a.options.tracksText)?a.options.tracksText:r.default.t("mejs.captions-subtitles"),d=(0,u.isString)(a.options.chaptersText)?a.options.chaptersText:r.default.t("mejs.captions-chapters"),f=null===e.trackFiles?e.tracks.length:e.trackFiles.length;if(a.domNode.textTracks)for(var p=a.domNode.textTracks.length-1;p>=0;p--)a.domNode.textTracks[p].mode="hidden";a.cleartracks(e),e.captions=o.default.createElement("div"),e.captions.className=a.options.classPrefix+"captions-layer "+a.options.classPrefix+"layer",e.captions.innerHTML='<div class="'+a.options.classPrefix+"captions-position "+a.options.classPrefix+'captions-position-hover"'+s+'><span class="'+a.options.classPrefix+'captions-text"></span></div>',e.captions.style.display="none",n.insertBefore(e.captions,n.firstChild),e.captionsText=e.captions.querySelector("."+a.options.classPrefix+"captions-text"),e.captionsButton=o.default.createElement("div"),e.captionsButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"captions-button",e.captionsButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+l+'" aria-label="'+l+'" tabindex="0"></button><div class="'+a.options.classPrefix+"captions-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'captions-selector-list"><li class="'+a.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+a.options.classPrefix+'captions-selector-input" name="'+e.id+'_captions" id="'+e.id+'_captions_none" value="none" checked disabled><label class="'+a.options.classPrefix+"captions-selector-label "+a.options.classPrefix+'captions-selected" for="'+e.id+'_captions_none">'+r.default.t("mejs.none")+"</label></li></ul></div>",a.addControlElement(e.captionsButton,"tracks"),e.captionsButton.querySelector("."+a.options.classPrefix+"captions-selector-input").disabled=!1,e.chaptersButton=o.default.createElement("div"),e.chaptersButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"chapters-button",e.chaptersButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+d+'" aria-label="'+d+'" tabindex="0"></button><div class="'+a.options.classPrefix+"chapters-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'chapters-selector-list"></ul></div>';for(var m=0,h=0;h<f;h++){var v=e.tracks[h].kind;"subtitles"===v||"captions"===v?m++:"chapters"!==v||t.querySelector("."+a.options.classPrefix+"chapter-selector")||e.captionsButton.parentNode.insertBefore(e.chaptersButton,e.captionsButton)}e.trackToLoad=-1,e.selectedTrack=null,e.isLoadingTrack=!1;for(var y=0;y<f;y++){var g=e.tracks[y].kind;"subtitles"!==g&&"captions"!==g||e.addTrackButton(e.tracks[y].trackId,e.tracks[y].srclang,e.tracks[y].label)}e.loadNextTrack();var b=["mouseenter","focusin"],E=["mouseleave","focusout"];if(a.options.toggleCaptionsButtonWhenOnlyOne&&1===m)e.captionsButton.addEventListener("click",function(){var t="none";null===e.selectedTrack&&(t=e.tracks[0].trackId),e.setTrack(t)});else{for(var S=e.captionsButton.querySelectorAll("."+a.options.classPrefix+"captions-selector-label"),x=e.captionsButton.querySelectorAll("input[type=radio]"),w=0,P=b.length;w<P;w++)e.captionsButton.addEventListener(b[w],function(){(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var T=0,C=E.length;T<C;T++)e.captionsButton.addEventListener(E[T],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var k=0,_=x.length;k<_;k++)x[k].addEventListener("click",function(){e.setTrack(this.value)});for(var N=0,A=S.length;N<A;N++)S[N].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)});e.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var L=0,F=b.length;L<F;L++)e.chaptersButton.addEventListener(b[L],function(){this.querySelector("."+a.options.classPrefix+"chapters-selector-list").childNodes.length&&(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});for(var j=0,I=E.length;j<I;j++)e.chaptersButton.addEventListener(E[j],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});e.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),e.options.alwaysShowControls?(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover"):(e.container.addEventListener("controlsshown",function(){(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")}),e.container.addEventListener("controlshidden",function(){i.paused||(0,c.removeClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")})),i.addEventListener("timeupdate",function(){e.displayCaptions()}),""!==e.options.slidesSelector&&(e.slidesContainer=o.default.querySelectorAll(e.options.slidesSelector),i.addEventListener("timeupdate",function(){e.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.controls,e.layers,e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var i=0;i<n;i++){var o=t[i],a=o.getAttribute("srclang").toLowerCase()||"",r=e.id+"_track_"+i+"_"+o.getAttribute("kind")+"_"+a;e.tracks.push({trackId:r,srclang:a,src:o.getAttribute("src"),kind:o.getAttribute("kind"),label:o.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e){for(var t=this,n=t.captionsButton.querySelectorAll('input[type="radio"]'),i=t.captionsButton.querySelectorAll("."+t.options.classPrefix+"captions-selected"),o=t.captionsButton.querySelector('input[value="'+e+'"]'),a=0,r=n.length;a<r;a++)n[a].checked=!1;for(var s=0,l=i.length;s<l;s++)(0,c.removeClass)(i[s],t.options.classPrefix+"captions-selected");o.checked=!0;for(var d=(0,c.siblings)(o,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),f=0,p=d.length;f<p;f++)(0,c.addClass)(d[f],t.options.classPrefix+"captions-selected");if("none"===e)t.selectedTrack=null,(0,c.removeClass)(t.captionsButton,t.options.classPrefix+"captions-enabled");else for(var m=0,h=t.tracks.length;m<h;m++){var v=t.tracks[m];if(v.trackId===e){null===t.selectedTrack&&(0,c.addClass)(t.captionsButton,t.options.classPrefix+"captions-enabled"),t.selectedTrack=v,t.captions.setAttribute("lang",t.selectedTrack.srclang),t.displayCaptions();break}}var y=(0,u.createEvent)("captionschange",t.media);y.detail.caption=t.selectedTrack,t.media.dispatchEvent(y)},loadNextTrack:function(){var e=this;++e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,c.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?a.default.TrackFormatParser.dfxp.parse(e):a.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,i=o.default.getElementById(""+e.trackId);if(i){var s=e.label;""===s&&(s=r.default.t(a.default.language.codes[n])||n),i.disabled=!1;for(var l=(0,c.siblings)(i,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),d=0,f=l.length;d<f;d++)l[d].innerHTML=s;if(t.options.startLanguage===n){i.checked=!0;var p=(0,u.createEvent)("click",i);i.dispatchEvent(p)}}},removeTrackButton:function(e){var t=o.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var i=this;""===n&&(n=r.default.t(a.default.language.codes[t])||t),i.captionsButton.querySelector("ul").innerHTML+='<li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+i.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+i.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,i=e.tracks.length;n<i;n++){var o=e.tracks[n].kind;if(("subtitles"===o||"captions"===o)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(n>-1)return e.captionsText.innerHTML=function(e){var t=o.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),i=n.length;i--;)n[i].remove();for(var a=t.getElementsByTagName("*"),r=0,s=a.length;r<s;r++)for(var l=a[r].attributes,d=Array.prototype.slice.call(l),u=0,c=d.length;u<c;u++)d[u].name.startsWith("on")||d[u].value.startsWith("javascript")?a[r].remove():"style"===d[u].name&&a[r].removeAttribute(d[u].name);return t.innerHTML}(t.entries[n].text),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px");e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){var t=this;t.slides=e,t.slides.entries.imgs=[t.slides.entries.length],t.showSlide(0)},showSlide:function(e){var t=this,n=this;if(void 0!==n.tracks&&void 0!==n.slidesContainer){var i=n.slides.entries[e].text,a=n.slides.entries[e].imgs;if(void 0===a||void 0===a.fadeIn){var r=o.default.createElement("img");r.src=i,r.addEventListener("load",function(){var e=t,i=(0,c.siblings)(e,function(e){return i(e)});e.style.display="none",n.slidesContainer.innerHTML+=e.innerHTML,(0,c.fadeIn)(n.slidesContainer.querySelector(r));for(var o=0,a=i.length;o<a;o++)(0,c.fadeOut)(i[o],400)}),n.slides.entries[e].imgs=a=r}else if(!(0,c.visible)(a)){var s=(0,c.siblings)(self,function(e){return s(e)});(0,c.fadeIn)(n.slidesContainer.querySelector(a));for(var l=0,d=s.length;l<d;l++)(0,c.fadeOut)(s[l])}}},displaySlides:function(){var e=this;if(void 0!==this.slides){var t=e.slides,n=e.searchTrackPosition(t.entries,e.media.currentTime);n>-1&&e.showSlide(n)}},drawChapters:function(e){var t=this,n=e.entries.length;if(n){t.chaptersButton.querySelector("ul").innerHTML="";for(var i=0;i<n;i++)t.chaptersButton.querySelector("ul").innerHTML+='<li class="'+t.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false"><input type="radio" class="'+t.options.classPrefix+'captions-selector-input" name="'+t.id+'_chapters" id="'+t.id+"_chapters_"+i+'" value="'+e.entries[i].start+'" disabled><label class="'+t.options.classPrefix+'chapters-selector-label"for="'+t.id+"_chapters_"+i+'">'+e.entries[i].text+"</label></li>";for(var o=t.chaptersButton.querySelectorAll('input[type="radio"]'),a=t.chaptersButton.querySelectorAll("."+t.options.classPrefix+"chapters-selector-label"),r=0,s=o.length;r<s;r++)o[r].disabled=!1,o[r].checked=!1,o[r].addEventListener("click",function(){var e=this,n=t.chaptersButton.querySelectorAll("li"),i=(0,c.siblings)(e,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"chapters-selector-label")})[0];e.checked=!0,e.parentNode.setAttribute("aria-checked",!0),(0,c.addClass)(i,t.options.classPrefix+"chapters-selected"),(0,c.removeClass)(t.chaptersButton.querySelector("."+t.options.classPrefix+"chapters-selected"),t.options.classPrefix+"chapters-selected");for(var o=0,a=n.length;o<a;o++)n[o].setAttribute("aria-checked",!1);t.media.setCurrentTime(parseFloat(e.value)),t.media.paused&&t.media.play()});for(var l=0,d=a.length;l<d;l++)a[l].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)})}},searchTrackPosition:function(e,t){for(var n=0,i=e.length-1,o=void 0,a=void 0,r=void 0;n<=i;){if(o=n+i>>1,a=e[o].start,r=e[o].stop,t>=a&&t<r)return o;a<t?n=o+1:a>t&&(i=o-1)}return-1}}),a.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},a.default.TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],i=void 0,o=void 0,a=void 0,r=0,s=t.length;r<s;r++){if((i=this.pattern.exec(t[r]))&&r<t.length){for(r-1>=0&&""!==t[r-1]&&(a=t[r-1]),o=t[++r],r++;""!==t[r]&&r<t.length;)o=o+"\n"+t[r],r++;o=o.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:a,start:0===(0,d.convertSMPTEtoSeconds)(i[1])?.2:(0,d.convertSMPTEtoSeconds)(i[1]),stop:(0,d.convertSMPTEtoSeconds)(i[3]),text:o,settings:i[5]})}a=""}return n}},dfxp:{parse:function(e){var t=(e=$(e).filter("tt")).firstChild,n=t.querySelectorAll("p"),i=e.getElementById(""+t.attr("style")),o=[],a=void 0;if(i.length){i.removeAttribute("id");var r=i.attributes;if(r.length){a={};for(var s=0,l=r.length;s<l;s++)a[r[s].name.split(":")[1]]=r[s].value}}for(var u=0,c=n.length;u<c;u++){var f=void 0,p={start:null,stop:null,style:null,text:null};if(n.eq(u).attr("begin")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("begin"))),!p.start&&n.eq(u-1).attr("end")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u-1).attr("end"))),n.eq(u).attr("end")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("end"))),!p.stop&&n.eq(u+1).attr("begin")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u+1).attr("begin"))),a){f="";for(var m in a)f+=m+":"+a[m]+";"}f&&(p.style=f),0===p.start&&(p.start=.2),p.text=n.eq(u).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),o.push(p)}return o}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(25),u=e(24);Object.assign(a.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(r.default.prototype,{buildvolume:function(e,t,n,i){if(!l.IS_ANDROID&&!l.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,r=a.isVideo?a.options.videoVolume:a.options.audioVolume,c=(0,d.isString)(a.options.muteText)?a.options.muteText:s.default.t("mejs.mute"),f=(0,d.isString)(a.options.unmuteText)?a.options.unmuteText:s.default.t("mejs.unmute"),p=(0,d.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:s.default.t("mejs.volume-help-text"),m=o.default.createElement("div");if(m.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",m.innerHTML="horizontal"===r?'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+s.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(m,"volume"),"horizontal"===r){var h=o.default.createElement("a");h.className=a.options.classPrefix+"horizontal-volume-slider",h.href="javascript:void(0);",h.setAttribute("aria-label",s.default.t("mejs.volume-slider")),h.setAttribute("aria-valuemin",0),h.setAttribute("aria-valuemax",100),h.setAttribute("role","slider"),h.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',m.parentNode.insertBefore(h,m.nextSibling)}var v=!1,y=!1,g=function(){var e=Math.floor(100*i.volume);b.setAttribute("aria-valuenow",e),b.setAttribute("aria-valuetext",e+"%")},b="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-slider"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),E="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-total"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-total"),S="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-current"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-current"),x="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-handle"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),w=function(e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute");var t=m.firstElementChild;t.setAttribute("title",f),t.setAttribute("aria-label",f)}else{(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute");var n=m.firstElementChild;n.setAttribute("title",c),n.setAttribute("aria-label",c)}var i=100*e+"%",o=getComputedStyle(x);"vertical"===r?(S.style.bottom=0,S.style.height=i,x.style.bottom=i,x.style.marginBottom=-parseFloat(o.height)/2+"px"):(S.style.left=0,S.style.width=i,x.style.left=i,x.style.marginLeft=-parseFloat(o.width)/2+"px")},P=function(e){var t=(0,u.offset)(E),n=getComputedStyle(E),o=null;if("vertical"===r){var a=parseFloat(n.height);if(o=(a-(e.pageY-t.top))/a,0===t.top||0===t.left)return}else{var s=parseFloat(n.width);o=(e.pageX-t.left)/s}o=Math.max(0,o),o=Math.min(o,1),w(o),0===o?i.setMuted(!0):i.setMuted(!1),i.setVolume(o),e.preventDefault(),e.stopPropagation()};m.addEventListener("mouseenter",function(e){e.target===m&&(b.style.display="block",y=!0,e.preventDefault(),e.stopPropagation())}),m.addEventListener("focusin",function(){b.style.display="block",y=!0}),m.addEventListener("focusout",function(e){e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider")||"vertical"!==r||(b.style.display="none")}),m.addEventListener("mouseleave",function(){y=!1,v||"vertical"!==r||(b.style.display="none")}),m.addEventListener("focusout",function(){y=!1}),m.addEventListener("keydown",function(e){if(a.options.keyActions.length){var t=e.which||e.keyCode||0,n=i.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}v=!1,w(n),i.setVolume(n),e.preventDefault(),e.stopPropagation()}}),m.querySelector("button").addEventListener("click",function(){i.setMuted(!i.muted);var e=(0,d.createEvent)("volumechange",i);i.dispatchEvent(e)}),b.addEventListener("dragstart",function(){return!1}),b.addEventListener("mouseover",function(){y=!0}),b.addEventListener("focusin",function(){b.style.display="block",y=!0}),b.addEventListener("focusout",function(){y=!1,v||"vertical"!==r||(b.style.display="none")}),b.addEventListener("mousedown",function(e){P(e),a.globalBind("mousemove.vol",function(e){var t=e.target;v&&(t===b||t.closest("vertical"===r?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&P(e)}),a.globalBind("mouseup.vol",function(){v=!1,a.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==r||(b.style.display="none")}),v=!0,e.preventDefault(),e.stopPropagation()}),i.addEventListener("volumechange",function(e){v||(i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))),g()}),0===e.options.startVolume&&i.setMuted(!0),i.setVolume(e.options.startVolume),a.container.addEventListener("controlsresize",function(){i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6));"undefined"!=typeof jQuery?a.default.$=o.default.jQuery=o.default.$=jQuery:"undefined"!=typeof Zepto?a.default.$=o.default.Zepto=o.default.$=Zepto:"undefined"!=typeof ender&&(a.default.$=o.default.ender=o.default.$=ender)},{3:3,6:6}],16:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=i(e(3)),l=i(e(2)),d=i(e(6)),u=i(e(5)),c=i(e(4)),f=e(23),p=e(25),m=e(28),h=e(26),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(24));d.default.mepIndex=0,d.default.players={};var y=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.duration},defaultSeekForwardInterval:function(e){return.05*e.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(e,t){f.IS_FIREFOX||(t.paused||t.ended?t.play():t.pause())}},{keys:[38],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.volume+.1,1);t.setVolume(n),n>0&&t.setMuted(!1)}},{keys:[40],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.volume-.1,0);t.setVolume(n),n<=.1&&t.setMuted(!0)}},{keys:[37,227],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.currentTime-e.options.defaultSeekBackwardInterval(t),0);t.setCurrentTime(n)}}},{keys:[39,228],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.currentTime+e.options.defaultSeekForwardInterval(t),t.duration);t.setCurrentTime(n)}}},{keys:[70],action:function(e,t,n,i){i.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}},{keys:[77],action:function(e){e.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}]};d.default.MepDefaults=y;var g=function(){function e(t,n){o(this,e);var i=this,a="string"==typeof t?l.default.getElementById(t):t;if(i.hasFocus=!1,i.controlsAreVisible=!0,i.controlsEnabled=!0,i.controlsTimer=null,!(i instanceof e))return new e(a,n);if(i.node=i.media=a,i.node){if(void 0!==i.media.player)return i.media.player;if(void 0===n){var r=i.node.getAttribute("data-mejsoptions");n=r?JSON.parse(r):{}}i.options=Object.assign({},y,n),i.options.timeFormat||(i.options.timeFormat="mm:ss",i.options.alwaysShowHours&&(i.options.timeFormat="hh:mm:ss"),i.options.showTimecodeFrameCount&&(i.options.timeFormat+=":ff")),(0,m.calculateTimeFormat)(0,i.options,i.options.framesPerSecond||25),i.id="mep_"+d.default.mepIndex++,d.default.players[i.id]=i;var s=Object.assign({},i.options,{success:function(e,t){i._meReady(e,t)},error:function(e){i._handleError(e)}}),g=i.node.tagName.toLowerCase();if(i.isDynamic="audio"!==g&&"video"!==g,i.isVideo=i.isDynamic?i.options.isVideo:"audio"!==g&&i.options.isVideo,i.mediaFiles=null,i.trackFiles=null,f.IS_IPAD&&i.options.iPadUseNativeControls||f.IS_IPHONE&&i.options.iPhoneUseNativeControls)i.node.setAttribute("controls",!0),f.IS_IPAD&&i.node.getAttribute("autoplay")&&i.play();else if(!(i.isVideo||!i.isVideo&&i.options.features.length)||f.IS_ANDROID&&i.options.AndroidUseNativeControls)i.isVideo||i.options.features.length||(i.node.style.display="none");else{i.node.removeAttribute("controls");var b=i.isVideo?c.default.t("mejs.video-player"):c.default.t("mejs.audio-player"),E=l.default.createElement("span");if(E.className=i.options.classPrefix+"offscreen",E.innerText=b,i.media.parentNode.insertBefore(E,i.media),i.container=l.default.createElement("div"),i.container.id=i.id,i.container.className=i.options.classPrefix+"container "+i.options.classPrefix+"container-keyboard-inactive "+i.media.className,i.container.tabIndex=0,i.container.setAttribute("role","application"),i.container.setAttribute("aria-label",b),i.container.innerHTML='<div class="'+i.options.classPrefix+'inner"><div class="'+i.options.classPrefix+'mediaelement"></div><div class="'+i.options.classPrefix+'layers"></div><div class="'+i.options.classPrefix+'controls"></div><div class="'+i.options.classPrefix+'clear"></div></div>',i.container.addEventListener("focus",function(e){if(!i.controlsAreVisible&&!i.hasFocus&&i.controlsEnabled){i.showControls(!0);var t=(0,p.isNodeAfter)(e.relatedTarget,i.container)?"."+i.options.classPrefix+"controls ."+i.options.classPrefix+"button:last-child > button":"."+i.options.classPrefix+"playpause-button > button";i.container.querySelector(t).focus()}}),i.node.parentNode.insertBefore(i.container,i.node),i.options.features.length||(i.container.style.background="transparent",i.container.querySelector("."+i.options.classPrefix+"controls").style.display="none"),i.isVideo&&"fill"===i.options.stretching&&!v.hasClass(i.container.parentNode,i.options.classPrefix+"fill-container")){i.outerContainer=i.media.parentNode;var S=l.default.createElement("div");S.className=i.options.classPrefix+"fill-container",i.container.parentNode.insertBefore(S,i.container),S.appendChild(i.container)}if(f.IS_ANDROID&&v.addClass(i.container,i.options.classPrefix+"android"),f.IS_IOS&&v.addClass(i.container,i.options.classPrefix+"ios"),f.IS_IPAD&&v.addClass(i.container,i.options.classPrefix+"ipad"),f.IS_IPHONE&&v.addClass(i.container,i.options.classPrefix+"iphone"),v.addClass(i.container,i.isVideo?i.options.classPrefix+"video":i.options.classPrefix+"audio"),f.IS_SAFARI&&!f.IS_IOS){v.addClass(i.container,i.options.classPrefix+"hide-cues");for(var x=i.node.cloneNode(),w=i.node.childNodes,P=[],T=[],C=0,k=w.length;C<k;C++){var _=w[C];_&&_.nodeType!==Node.TEXT_NODE&&function(){switch(_.tagName.toLowerCase()){case"source":var e={};Array.prototype.slice.call(_.attributes).forEach(function(t){e[t.name]=t.value}),e.type=(0,h.formatType)(e.src,e.type),P.push(e);break;case"track":_.mode="hidden",T.push(_);break;default:x.appendChild(_)}}()}i.node.remove(),i.node=i.media=x,P.length&&(i.mediaFiles=P),T.length&&(i.trackFiles=T)}i.container.querySelector("."+i.options.classPrefix+"mediaelement").appendChild(i.node),i.media.player=i,i.controls=i.container.querySelector("."+i.options.classPrefix+"controls"),i.layers=i.container.querySelector("."+i.options.classPrefix+"layers");var N=i.isVideo?"video":"audio",A=N.substring(0,1).toUpperCase()+N.substring(1);i.options[N+"Width"]>0||i.options[N+"Width"].toString().indexOf("%")>-1?i.width=i.options[N+"Width"]:""!==i.node.style.width&&null!==i.node.style.width?i.width=i.node.style.width:i.node.getAttribute("width")?i.width=i.node.getAttribute("width"):i.width=i.options["default"+A+"Width"],i.options[N+"Height"]>0||i.options[N+"Height"].toString().indexOf("%")>-1?i.height=i.options[N+"Height"]:""!==i.node.style.height&&null!==i.node.style.height?i.height=i.node.style.height:i.node.getAttribute("height")?i.height=i.node.getAttribute("height"):i.height=i.options["default"+A+"Height"],i.initialAspectRatio=i.height>=i.width?i.width/i.height:i.height/i.width,i.setPlayerSize(i.width,i.height),s.pluginWidth=i.width,s.pluginHeight=i.height}if(new u.default(i.media,s,i.mediaFiles),void 0!==i.container&&i.options.features.length&&i.controlsAreVisible&&!i.options.hideVideoControlsOnLoad){var L=(0,p.createEvent)("controlsshown",i.container);i.container.dispatchEvent(L)}return i}}return r(e,[{key:"showControls",value:function(e){var t=this;if(e=void 0===e||e,!t.controlsAreVisible&&t.isVideo){if(e)!function(){v.removeClass(t.controls,t.options.classPrefix+"offscreen"),v.fadeIn(t.controls,200,function(){var e=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(e)});for(var e=t.container.querySelectorAll("."+t.options.classPrefix+"control"),n=0,i=e.length;n<i;n++)!function(n,i){v.fadeIn(e[n],200,function(){v.removeClass(e[n],t.options.classPrefix+"offscreen")})}(n)}();else{v.removeClass(t.controls,t.options.classPrefix+"offscreen"),t.controls.style.display="",t.controls.style.opacity=1;for(var n=t.container.querySelectorAll("."+t.options.classPrefix+"control"),i=0,o=n.length;i<o;i++)v.removeClass(n[i],t.options.classPrefix+"offscreen"),n[i].style.display="";var a=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(a)}t.controlsAreVisible=!0,t.setControlsSize()}}},{key:"hideControls",value:function(e,t){var n=this;if(e=void 0===e||e,!0===t||!(!n.controlsAreVisible||n.options.alwaysShowControls||n.keyboardAction||n.media.paused&&4===n.media.readyState&&(!n.options.hideVideoControlsOnLoad&&n.media.currentTime<=0||!n.options.hideVideoControlsOnPause&&n.media.currentTime>0)||n.isVideo&&!n.options.hideVideoControlsOnLoad&&!n.media.readyState||n.media.ended)){if(e)!function(){v.fadeOut(n.controls,200,function(){v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="";var e=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(e)});for(var e=n.container.querySelectorAll("."+n.options.classPrefix+"control"),t=0,i=e.length;t<i;t++)!function(t,i){v.fadeOut(e[t],200,function(){v.addClass(e[t],n.options.classPrefix+"offscreen"),e[t].style.display=""})}(t)}();else{v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="",n.controls.style.opacity=0;for(var i=n.container.querySelectorAll("."+n.options.classPrefix+"control"),o=0,a=i.length;o<a;o++)v.addClass(i[o],n.options.classPrefix+"offscreen"),i[o].style.display="";var r=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(r)}n.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){var e=this;null!==e.controlsTimer&&(clearTimeout(e.controlsTimer),delete e.controlsTimer,e.controlsTimer=null)}},{key:"disableControls",value:function(){var e=this;e.killControlsTimer(),e.controlsEnabled=!0,e.hideControls(!1,!0)}},{key:"enableControls",value:function(){var e=this;e.controlsEnabled=!0,e.showControls(!1)}},{key:"_meReady",value:function(e,t){var n=this,i=t.getAttribute("autoplay"),o=!(void 0===i||null===i||"false"===i),a=null!==e.rendererName&&/(native|html5)/i.test(n.media.rendererName);if(n.controls&&n.enableControls(),n.container&&n.container.querySelector("."+n.options.classPrefix+"overlay-play")&&(n.container.querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(f.IS_ANDROID&&n.options.AndroidUseNativeControls||f.IS_IPAD&&n.options.iPadUseNativeControls||f.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length)return o&&a&&n.play(),void(n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));n.buildposter(n,n.controls,n.layers,n.media),n.buildkeyboard(n,n.controls,n.layers,n.media),n.buildoverlays(n,n.controls,n.layers,n.media),n.findTracks(),n.featurePosition={};for(var r=0,u=n.options.features.length;r<u;r++){var c=n.options.features[r];if(n["build"+c])try{n["build"+c](n,n.controls,n.layers,n.media)}catch(e){console.error("error building "+c,e)}}var h=(0,p.createEvent)("controlsready",n.container);n.container.dispatchEvent(h),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.media.paused&&t?n.pause():n.media.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t)}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!f.IS_ANDROID&&!f.IS_IOS||n.options.alwaysShowControls?(n.container.addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.container.addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.container.addEventListener("mouseleave",function(){n.controlsEnabled&&(n.media.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),o&&!n.options.alwaysShowControls&&n.hideControls(),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&null!==e.target&&!isNaN(e.target.videoHeight)&&(n.setPlayerSize(e.target.videoWidth,e.target.videoHeight),n.setControlsSize(),n.media.setSize(e.target.videoWidth,e.target.videoHeight))})),n.media.addEventListener("play",function(){n.hasFocus=!0;for(var e in d.default.players)if(d.default.players.hasOwnProperty(e)){var t=d.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||(t.pause(),t.hasFocus=!1)}}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.media.setCurrentTime(0),setTimeout(function(){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.stop?n.media.stop():n.media.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,m.calculateTimeFormat)(n.duration,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var y=null;n.media.addEventListener("timeupdate",function(){y!==n.media.duration&&(y=n.media.duration,(0,m.calculateTimeFormat)(y,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.container.addEventListener("click",function(e){v.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.container.addEventListener("focusin",function(e){v.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),n.controlsEnabled&&!n.options.alwaysShowControls&&n.showControls(!1)}),n.container.addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,n.isVideo&&!n.options.alwaysShowControls&&n.hideControls(!0))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalBind("resize",function(){n.isFullScreen||f.HAS_TRUE_NATIVE_FULLSCREEN&&l.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()})}o&&a&&n.play(),n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e){var t=this;t.controls&&t.disableControls();var n=t.layers.querySelector("."+t.options.classPrefix+"overlay-play");n&&(n.style.display="none"),t.options.error&&t.options.error(e)}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var e=this,t=function(){for(var t=void 0,n=e.container;n;){try{if(f.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&s.default.self!==s.default.top&&null!==s.default.frameElement)return s.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&v.visible(t))return t;n=t}return null}(),n=t?getComputedStyle(t,null):getComputedStyle(l.default.body,null),i=function(){return e.isVideo?e.media.videoWidth&&e.media.videoWidth>0?e.media.videoWidth:e.node.getAttribute("width")?e.node.getAttribute("width"):e.options.defaultVideoWidth:e.options.defaultAudioWidth}(),o=function(){return e.isVideo?e.media.videoHeight&&e.media.videoHeight>0?e.media.videoHeight:e.node.getAttribute("height")?e.node.getAttribute("height"):e.options.defaultVideoHeight:e.options.defaultAudioHeight}(),a=function(){var t=1;return e.isVideo?(t=e.media.videoWidth&&e.media.videoWidth>0&&e.media.videoHeight&&e.media.videoHeight>0?e.height>=e.width?e.media.videoWidth/e.media.videoHeight:e.media.videoHeight/e.media.videoWidth:e.initialAspectRatio,(isNaN(t)||t<.01||t>100)&&(t=1),t):t}(),r=parseFloat(n.height),d=void 0,u=parseFloat(n.width);if(d=e.isVideo?"100%"===e.height?parseFloat(u*o/i,10):e.height>=e.width?parseFloat(u/a,10):parseFloat(u*a,10):o,isNaN(d)&&(d=r),e.container.parentNode.length>0&&"body"===e.container.parentNode.tagName.toLowerCase()&&(u=s.default.innerWidth||l.default.documentElement.clientWidth||l.default.body.clientWidth,d=s.default.innerHeight||l.default.documentElement.clientHeight||l.default.body.clientHeight),d&&u){e.container.style.width=u+"px",e.container.style.height=d+"px",e.node.style.width="100%",e.node.style.height="100%",e.isVideo&&e.media.setSize&&e.media.setSize(u,d);for(var c=e.layers.childNodes,p=0,m=c.length;p<m;p++)c[p].style.width="100%",c[p].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=void 0,n=!1;try{s.default.self!==s.default.top?(n=!0,t=s.default.frameElement):t=e.outerContainer}catch(n){t=e.outerContainer}var i=getComputedStyle(t);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),n||parseFloat(i.width)||(t.style.width=e.media.offsetWidth+"px"),n||parseFloat(i.height)||(t.style.height=e.media.offsetHeight+"px"),i=getComputedStyle(t);var o=parseFloat(i.width),a=parseFloat(i.height);e.setDimensions("100%","100%");var r=e.container.querySelector(e.options.classPrefix+"poster img");r&&(r.style.display="");for(var l=e.container.querySelectorAll("object, embed, iframe, video"),d=e.height,u=e.width,c=o,f=d*o/u,p=u*a/d,m=a,h=p>o==!1,v=h?Math.floor(c):Math.floor(p),y=h?Math.floor(f):Math.floor(m),g=h?o+"px":v+"px",b=h?y+"px":a+"px",E=0,S=l.length;E<S;E++)l[E].style.height=b,l[E].style.width=g,e.media.setSize&&e.media.setSize(g,b),l[E].style.marginLeft=Math.floor((o-v)/2)+"px",l[E].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,p.isString)(e)&&e.indexOf("%")>-1?e:parseFloat(e)+"px",t=(0,p.isString)(t)&&t.indexOf("%")>-1?t:parseFloat(t)+"px",n.container.style.width=e,n.container.style.height=t;for(var i=n.layers.childNodes,o=0,a=i.length;o<a;o++)i[o].style.width=e,i[o].style.height=t}},{key:"setControlsSize",value:function(){var e=this;if(v.visible(e.container)&&e.rail&&v.visible(e.rail)){for(var t=getComputedStyle(e.rail),n=getComputedStyle(e.total),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),o=parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=0,r=v.siblings(e.rail,function(t){return t!==e.rail}),s=r.length,l=0;l<s;l++)a+=r[l].offsetWidth;a+=o+(0===o?2*i:i)+1;var d=parseFloat(e.controls.offsetWidth);e.rail.style.width=(a>d?0:d-a)+"px";var u=(0,p.createEvent)("controlsresize",e.container);e.container.dispatchEvent(u)}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var i=n.controls.childNodes[n.featurePosition[t]-1];i.parentNode.insertBefore(e,i.nextSibling)}else{n.controls.appendChild(e);for(var o=n.controls.childNodes,a=0,r=o.length;a<r;a++)if(e==o[a]){n.featurePosition[t]=a;break}}}},{key:"createIframeLayer",value:function(){var e=this;if(e.isVideo&&null!==e.media.rendererName&&e.media.rendererName.indexOf("iframe")>-1&&!l.default.getElementById(e.media.id+"-iframe-overlay")){var t=l.default.createElement("div"),n=l.default.getElementById(e.media.id+"_"+e.media.rendererName);t.id=e.media.id+"-iframe-overlay",t.className=e.options.classPrefix+"iframe-overlay",t.addEventListener("click",function(t){e.options.clickToPlayPause&&(e.media.paused?e.media.play():e.media.pause(),t.preventDefault(),t.stopPropagation())}),n.parentNode.insertBefore(t,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this,n=t.container.querySelector("."+t.options.classPrefix+"poster"),i=n.querySelector("img");i||((i=l.default.createElement("img")).className=t.options.classPrefix+"poster-img",i.width="100%",i.height="100%",n.appendChild(i)),i.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")'}},{key:"changeSkin",value:function(e){var t=this;t.container.className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.addEventListener(n,t,!1),n},"");if(e.w)for(var d=e.w.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.addEventListener(n,t,!1),n},"")}},{key:"globalUnbind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.removeEventListener(n,t,!1),n},"");if(e.w)for(var d=e.d.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.removeEventListener(n,t,!1),n},"")}},{key:"buildposter",value:function(e,t,n,i){var o=this,a=l.default.createElement("div");a.className=o.options.classPrefix+"poster "+o.options.classPrefix+"layer",n.appendChild(a);var r=e.media.getAttribute("poster");""!==e.options.poster&&(r=e.options.poster),r?o.setPoster(r):a.style.display="none",i.addEventListener("play",function(){a.style.display="none"}),i.addEventListener("playing",function(){a.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&i.addEventListener("ended",function(){a.style.display=""}),i.addEventListener("error",function(){a.style.display="none"}),e.options.showPosterWhenPaused&&i.addEventListener("pause",function(){i.ended||(a.style.display="")})}},{key:"buildoverlays",value:function(e,t,n,i){if(e.isVideo){var o=this,a=l.default.createElement("div"),r=l.default.createElement("div"),s=l.default.createElement("div"),d=t.querySelector("."+o.options.classPrefix+"time-buffering");a.style.display="none",a.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",a.innerHTML='<div class="'+o.options.classPrefix+'overlay-loading"><span class="'+o.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(a),r.style.display="none",r.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",r.innerHTML='<div class="'+o.options.classPrefix+'overlay-error"></div>',n.appendChild(r),s.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer "+o.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+o.options.classPrefix+'overlay-button" role="button" tabindex="0"aria-label="'+c.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(o.options.clickToPlayPause){var e=o.container.querySelector("."+o.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t)}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||f.IS_FIREFOX&&32===t){var n=(0,p.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==o.media.rendererName&&(/(youtube|facebook)/i.test(o.media.rendererName)&&!e.media.originalNode.getAttribute("poster")&&!e.options.poster||f.IS_STOCK_ANDROID)&&(s.style.display="none"),i.addEventListener("play",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("playing",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("seeking",function(){s.style.display="none",a.style.display="",d&&(d.style.display="")}),i.addEventListener("seeked",function(){s.style.display=i.paused&&!f.IS_STOCK_ANDROID?"":"none",a.style.display="none",d&&(d.style.display="")}),i.addEventListener("pause",function(){a.style.display="none",f.IS_STOCK_ANDROID||(s.style.display=""),d&&(d.style.display="none")}),i.addEventListener("waiting",function(){a.style.display="",d&&(d.style.display="")}),i.addEventListener("loadeddata",function(){a.style.display="",d&&(d.style.display=""),f.IS_ANDROID&&(i.canplayTimeout=setTimeout(function(){if(l.default.createEvent){var e=l.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),i.dispatchEvent(e)}},300))}),i.addEventListener("canplay",function(){a.style.display="none",d&&(d.style.display="none"),clearTimeout(i.canplayTimeout)}),i.addEventListener("error",function(e){o._handleError(e),a.style.display="none",s.style.display="none",d&&(d.style.display="none"),e.message&&(r.style.display="block",r.querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=e.message)}),i.addEventListener("keydown",function(t){o.onkeydown(e,i,t)})}}},{key:"buildkeyboard",value:function(e,t,n,i){var o=this;o.container.addEventListener("keydown",function(){o.keyboardAction=!0}),o.globalBind("keydown",function(t){var n=l.default.activeElement.closest("."+o.options.classPrefix+"container"),a=o.media.closest("."+o.options.classPrefix+"container");return o.hasFocus=!(!n||!a||n.id!==a.id),o.onkeydown(e,i,t)}),o.globalBind("click",function(e){o.hasFocus=!!e.target.closest("."+o.options.classPrefix+"container")})}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var i=0,o=e.options.keyActions.length;i<o;i++)for(var a=e.options.keyActions[i],r=0,s=a.keys.length;r<s;r++)n.keyCode===a.keys[r]&&(a.action(e,t,n.keyCode,n),n.preventDefault(),n.stopPropagation());return!0}},{key:"play",value:function(){var e=this;e.media.getCurrentTime()<=0&&e.load(),e.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(e){}}},{key:"load",value:function(){var e=this;e.isLoaded||e.media.load(),e.isLoaded=!0}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(e){var t=this,n=l.default.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer()}},{key:"remove",value:function(){var e=this,t=e.media.rendererName;e.media.paused||e.media.pause();var n=e.media.getSrc();e.media.setSrc("");for(var i in e.options.features){var o=e.options.features[i];if(e["clean"+o])try{e["clean"+o](e)}catch(e){console.error("error cleaning "+o,e)}}var r=e.node.getAttribute("width"),s=e.node.getAttribute("height");r?-1===r.indexOf("%")&&(r+="px"):r="auto",s?-1===s.indexOf("%")&&(s+="px"):s="auto",e.node.style.width=r,e.node.style.height=s,e.isDynamic?e.container.parentNode.insertBefore(e.node,e.container):function(){e.node.setAttribute("controls",!0),e.node.setAttribute("id",e.node.getAttribute("id").replace("_"+t,"").replace("_from_mejs","")),delete e.node.autoplay,""!==e.media.canPlayType((0,h.getTypeFromFile)(n))&&e.node.setAttribute("src",n),~t.indexOf("iframe")&&l.default.getElementById(e.media.id+"-iframe-overlay").remove();var i=e.node.cloneNode();if(i.style.display="",e.container.parentNode.insertBefore(i,e.container),e.node.remove(),e.mediaFiles)for(var o=0,a=e.mediaFiles.length;o<a;o++){var r=l.default.createElement("source");r.setAttribute("src",e.mediaFiles[o].src),r.setAttribute("type",e.mediaFiles[o].type),i.appendChild(r)}if(e.trackFiles)for(var s=0,d=e.trackFiles.length;s<d;s++)!function(t,n){var o=e.trackFiles[t],a=l.default.createElement("track");a.kind=o.kind,a.label=o.label,a.srclang=o.srclang,a.src=o.src,i.appendChild(a),a.addEventListener("load",function(){this.mode="showing",i.textTracks[t].mode="showing"})}(s);delete e.node,delete e.mediaFiles,delete e.trackFiles}(),"function"==typeof e.media.destroy&&e.media.destroy(),delete d.default.players[e.id],"object"===a(e.container)&&(e.container.parentNode.querySelector("."+e.options.classPrefix+"offscreen").remove(),e.container.remove()),e.globalUnbind(),delete e.media.player}}]),e}();s.default.MediaElementPlayer=g,n.default=g,function(e){void 0!==e&&(e.fn.mediaelementplayer=function(t){return!1===t?this.each(function(){var t=e(this).data("mediaelementplayer");t&&t.remove(),e(this).removeData("mediaelementplayer")}):this.each(function(){e(this).data("mediaelementplayer",new g(this,t))}),this},e(l.default).ready(function(){e("."+y.classPrefix+"player").mediaelementplayer()}))}(d.default.$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(26),d=e(23),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof dashjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();o.default["__ready__"+e.id](t)}},f={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(e){return d.HAS_MSE&&["application/dash+xml"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=i.getAttribute("preload"),u=i.autoplay,f=null,p=null;f=i.cloneNode(!0),t=Object.assign(t,e.options);for(var m=a.default.html5media.properties,h=0,v=m.length;h<v;h++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);f["get"+t]=function(){return null!==p?f[e]:null},f["set"+t]=function(t){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==p&&("src"===e&&(p.attachSource(t),u&&f.play()),f[e]=t)}}(m[h]);if(o.default["__ready__"+l]=function(n){e.dashPlayer=p=n,p.getDebug().setLogToBrowserConsole(t.dash.debug),p.setAutoPlay(d&&"auto"===d||u),p.setScheduleWhilePaused(d&&"auto"===d||u);for(var i=a.default.html5media.events.concat(["click","mouseover","mouseout"]),o=dashjs.MediaPlayer.events,r=0,l=i.length;r<l;r++)!function(t){"loadedmetadata"===t&&p.initialize(f,f.src,!1),f.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(i[r]);var c=function(t){var n=(0,s.createEvent)(t.type,f);n.data=t,e.dispatchEvent(n),"error"===t.type.toLowerCase()&&console.error(t)};for(var m in o)o.hasOwnProperty(m)&&p.on(o[m],c)},n&&n.length>0)for(var y=0,g=n.length;y<g;y++)if(r.renderer.renderers[t.prefix].canPlayType(n[y].type)){f.setAttribute("src",n[y].src);break}f.setAttribute("id",l),i.parentNode.insertBefore(f,i),i.autoplay=!1,i.style.display="none",c.load({options:t.dash,id:l}),f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f};var b=(0,s.createEvent)("rendererready",f);return e.dispatchEvent(b),f}};l.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=i(e(4)),d=e(7),u=e(25),c=e(23),f=e(26),p=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=p.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,i,o){p.plugins[e]=p.detectPlugin(t,n,i,o)},detectPlugin:function(e,t,n,i){var r=[0,0,0],s=void 0,l=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===o(c.NAV.plugins[e])){if((s=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(r=s.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)r[d]=parseInt(r[d].match(/\d+/),10)}else if(void 0!==a.default.ActiveXObject)try{(l=new ActiveXObject(n))&&(r=i(l))}catch(e){}return r}};p.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var m={create:function(e,t,n){var i={};i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var o=s.default.html5media.properties,p=0,m=o.length;p<m;p++)!function(e){i.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);i["get"+t]=function(){if(null!==i.flashApi){if(void 0!==i.flashApi["get_"+e]){var t=i.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},i["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==i.flashApi&&void 0!==i.flashApi["set_"+e]?i.flashApi["set_"+e](t):i.flashApiStack.push({type:"set",propName:e,value:t})}}(o[p]);var h=s.default.html5media.methods;h.push("stop");for(var v=0,y=h.length;v<y;v++)!function(e){i[e]=function(){if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var g=["rendererready"],b=0,E=g.length;b<E;b++){var S=(0,u.createEvent)(g[b],i);e.dispatchEvent(S)}a.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=r.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var o=n.propName,a=""+o.substring(0,1).toUpperCase()+o.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},a.default["__event__"+i.id]=function(e,t){var n=(0,u.createEvent)(e,i);n.message=t||"",i.mediaElement.dispatchEvent(n)},i.flashWrapper=r.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var x=e.originalNode.autoplay,w=["uid="+i.id,"autoplay="+x,"allowScriptAccess="+i.options.shimScriptAccess],P=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),T=P?e.originalNode.height:1,C=P?e.originalNode.width:1;e.originalNode.getAttribute("src")&&w.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(w.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),w.push("pseudostreamtype="+i.options.pseudoStreamingType)),e.appendChild(i.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var k=[];if(c.IS_IE){var _=r.default.createElement("div");i.flashWrapper.appendChild(_),k=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),_.outerHTML="<object "+k.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+w.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+l.default.t("mejs.install-flash")+"</div></object>"}else k=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+w.join("&")+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),i.flashWrapper.innerHTML="<embed "+k.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){P&&(i.flashNode.style.display="none")},i.show=function(){P&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&n.length>0)for(var N=0,A=n.length;N<A;N++)if(d.renderer.renderers[t.prefix].canPlayType(n[N].type)){i.setSrc(n[N].src);break}return i}};if(p.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(v);var y={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(y);var g={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(g);var b={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(b)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof flvjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=flvjs.createPlayer(e.options);o.default["__ready__"+e.id](t)}},f={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(e){return l.HAS_MSE&&["video/x-flv","video/flv"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=null,u=null;d=i.cloneNode(!0),t=Object.assign(t,e.options);for(var f=a.default.html5media.properties,p=0,m=f.length;p<m;p++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);d["get"+t]=function(){return null!==u?d[e]:null},d["set"+t]=function(t){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==u&&(d[e]=t,"src"===e&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()))}}(f[p]);if(o.default["__ready__"+l]=function(t){e.flvPlayer=u=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=0,o=n.length;i<o;i++)!function(t){"loadedmetadata"===t&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[i])},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(r.renderer.renderers[t.prefix].canPlayType(n[h].type)){d.setAttribute("src",n[h].src);break}d.setAttribute("id",l),i.parentNode.insertBefore(d,i),i.autoplay=!1,i.style.display="none",t.flv.type="flv",t.flv.url=d.getAttribute("src"),c.load({options:t.flv,id:l}),d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var y=(0,s.createEvent)("rendererready",d);return e.dispatchEvent(y),d}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof Hls?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=new Hls(e.options);return o.default["__ready__"+e.id](t),t}},f={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return l.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=i.getAttribute("preload"),u=i.autoplay,f=null,p=null;p=i.cloneNode(!0),(t=Object.assign(t,e.options)).hls.autoStartLoad=d&&"none"!==d||u;for(var m=a.default.html5media.properties,h=0,v=m.length;h<v;h++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);p["get"+n]=function(){return null!==f?p[e]:null},p["set"+n]=function(n){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==f&&(p[e]=n,"src"===e&&(f.destroy(),(f=c._createPlayer({options:t.hls,id:l})).loadSource(n),f.attachMedia(p)))}}(m[h]);if(o.default["__ready__"+l]=function(t){e.hlsPlayer=f=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=Hls.Events,o=0,r=n.length;o<r;o++)!function(t){if("loadedmetadata"===t){var n=e.originalNode.src;f.detachMedia(),f.loadSource(n),f.attachMedia(p)}p.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[o]);var l=void 0,d=void 0,u=function(t,n){var i=(0,s.createEvent)(t,p);if(i.data=n,e.dispatchEvent(i),"hlsError"===t&&(console.warn(t,n),n.fatal))switch(n.type){case"mediaError":var o=(new Date).getTime();!l||o-l>3e3?(l=(new Date).getTime(),f.recoverMediaError()):!d||o-d>3e3?(d=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),f.swapAudioCodec(),f.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:f.destroy()}};for(var c in i)i.hasOwnProperty(c)&&f.on(i[c],u)},n&&n.length>0)for(var y=0,g=n.length;y<g;y++)if(r.renderer.renderers[t.prefix].canPlayType(n[y].type)){p.setAttribute("src",n[y].src);break}"auto"===d||u||(p.addEventListener("play",function(){null!==f&&f.startLoad()}),p.addEventListener("pause",function(){null!==f&&f.stopLoad()})),p.setAttribute("id",l),i.parentNode.insertBefore(p,i),i.autoplay=!1,i.style.display="none",c.load({options:t.hls,id:l}),p.setSize=function(e,t){return p.style.width=e+"px",p.style.height=t+"px",p},p.hide=function(){return p.pause(),p.style.display="none",p},p.show=function(){return p.style.display="",p},p.destroy=function(){null!==f&&f.destroy()},p.stop=function(){null!==f&&f.stopLoad()};var b=(0,s.createEvent)("rendererready",p);return e.dispatchEvent(b),p}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],21:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=e(7),l=e(25),d=e(23),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=a.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var i=e.id+"_"+t.prefix,o=null;void 0===e.originalNode||null===e.originalNode?(o=a.default.createElement("audio"),e.appendChild(o)):o=e.originalNode,o.setAttribute("id",i);for(var d=r.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);o["get"+t]=function(){return o[e]},o["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&(o[e]=t)}}(d[u]);for(var f=r.default.html5media.events.concat(["click","mouseover","mouseout"]),p=0,m=f.length;p<m;p++)!function(t){o.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[p]);if(o.setSize=function(e,t){return o.style.width=e+"px",o.style.height=t+"px",o},o.hide=function(){return o.style.display="none",o},o.show=function(){return o.style.display="",o},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(s.renderer.renderers[t.prefix].canPlayType(n[h].type)){o.setAttribute("src",n[h].src);break}var y=(0,l.createEvent)("rendererready",o);return e.dispatchEvent(y),o}};o.default.HtmlMediaElement=r.default.HtmlMediaElement=u,s.renderer.add(u)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(7),d=e(25),u=e(26),c=e(24),f={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){f.isLoaded="undefined"!=typeof YT&&YT.loaded,f.isLoaded?f.createIframe(e):(f.loadIframeApi(),f.iframeQueue.push(e))},loadIframeApi:function(){f.isIframeStarted||((0,c.loadScript)("https://www.youtube.com/player_api"),f.isIframeStarted=!0)},iFrameReady:function(){for(f.isLoaded=!0,f.isIframeLoaded=!0;f.iframeQueue.length>0;){var e=f.iframeQueue.pop();f.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return e.indexOf("?")>0?""===(t=f.getYouTubeIdFromParam(e))&&(t=f.getYouTubeIdFromUrl(e)):t=f.getYouTubeIdFromUrl(e),t},getYouTubeIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",i=0,o=t.length;i<o;i++){var a=t[i].split("=");if("v"===a[0]){n=a[1];break}}return n},getYouTubeIdFromUrl:function(e){return void 0!==e&&null!==e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(void 0===e||null===e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(e,t,n){var i={},o=[],l=null,u=!0,c=!1,p=null,m=1;i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var h=s.default.html5media.properties,v=0,y=h.length;v<y;v++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+n]=function(){if(null!==l){switch(t){case"currentTime":return l.getCurrentTime();case"duration":return l.getDuration();case"volume":return m=l.getVolume()/100;case"paused":return u;case"ended":return c;case"muted":return l.isMuted();case"buffered":var e=l.getVideoLoadedFraction(),n=l.getDuration();return{start:function(){return 0},end:function(){return e*n},length:1};case"src":return l.getVideoUrl();case"readyState":return 4}return null}return null},i["set"+n]=function(n){if(null!==l)switch(t){case"src":var a="string"==typeof n?n:n[0].src,r=f.getYouTubeId(a);e.originalNode.autoplay?l.loadVideoById(r):l.cueVideoById(r);break;case"currentTime":l.seekTo(n);break;case"muted":n?l.mute():l.unMute(),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":m=n,l.setVolume(100*n),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var s=(0,d.createEvent)("canplay",i);e.dispatchEvent(s)}else o.push({type:"set",propName:t,value:n})}}(h[v]);for(var g=s.default.html5media.methods,b=0,E=g.length;b<E;b++)!function(e){i[e]=function(){if(null!==l)switch(e){case"play":return u=!1,l.playVideo();case"pause":return u=!0,l.pauseVideo();case"load":return null}else o.push({type:"call",methodName:e})}}(g[b]);var S=r.default.createElement("div");S.id=i.id,i.options.youtube.nocookie&&e.originalNode.setAttribute("src",f.getYouTubeNoCookieUrl(n[0].src)),e.originalNode.parentNode.insertBefore(S,e.originalNode),e.originalNode.style.display="none";var x="audio"===e.originalNode.tagName.toLowerCase(),w=x?"1":e.originalNode.height,P=x?"1":e.originalNode.width,T=f.getYouTubeId(n[0].src),C={id:i.id,containerId:S.id,videoId:T,height:w,width:P,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},i.options.youtube),origin:a.default.location.host,events:{onReady:function(t){if(e.youTubeApi=l=t.target,e.youTubeState={paused:!0,ended:!1},o.length)for(var n=0,a=o.length;n<a;n++){var r=o[n];if("set"===r.type){var s=r.propName,u=""+s.substring(0,1).toUpperCase()+s.substring(1);i["set"+u](r.value)}else"call"===r.type&&i[r.methodName]()}p=l.getIframe();for(var c=["mouseover","mouseout"],f=function(t){var n=(0,d.createEvent)(t.type,i);e.dispatchEvent(n)},m=0,h=c.length;m<h;m++)p.addEventListener(c[m],f,!1);for(var v=["rendererready","loadeddata","loadedmetadata","canplay"],y=0,g=v.length;y<g;y++){var b=(0,d.createEvent)(v[y],i);e.dispatchEvent(b)}},onStateChange:function(t){var n=[];switch(t.data){case-1:n=["loadedmetadata"],u=!0,c=!1;break;case 0:n=["ended"],u=!1,c=!0,i.stopInterval();break;case 1:n=["play","playing"],u=!1,c=!1,i.startInterval();break;case 2:n=["pause"],u=!0,c=!1,i.stopInterval();break;case 3:n=["progress"],c=!1;break;case 5:n=["loadeddata","loadedmetadata","canplay"],u=!0,c=!1}for(var o=0,a=n.length;o<a;o++){var r=(0,d.createEvent)(n[o],i);e.dispatchEvent(r)}},onError:function(t){var n=(0,d.createEvent)("error",i);n.data=t.data,e.dispatchEvent(n)}}};return x&&(C.playerVars.playsinline=1),f.enqueueIframe(C),i.onEvent=function(t,n,i){null!==i&&void 0!==i&&(e.youTubeState=i)},i.setSize=function(e,t){null!==l&&l.setSize(e,t)},i.hide=function(){i.stopInterval(),i.pause(),p&&(p.style.display="none")},i.show=function(){p&&(p.style.display="")},i.destroy=function(){l.destroy()},i.interval=null,i.startInterval=function(){i.interval=setInterval(function(){var t=(0,d.createEvent)("timeupdate",i);e.dispatchEvent(t)},250)},i.stopInterval=function(){i.interval&&clearInterval(i.interval)},i}};a.default.postMessage&&o(a.default.addEventListener)&&(a.default.onYouTubePlayerAPIReady=function(){f.iFrameReady()},u.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.be)/i.test(e)?"video/x-youtube":null}),l.renderer.add(p))},{2:2,24:24,25:25,26:26,3:3,6:6,7:7}],23:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=n.NAV=o.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l),u=n.IS_IPHONE=/iphone/i.test(l),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(l)),f=n.IS_IE=/(trident|microsoft)/i.test(s.appName),p=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in a.default)),m=n.IS_CHROME=/chrome/i.test(l),h=n.IS_FIREFOX=/firefox/i.test(l),v=n.IS_SAFARI=/safari/i.test(l)&&!m,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),g=(n.HAS_MSE="MediaSource"in o.default),b=(n.SUPPORT_POINTER_EVENTS=function(){var e=a.default.createElement("x"),t=a.default.documentElement,n=o.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var i=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!i}()),E=["source","track","audio","video"],S=void 0,x=0,w=E.length;x<w;x++)S=a.default.createElement(E[x]);var P=n.SUPPORTS_NATIVE_HLS=v||c&&(m||y)||f&&/edge/i.test(l),T=void 0!==S.webkitEnterFullscreen,C=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(l)&&(C=!1,T=!1);var k=void 0!==S.webkitRequestFullScreen,_=void 0!==S.mozRequestFullScreen,N=void 0!==S.msRequestFullscreen,A=k||_||N,L=A,F="",j=void 0,I=void 0,M=void 0;_?L=a.default.mozFullScreenEnabled:N&&(L=a.default.msFullscreenEnabled),m&&(T=!1),A&&(k?F="webkitfullscreenchange":_?F="mozfullscreenchange":N&&(F="MSFullscreenChange"),n.isFullScreen=j=function(){return _?a.default.mozFullScreen:k?a.default.webkitIsFullScreen:N?null!==a.default.msFullscreenElement:void 0},n.requestFullScreen=I=function(e){k?e.webkitRequestFullScreen():_?e.mozRequestFullScreen():N&&e.msRequestFullscreen()},n.cancelFullScreen=M=function(){k?a.default.webkitCancelFullScreen():_?a.default.mozCancelFullScreen():N&&a.default.msExitFullscreen()});var O=n.HAS_NATIVE_FULLSCREEN=C,H=n.HAS_WEBKIT_NATIVE_FULLSCREEN=k,q=n.HAS_MOZ_NATIVE_FULLSCREEN=_,R=n.HAS_MS_NATIVE_FULLSCREEN=N,U=n.HAS_IOS_FULLSCREEN=T,V=n.HAS_TRUE_NATIVE_FULLSCREEN=A,D=n.HAS_NATIVE_FULLSCREEN_ENABLED=L,B=n.FULLSCREEN_EVENT_NAME=F;n.isFullScreen=j,n.requestFullScreen=I,n.cancelFullScreen=M,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=c,r.default.Features.isIE=f,r.default.Features.isEdge=p,r.default.Features.isChrome=m,r.default.Features.isFirefox=h,r.default.Features.isSafari=v,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=g,r.default.Features.supportsNativeHLS=P,r.default.Features.supportsPointerEvents=b,r.default.Features.hasiOSFullScreen=U,r.default.Features.hasNativeFullscreen=O,r.default.Features.hasWebkitNativeFullScreen=H,r.default.Features.hasMozNativeFullScreen=q,r.default.Features.hasMsNativeFullScreen=R,r.default.Features.hasTrueNativeFullScreen=V,r.default.Features.nativeFullScreenEnabled=D,r.default.Features.fullScreenEventName=B,r.default.Features.isFullScreen=j,r.default.Features.requestFullScreen=I,r.default.Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){for(o=e;a=n.shift();)a[i]&&a[i](o)}var n=[],i=-1,o=void 0,a=void 0;return e(function(e){return t(e,i=0)},function(e){return t(e,i=1)}),{then:function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];~i?t[i]&&t[i](o):n.push(t)}}}function a(e){return o(function(t,n){var i=m.default.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},m.default.head.appendChild(i)})}function r(e){var t=e.getBoundingClientRect(),n=p.default.pageXOffset||m.default.documentElement.scrollLeft,i=p.default.pageYOffset||m.default.documentElement.scrollTop;return{top:t.top+i,left:t.left+n}}function s(e,t){b(e,t)?S(e,t):E(e,t)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(1-r/t,2);e.style.opacity=s<0?0:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(r/t,2);e.style.opacity=s>1?1:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,i){var o=p.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),a="application/x-www-form-urlencoded; charset=UTF-8",r=!1,s="*/".concat("*");switch(t){case"text":a="text/plain";break;case"json":a="application/json, text/javascript";break;case"html":a="text/html";break;case"xml":a="application/xml, text/xml"}"application/x-www-form-urlencoded"!==a&&(s=a+", */*; q=0.01"),o&&(o.open("GET",e,!0),o.setRequestHeader("Accept",s),o.onreadystatechange=function(){if(!r&&4===o.readyState)if(200===o.status){r=!0;var e=void 0;switch(t){case"json":e=JSON.parse(o.responseText);break;case"xml":e=o.responseXML;break;default:e=o.responseText}n(e)}else"function"==typeof i&&i(o.status)},o.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=r,n.toggleClass=s,n.fadeOut=l,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var p=i(e(3)),m=i(e(2)),h=i(e(6)),v=void 0,y=void 0,g=void 0;"classList"in m.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},y=function(e,t){return e.classList.add(t)},g=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},y=function(e,t){b(e,t)||(e.className+=" "+t)},g=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var b=n.hasClass=v,E=n.addClass=y,S=n.removeClass=g;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=r,h.default.Utils.hasClass=b,h.default.Utils.addClass=E,h.default.Utils.removeClass=S,h.default.Utils.toggleClass=s,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=l,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=a},{2:2,3:3,6:6}],25:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function o(e,t){var n=this,i=arguments,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var a=void 0;return function(){var r=n,s=i,l=function(){a=null,o||e.apply(r,s)},d=o&&!a;clearTimeout(a),a=setTimeout(l,t),d&&e.apply(r,s)}}function a(e){return Object.getOwnPropertyNames(e).length<=0}function r(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var o=e+(t?"."+t:"");o.startsWith(".")?(i.d.push(o),i.w.push(o)):i[n.test(e)?"w":"d"].push(o)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function s(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),i={target:t};return null!==n&&(e=n[1],i.namespace=n[2]),new window.CustomEvent(e,{detail:i})}function l(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=i,n.debounce=o,n.isObjectEmpty=a,n.splitEvents=r,n.createEvent=s,n.isNodeAfter=l,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=i,u.default.Utils.debounce=o,u.default.Utils.isObjectEmpty=a,u.default.Utils.splitEvents=r,u.default.Utils.createEvent=s,u.default.Utils.isNodeAfter=l,u.default.Utils.isString=d},{6:6}],26:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?r(e):a(t)}function a(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var i=c[t](e);if(i)return i}var o=l(s(e)),a="video/mp4";return o&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(o)?a="video/"+o:~["mp3","oga","wav","mid","midi"].indexOf(o)&&(a="audio/"+o)),a}function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function l(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=i,n.formatType=o,n.getMimeFromType=a,n.getTypeFromFile=r,n.getExtension=s,n.normalizeExtension=l;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(25),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=i,d.default.Utils.formatType=o,d.default.Utils.getMimeFromType=a,d.default.Utils.getTypeFromFile=r,d.default.Utils.getExtension=s,d.default.Utils.normalizeExtension=l},{25:25,6:6}],27:[function(e,t,n){"use strict";var i=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,i=arguments.length;n<i;n++){var o=arguments[n];if(null!==o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,i=this;do{for(n=t.length;--n>=0&&t.item(n)!==i;);}while(n<0&&(i=i.parentElement));return i}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+i)},i);return e=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}],28:[function(e,t,n){"use strict";function i(){return!((arguments.length>0&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;e=!e||"number"!=typeof e||e<0?0:e;var r=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=i(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(i(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*r*Math.floor(h/d),v>r&&(h+=r*Math.floor((v-r)/Math.round(60*s-r)));var y=Math.floor(h/s);c=Math.floor(Math.floor(y/60)/60),f=Math.floor(y/60)%60,p=n?y%60:(h/s%60).toFixed(a)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):(e%60).toFixed(a);c=c<=0?0:c,f=f<=0?0:f,p=p<=0?0:p;var g=t||c>0?(c<10?"0"+c:c)+":":"";return g+=(f<10?"0"+f:f)+":",g+=""+(p<10?"0"+p:p),n&&(g+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10?u+"0"+m:""+u+m),g}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(e.indexOf(";")>0&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,a=0,r=0,s=0,l=0,d=0,u=Math.round(.066666*t),c=Math.round(t),f=3600*c,p=60*c;switch(n.length){default:case 1:s=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),s=parseInt(n[1],10);break;case 3:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10);break;case 4:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10),l=parseInt(n[3],10)}return o=i(t)?f*a+p*r+c*s+l-u*((d=60*a+r)-Math.floor(d/10)):(f*a+p*r+t*s+l)/t,parseFloat(o.toFixed(3))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var i=Math.floor(e/3600)%24,o=Math.floor(e/60)%60,a=Math.floor(e%60),r=[[Math.floor((e%1*n).toFixed(3)),"f"],[a,"s"],[o,"m"],[i,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=r.length;p<m;p++)if(~s.indexOf(r[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(r[v][0]>0){h=!0;break}if(!h)break;l||(s=c+s),s=r[p][1]+u+s,l&&(s=r[p][1]+s),c=r[p][1]}t.currentTimeFormat=s}function s(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,i=1,o=0,a=(e=e.split(":").reverse()).length;o<a;o++)i=1,o>0&&(i=Math.pow(60,o)),n+=Number(e[o])*i;return Number(n.toFixed(t))}Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=i,n.secondsToTimeCode=o,n.timeCodeToSeconds=a,n.calculateTimeFormat=r,n.convertSMPTEtoSeconds=s;var l=function(e){return e&&e.__esModule?e:{default:e}}(e(6));l.default.Utils=l.default.Utils||{},l.default.Utils.secondsToTimeCode=o,l.default.Utils.timeCodeToSeconds=a,l.default.Utils.calculateTimeFormat=r,l.default.Utils.convertSMPTEtoSeconds=s},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]); \ No newline at end of file diff --git a/lib/mejs/mediaelement.js b/lib/mejs/mediaelement.js index b89b2bba689635cd12297f201bdc733a0d294efc..2d0ffd6afa9abe1c5e8f93a42915d759b850004d 100644 --- a/lib/mejs/mediaelement.js +++ b/lib/mejs/mediaelement.js @@ -57,24 +57,12 @@ var _mejs2 = _interopRequireDefault(_mejs); var _en = _dereq_(8); -var _general = _dereq_(16); +var _general = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Locale. - * - * This object manages translations with pluralization. Also deals with WordPress compatibility. - * @type {Object} - */ var i18n = { lang: 'en', en: _en.EN }; -/** - * Language setter/getter - * - * @param {*} args Can pass the language code and/or the translation strings as an Object - * @return {string} - */ i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -86,13 +74,12 @@ i18n.language = function () { throw new TypeError('Language code must be a string value'); } - if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) { + if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format `xx` or `xx-xx`'); } i18n.lang = args[0]; - // Check if language strings were added; otherwise, check the second argument or set to English as default if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; @@ -104,13 +91,6 @@ i18n.language = function () { return i18n.lang; }; -/** - * Translate a string in the language set up (or English by default) - * - * @param {string} message - * @param {number} pluralParam - * @return {string} - */ i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; @@ -122,57 +102,20 @@ i18n.t = function (message) { var language = i18n.language(); - /** - * Modify string using algorithm to detect plural forms. - * - * @private - * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings - * @param {String|String[]} input - String or array of strings to pick the plural form - * @param {Number} number - Number to determine the proper plural form - * @param {Number} form - Number of language family to apply plural form - * @return {String} - */ var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } - /** - * - * @return {Function[]} - * @private - */ var _pluralForms = function () { - return [ - // 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará, - // Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay, - // Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof - function () { + return [function () { return arguments.length <= 1 ? undefined : arguments[1]; - }, - - // 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish, - // Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans, - // Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri, - // Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa, - // Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch, - // Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal, - // Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento, - // Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala, - // Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino, - // Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 3: Latvian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { @@ -180,10 +123,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 4: Scottish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { @@ -193,10 +133,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 5: Romanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { @@ -204,10 +141,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 6: Lithuanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -215,10 +149,7 @@ i18n.t = function (message) { } else { return [3]; } - }, - - // 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -226,10 +157,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 8: Slovak, Czech - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { @@ -237,10 +165,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 9: Polish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -248,10 +173,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 10: Slovenian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { @@ -261,10 +183,7 @@ i18n.t = function (message) { } else { return arguments.length <= 1 ? undefined : arguments[1]; } - }, - - // 11: Irish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -276,10 +195,7 @@ i18n.t = function (message) { } else { return arguments.length <= 5 ? undefined : arguments[5]; } - }, - - // 12: Arabic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -293,10 +209,7 @@ i18n.t = function (message) { } else { return arguments.length <= 6 ? undefined : arguments[6]; } - }, - - // 13: Maltese - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { @@ -306,10 +219,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 14: Macedonian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { @@ -317,19 +227,9 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 15: Icelandic - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // New additions - - // 16: Kashubian - // In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules - // Breton is listed as #16 but in the Localization Guide it belongs to the group 2 - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -337,10 +237,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 17: Welsh - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -350,15 +247,9 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 18: Javanese - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 19: Cornish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -368,10 +259,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 20: Mandinka - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -382,11 +270,9 @@ i18n.t = function (message) { }]; }(); - // Perform plural form or return original text return _pluralForms[form].apply(null, [number].concat(input)); }; - // Fetch the localized version of the string if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -395,7 +281,6 @@ i18n.t = function (message) { } } - // Fallback to default language if requested uid is not translated if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -404,11 +289,8 @@ i18n.t = function (message) { } } - // As a last resort, use the requested uid, to mimic original behavior of i18n utils - // (in which uid was the english text) str = str || message; - // Replace token if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } @@ -421,14 +303,13 @@ i18n.t = function (message) { _mejs2.default.i18n = i18n; -// `i18n` compatibility workflow with WordPress if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } exports.default = i18n; -},{"16":16,"6":6,"8":8}],5:[function(_dereq_,module,exports){ +},{"17":17,"6":6,"8":8}],5:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -447,32 +328,19 @@ var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); -var _general = _dereq_(16); +var _general = _dereq_(17); -var _media = _dereq_(17); +var _media = _dereq_(18); var _renderer = _dereq_(7); +var _constants = _dereq_(15); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * Media Core - * - * This class is the foundation to create/render different media formats. - * @class MediaElement - */ -var MediaElement = - -/** - * - * @param {String|Node} idOrNode - * @param {Object} options - * @param {Object[]} sources - * @returns {Element|*} - */ -function MediaElement(idOrNode, options, sources) { +var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); @@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) { sources = Array.isArray(sources) ? sources : null; t.defaults = { - /** - * List of the renderers to use - * @type {String[]} - */ renderers: [], - /** - * Name of MediaElement container - * @type {String} - */ + fakeNodeName: 'mediaelementwrapper', - /** - * The path where shims are located - * @type {String} - */ + pluginPath: 'build/', - /** - * Flag in `<object>` and `<embed>` to determine whether to use local or CDN - * Possible values: 'always' (CDN version) or 'sameDomain' (local files) - */ + shimScriptAccess: 'sameDomain', - /** - * If error happens, set up HTML message - * @type {String} - */ + customError: '' }; options = Object.assign(t.defaults, options); - // create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes) t.mediaElement = _document2.default.createElement(options.fakeNodeName); t.mediaElement.options = options; @@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) { id = id || 'mejs_' + Math.random().toString().slice(2); if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) { - // change id t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); - // to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set - // only if video/audio tags are detected var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); - if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) { + if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } - // add next to this one t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); - // insert this one inside t.mediaElement.appendChild(t.mediaElement.originalNode); - } else { - // TODO: where to put the node? - } + } else {} t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; - /** - * Determine whether the renderer was found or not - * - * @public - * @param {String} rendererName - * @param {Object[]} mediaFiles - * @return {Boolean} - */ + t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this; - // check for a match on the current renderer if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) { return true; } - // if existing renderer is not the right one, then hide it if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.renderer.hide(); } - // see if we have the renderer already created var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; @@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) { var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; - // find the desired renderer in the array of possible ones for (var i = 0, total = rendererArray.length; i < total; i++) { var index = rendererArray[i]; if (index === rendererName) { - - // create the renderer var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; @@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) { newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; - // store for later t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; @@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * Set the element dimensions based on selected renderer's setSize method - * - * @public - * @param {number} width - * @param {number} height - */ t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; - /** - * - * @param {Object[]} urlList - */ t.mediaElement.createErrorMessage = function (urlList) { urlList = Array.isArray(urlList) ? urlList : []; @@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) { var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { - - // wrapper functions var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); @@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement['set' + capName] = setFn; } }, - - // `src` is a property separated from the others since it carries the logic to set the proper renderer - // based on the media files detected - getSrc = function getSrc() { + getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { - var mediaFiles = []; - // clean up URLs if (typeof value === 'string') { mediaFiles.push({ src: value, @@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) { } } - // find a renderer and URL match var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; - // Ensure that the original gets the first source found if (!t.mediaElement.paused) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); @@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.querySelector('.me_cannotplay').remove(); } - // did we find a renderer? if (renderInfo === null) { t.mediaElement.createErrorMessage(mediaFiles); event = (0, _general.createEvent)('error', t.mediaElement); @@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) { return; } - // turn on the renderer (this checks for the existing renderer already) t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles); if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) { @@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) { event.message = 'Error creating renderer'; t.mediaElement.dispatchEvent(event); t.mediaElement.createErrorMessage(mediaFiles); - return; } }, assignMethods = function assignMethods(methodName) { - // run the method on the current renderer t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) { }; }; - // Assign all methods/properties/events to fake node if renderer was found addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; @@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) { assignMethods(methods[_i]); } - // IE && iOS t.mediaElement.events = {}; - // start: fake events t.mediaElement.addEventListener = function (eventName, callback) { - // create or find the array of callbacks for this eventName t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; - // push the callback into the stack t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { - // no eventName means remove all listeners if (!eventName) { t.mediaElement.events = {}; return true; } - // see if we have any callbacks for this eventName var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } - // check for a specific callback if (!callback) { t.mediaElement.events[eventName] = []; return true; } - // remove the specific callback for (var _i2 = 0; _i2 < callbacks.length; _i2++) { if (callbacks[_i2] === callback) { t.mediaElement.events[eventName].splice(_i2, 1); @@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * - * @param {Event} event - */ t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; @@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) { } }; + var processURL = function processURL(url, type) { + + if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + var _url = _window2.default.URL || _window2.default.webkitURL, + blobUrl = _url.createObjectURL(this.response); + t.mediaElement.originalNode.setAttribute('src', blobUrl); + return blobUrl; + } + return url; + }; + xhr.open('GET', url); + xhr.responseType = 'blob'; + xhr.send(); + } + + return url; + }; + var mediaFiles = void 0; if (sources !== null) { @@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { - case 'iframe': mediaFiles.push({ type: '', @@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) { }); break; - case 'audio': case 'video': var _sources = t.mediaElement.originalNode.childNodes.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); - // Consider if node contains the `src` and `type` attributes if (nodeSource) { - var node = t.mediaElement.originalNode; + var node = t.mediaElement.originalNode, + type = (0, _media.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ - type: (0, _media.formatType)(nodeSource, node.getAttribute('type')), - src: nodeSource + type: type, + src: processURL(nodeSource, type) }); } - // test <source> types to see if they are usable for (var _i4 = 0; _i4 < _sources; _i4++) { var n = t.mediaElement.originalNode.childNodes[_i4]; if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), - type = (0, _media.formatType)(src, n.getAttribute('type')); - mediaFiles.push({ type: type, src: src }); + _type = (0, _media.formatType)(src, n.getAttribute('type')); + mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } - // Set the best match based on renderers if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } @@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement; exports.default = MediaElement; -},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ +},{"15":15,"17":17,"18":18,"2":2,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Namespace var mejs = {}; -// version number -mejs.version = '4.1.0'; +mejs.version = '4.1.1'; -// Basic HTML5 settings mejs.html5media = { - /** - * @type {String[]} - */ - properties: [ - // GET/SET - 'volume', 'src', 'currentTime', 'muted', - - // GET only - 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', - - // OTHERS - 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], + properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], - /** - * @type {String[]} - */ + methods: ['load', 'play', 'pause', 'canPlayType'], - /** - * @type {String[]} - */ + events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'], - /** - * @type {String[]} - */ - mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg'] + + mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; @@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * - * Class to manage renderer selection and addition. - * @class Renderer - */ var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); @@ -1014,18 +799,9 @@ var Renderer = function () { this.order = []; } - /** - * Register a new renderer. - * - * @param {Object} renderer - An object with all the rendered information (name REQUIRED) - * @method add - */ - - _createClass(Renderer, [{ key: 'add', value: function add(renderer) { - if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } @@ -1033,35 +809,20 @@ var Renderer = function () { this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } - - /** - * Iterate a list of renderers to determine which one should the player use. - * - * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}] - * @param {?String[]} renderers - Optional list of pre-selected renderers - * @return {?Object} The renderer's name and source selected - * @method select - */ - }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; - // If renderers are not set, set a default order: - // 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV) - // 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG) - // 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.) if (!renderersLength) { - var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/], + var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { - if (renderer.match(rendererIndicator[i]) !== null) { + if (rendererIndicator[i].test(renderer)) { return i; } } @@ -1091,13 +852,9 @@ var Renderer = function () { return null; } - - // Setters/getters - }, { key: 'order', set: function set(order) { - if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } @@ -1110,7 +867,6 @@ var Renderer = function () { }, { key: 'renderers', set: function set(renderers) { - if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } @@ -1132,53 +888,33 @@ _mejs2.default.Renderers = renderer; },{"6":6}],8:[function(_dereq_,module,exports){ 'use strict'; -/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js - */ - Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { "mejs.plural-form": 1, - // core/mediaelement.js "mejs.download-file": "Download File", - // renderers/flash.js "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", - // features/fullscreen.js "mejs.fullscreen": "Fullscreen", - // features/playpause.js "mejs.play": "Play", "mejs.pause": "Pause", - // features/progress.js "mejs.time-slider": "Time Slider", "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", "mejs.live-broadcast": "Live Broadcast", - // features/volume.js "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", "mejs.unmute": "Unmute", "mejs.mute": "Mute", "mejs.volume-slider": "Volume Slider", - // core/player.js "mejs.video-player": "Video Player", "mejs.audio-player": "Audio Player", - // features/tracks.js "mejs.captions-subtitles": "Captions/Subtitles", "mejs.captions-chapters": "Chapters", "mejs.none": "None", @@ -1246,115 +982,40 @@ var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); -var _media = _dereq_(17); +var _media = _dereq_(18); var _constants = _dereq_(15); +var _dom = _dereq_(16); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native M(PEG)-Dash renderer - * - * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers. - * It relies on HTML5 video and MediaSource Extensions for playback. - * This renderer integrates new events associated with mpd files. - * @see https://github.com/Dash-Industry-Forum/dash.js - * - */ var NativeDash = { - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an DASH source - * - * @param {Object} settings - an object with settings needed to load an DASH player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeDash.isLoaded) { - NativeDash.createInstance(settings); - } else { - NativeDash.loadScript(settings); - NativeDash.creationQueue.push(settings); - } - }, - /** - * Load dash.mediaplayer.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an DASH player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof dashjs !== 'undefined') { - NativeDash.createInstance(settings); - } else if (!NativeDash.isScriptLoaded) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeDash.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - - NativeDash.isScriptLoaded = true; - } - }, - - /** - * Process queue of DASH player creation - * - */ - mediaReady: function mediaReady() { - - NativeDash.isLoaded = true; - NativeDash.isScriptLoaded = true; + NativeDash._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js'; - while (NativeDash.creationQueue.length > 0) { - var settings = NativeDash.creationQueue.pop(); - NativeDash.createInstance(settings); + NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); + NativeDash.promise.then(function () { + NativeDash._createPlayer(settings); + }); } }, - /** - * Create a new instance of DASH player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate DASH object - */ - createInstance: function createInstance(settings) { - + _createPlayer: function _createPlayer(settings) { var player = dashjs.MediaPlayer().create(); _window2.default['__ready__' + settings.id](player); } @@ -1362,33 +1023,18 @@ var NativeDash = { var DashNativeRenderer = { name: 'native_dash', - options: { prefix: 'native_dash', dash: { - // Special config: used to set the local path/URL of dash.js player library - path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js', + path: 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js', debug: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['application/dash+xml'].includes(type); + return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -1411,10 +1057,9 @@ var DashNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (dashPlayer !== null) { if (propName === 'src') { - dashPlayer.attachSource(value); if (autoplay) { node.play(); @@ -1431,7 +1076,6 @@ var DashNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all M-Dash events _window2.default['__ready__' + id] = function (_dashPlayer) { mediaElement.dashPlayer = dashPlayer = _dashPlayer; @@ -1443,7 +1087,6 @@ var DashNativeRenderer = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), dashEvents = dashjs.MediaPlayer.events, assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { dashPlayer.initialize(node, node.src, false); } @@ -1458,13 +1101,6 @@ var DashNativeRenderer = { assignEvents(events[_i]); } - /** - * Custom M(PEG)-DASH events - * - * These events can be attached to the original node using addEventListener and the name of the event, - * not using dashjs.MediaPlayer.events object - * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html - */ var assignMdashEvents = function assignMdashEvents(e) { var event = (0, _general.createEvent)(e.type, node); event.data = e; @@ -1497,12 +1133,11 @@ var DashNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - NativeDash.prepareSettings({ + NativeDash.load({ options: options.dash, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -1527,18 +1162,13 @@ var DashNativeRenderer = { } }; -/** - * Register Native M(PEG)-Dash type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.mpd') ? 'application/dash+xml' : null; + return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; }); _renderer.renderer.add(DashNativeRenderer); -},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],10:[function(_dereq_,module,exports){ +},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],10:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -1566,38 +1196,17 @@ var _i18n2 = _interopRequireDefault(_i18n); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); var _constants = _dereq_(15); -var _media = _dereq_(17); +var _media = _dereq_(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Shim that falls back to Flash if a media type is not supported. - * - * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE), - * will play using Flash. - */ - -/** - * Core detector, plugins are added below - * - */ var PluginDetector = exports.PluginDetector = { - /** - * Cached version numbers - * @type {Array} - */ plugins: [], - /** - * Test a plugin version number - * @param {String} plugin - In this scenario 'flash' will be tested - * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision) - * @return {Boolean} - */ hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; @@ -1605,36 +1214,16 @@ var PluginDetector = exports.PluginDetector = { return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, - /** - * Detect plugin and store its version number - * - * @see PluginDetector.detectPlugin - * @param {String} p - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - */ addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, - /** - * Obtain version number from the mime-type (all but IE) or ActiveX (IE) - * - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - * @return {int[]} - */ detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; - // Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { @@ -1643,7 +1232,6 @@ var PluginDetector = exports.PluginDetector = { version[i] = parseInt(version[i].match(/\d+/), 10); } } - // Internet Explorer / ActiveX } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); @@ -1658,12 +1246,7 @@ var PluginDetector = exports.PluginDetector = { } }; -/** - * Add Flash detection - * - */ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { - // adapted from SWFObject var version = [], d = ax.GetVariable("$version"); @@ -1675,34 +1258,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl }); var FlashMediaElementRenderer = { - - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var flash = {}; - // store main variable flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; - - // insert data flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; - // mediaElements for get/set var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - - // add to flash state that we will store flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -1714,7 +1282,6 @@ var FlashMediaElementRenderer = { if (flash.flashApi['get_' + propName] !== undefined) { var value = flash.flashApi['get_' + propName](); - // special case for buffered to conform to HTML5's newest if (propName === 'buffered') { return { start: function start() { @@ -1741,11 +1308,9 @@ var FlashMediaElementRenderer = { value = (0, _media.absolutizeUrl)(value); } - // send value to Flash if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { flash.flashApi['set_' + propName](value); } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'set', propName: propName, @@ -1759,16 +1324,10 @@ var FlashMediaElementRenderer = { assignGettersSetters(props[i]); } - // add mediaElements for native methods var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement flash[methodName] = function () { - if (flash.flashApi !== null) { - - // send call up to Flash ExternalInterface API if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); @@ -1779,7 +1338,6 @@ var FlashMediaElementRenderer = { } } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'call', methodName: methodName @@ -1792,7 +1350,6 @@ var FlashMediaElementRenderer = { assignMethods(methods[_i]); } - // give initial events like in others renderers var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { @@ -1800,16 +1357,13 @@ var FlashMediaElementRenderer = { mediaElement.dispatchEvent(event); } - // add a ready method that Flash can call to _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); - // do call stack if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { - var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { @@ -1825,19 +1379,15 @@ var FlashMediaElementRenderer = { }; _window2.default['__event__' + flash.id] = function (eventName, message) { - var event = (0, _general.createEvent)(eventName, flash); event.message = message || ''; - // send event from Flash up to the mediaElement flash.mediaElement.dispatchEvent(event); }; - // insert Flash object flash.flashWrapper = _document2.default.createElement('div'); - // If the access script flag does not have any of the valid values, set to `sameDomain` by default - if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) { + if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } @@ -1927,55 +1477,42 @@ var FlashMediaElementRenderer = { var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { - - /** - * Register media type based on URL structure if Flash is detected - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); if (url.startsWith('rtmp')) { - if (url.includes('.mp3')) { + if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } - } else if (url.includes('.oga') || url.includes('.ogg')) { + } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; - } else if (url.includes('.m3u8')) { + } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; - } else if (url.includes('.mpd')) { + } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; - } else if (url.includes('.flv')) { + } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); - // VIDEO var FlashMediaElementVideoRenderer = { name: 'flash_video', - options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, - // start query parameter sent to server for pseudo-streaming + pseudoStreamingStartQueryParam: 'start', - // pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV) + pseudoStreamingType: 'byte' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase()); + return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -1983,88 +1520,60 @@ if (hasFlash) { }; _renderer.renderer.add(FlashMediaElementVideoRenderer); - // HLS var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', - options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()); + return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); - // M(PEG)-DASH var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', - options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/dash+xml'].includes(type.toLowerCase()); + return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); - // AUDIO var FlashMediaElementAudioRenderer = { name: 'flash_audio', - options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/mp3'].includes(type.toLowerCase()); + return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); - // AUDIO - ogg var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', - options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase()); + return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -2072,123 +1581,47 @@ if (hasFlash) { _renderer.renderer.add(FlashMediaElementAudioOggRenderer); } -},{"15":15,"16":16,"17":17,"2":2,"3":3,"4":4,"6":6,"7":7}],11:[function(_dereq_,module,exports){ +},{"15":15,"17":17,"18":18,"2":2,"3":3,"4":4,"6":6,"7":7}],11:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); var _constants = _dereq_(15); -var _media = _dereq_(17); +var _media = _dereq_(18); + +var _dom = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native FLV renderer - * - * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js. - * It relies on HTML5 video and MediaSource Extensions for playback. - * Currently, it can only play files with the same origin. - * - * @see https://github.com/Bilibili/flv.js - * - */ var NativeFlv = { - /** - * @type {Boolean} - */ - isMediaStarted: false, - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an FLV source - * @param {Object} settings - an object with settings needed to load an FLV player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeFlv.isLoaded) { - NativeFlv.createInstance(settings); - } else { - NativeFlv.loadScript(settings); - NativeFlv.creationQueue.push(settings); - } - }, - /** - * Load flv.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an FLV player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof flvjs !== 'undefined') { - NativeFlv.createInstance(settings); - } else if (!NativeFlv.isMediaStarted) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeFlv.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - NativeFlv.isMediaStarted = true; - } - }, + NativeFlv._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js'; - /** - * Process queue of FLV player creation - * - */ - mediaReady: function mediaReady() { - NativeFlv.isLoaded = true; - NativeFlv.isMediaLoaded = true; - - while (NativeFlv.creationQueue.length > 0) { - var settings = NativeFlv.creationQueue.pop(); - NativeFlv.createInstance(settings); + NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); + NativeFlv.promise.then(function () { + NativeFlv._createPlayer(settings); + }); } }, - /** - * Create a new instance of FLV player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate FLV object - */ - createInstance: function createInstance(settings) { + _createPlayer: function _createPlayer(settings) { var player = flvjs.createPlayer(settings.options); _window2.default['__ready__' + settings.id](player); } @@ -2196,35 +1629,19 @@ var NativeFlv = { var FlvNativeRenderer = { name: 'native_flv', - options: { prefix: 'native_flv', flv: { - // Special config: used to set the local path/URL of flv.js library - path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js', - // To modify more elements from FLV player, - // see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config + path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js', + cors: true } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type); + return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -2245,7 +1662,7 @@ var FlvNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (flvPlayer !== null) { node[propName] = value; @@ -2264,16 +1681,13 @@ var FlvNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all FLV events _window2.default['__ready__' + id] = function (_flvPlayer) { mediaElement.flvPlayer = flvPlayer = _flvPlayer; var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { - flvPlayer.unload(); flvPlayer.detachMediaElement(); flvPlayer.attachMediaElement(node); @@ -2306,16 +1720,14 @@ var FlvNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - // Options that cannot be overridden options.flv.type = 'flv'; options.flv.url = node.getAttribute('src'); - NativeFlv.prepareSettings({ + NativeFlv.load({ options: options.flv, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -2348,135 +1760,53 @@ var FlvNativeRenderer = { } }; -/** - * Register Native FLV type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.flv') ? 'video/flv' : null; + return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; }); _renderer.renderer.add(FlvNativeRenderer); -},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],12:[function(_dereq_,module,exports){ +},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],12:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); -var _document = _dereq_(2); - -var _document2 = _interopRequireDefault(_document); - var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); var _constants = _dereq_(15); -var _media = _dereq_(17); +var _media = _dereq_(18); + +var _dom = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native HLS renderer - * - * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client. - * It relies on HTML5 video and MediaSource Extensions for playback. - * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does. - * @see https://github.com/dailymotion/hls.js - * - */ var NativeHls = { - /** - * @type {Boolean} - */ - isMediaStarted: false, - /** - * @type {Boolean} - */ - isMediaLoaded: false, - /** - * @type {Array} - */ - creationQueue: [], - - /** - * Create a queue to prepare the loading of an HLS source - * - * @param {Object} settings - an object with settings needed to load an HLS player instance - */ - prepareSettings: function prepareSettings(settings) { - if (NativeHls.isLoaded) { - NativeHls.createInstance(settings); - } else { - NativeHls.loadScript(settings); - NativeHls.creationQueue.push(settings); - } - }, - /** - * Load hls.js script on the header of the document - * - * @param {Object} settings - an object with settings needed to load an HLS player instance - */ - loadScript: function loadScript(settings) { + promise: null, - // Skip script loading since it is already loaded + load: function load(settings) { if (typeof Hls !== 'undefined') { - NativeHls.createInstance(settings); - } else if (!NativeHls.isMediaStarted) { - - settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js'; - - var script = _document2.default.createElement('script'), - firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - - var done = false; - - script.src = settings.options.path; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - NativeHls.mediaReady(); - script.onload = script.onreadystatechange = null; - } - }; - - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - NativeHls.isMediaStarted = true; - } - }, + NativeHls._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js'; - /** - * Process queue of HLS player creation - * - */ - mediaReady: function mediaReady() { - NativeHls.isLoaded = true; - NativeHls.isMediaLoaded = true; - - while (NativeHls.creationQueue.length > 0) { - var settings = NativeHls.creationQueue.pop(); - NativeHls.createInstance(settings); + NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); + NativeHls.promise.then(function () { + NativeHls._createPlayer(settings); + }); } }, - /** - * Create a new instance of HLS player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to instantiate HLS object - * @return {Hls} - */ - createInstance: function createInstance(settings) { + _createPlayer: function _createPlayer(settings) { var player = new Hls(settings.options); _window2.default['__ready__' + settings.id](player); return player; @@ -2485,37 +1815,20 @@ var NativeHls = { var HlsNativeRenderer = { name: 'native_hls', - options: { prefix: 'native_hls', hls: { - // Special config: used to set the local path/URL of hls.js library - path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js', - // To modify more elements from hls.js, - // see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning + path: 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js', + autoStartLoad: false, debug: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()); + return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, @@ -2530,7 +1843,6 @@ var HlsNativeRenderer = { options = Object.assign(options, mediaElement.options); options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; - // WRAPPERS for PROPs var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -2540,14 +1852,14 @@ var HlsNativeRenderer = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (hlsPlayer !== null) { node[propName] = value; if (propName === 'src') { hlsPlayer.destroy(); - hlsPlayer = NativeHls.createInstance({ + hlsPlayer = NativeHls._createPlayer({ options: options.hls, id: id }); @@ -2564,7 +1876,6 @@ var HlsNativeRenderer = { assignGettersSetters(props[i]); } - // Initial method to register all HLS events _window2.default['__ready__' + id] = function (_hlsPlayer) { mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; @@ -2572,9 +1883,7 @@ var HlsNativeRenderer = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), hlsEvents = Hls.Events, assignEvents = function assignEvents(eventName) { - if (eventName === 'loadedmetadata') { - var url = mediaElement.originalNode.src; hlsPlayer.detachMedia(); hlsPlayer.loadSource(url); @@ -2582,7 +1891,6 @@ var HlsNativeRenderer = { } node.addEventListener(eventName, function (e) { - // copy event var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }); @@ -2592,16 +1900,6 @@ var HlsNativeRenderer = { assignEvents(events[_i]); } - /** - * Custom HLS events - * - * These events can be attached to the original node using addEventListener and the name of the event, - * not using Hls.Events object - * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js - * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js - * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events - * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors - */ var recoverDecodingErrorDate = void 0, recoverSwapAudioCodecDate = void 0; var assignHlsEvents = function assignHlsEvents(e, data) { @@ -2612,7 +1910,6 @@ var HlsNativeRenderer = { if (e === 'hlsError') { console.warn(e, data); - // borrowed from http://dailymotion.github.io/hls.js/demo/ if (data.fatal) { switch (data.type) { case 'mediaError': @@ -2635,7 +1932,6 @@ var HlsNativeRenderer = { default: hlsPlayer.destroy(); break; - } } } @@ -2677,12 +1973,11 @@ var HlsNativeRenderer = { originalNode.autoplay = false; originalNode.style.display = 'none'; - NativeHls.prepareSettings({ + NativeHls.load({ options: options.hls, id: id }); - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -2719,18 +2014,13 @@ var HlsNativeRenderer = { } }; -/** - * Register Native HLS type based on URL structure - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('.m3u8') ? 'application/x-mpegURL' : null; + return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; }); _renderer.renderer.add(HlsNativeRenderer); -},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],13:[function(_dereq_,module,exports){ +},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],13:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); @@ -2747,60 +2037,37 @@ var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); var _constants = _dereq_(15); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native HTML5 Renderer - * - * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement. - */ var HtmlMediaElement = { - name: 'html5', - options: { prefix: 'html5' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {String} - */ canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); - // Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS; - // also consider URLs that might have obfuscated URLs - if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { + if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { - return mediaElement.canPlayType(type).replace(/no/, ''); + return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ + create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var node = null; - // CREATE NODE if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); @@ -2810,7 +2077,6 @@ var HtmlMediaElement = { node.setAttribute('id', id); - // WRAPPERS for PROPs var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -2820,7 +2086,7 @@ var HtmlMediaElement = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; @@ -2832,10 +2098,7 @@ var HtmlMediaElement = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), assignEvents = function assignEvents(eventName) { - node.addEventListener(eventName, function (e) { - // copy event - var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }); @@ -2845,7 +2108,6 @@ var HtmlMediaElement = { assignEvents(events[_i]); } - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -2884,7 +2146,7 @@ _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaE _renderer.renderer.add(HtmlMediaElement); -},{"15":15,"16":16,"2":2,"3":3,"6":6,"7":7}],14:[function(_dereq_,module,exports){ +},{"15":15,"17":17,"2":2,"3":3,"6":6,"7":7}],14:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; @@ -2903,42 +2165,22 @@ var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(7); -var _general = _dereq_(16); +var _general = _dereq_(17); + +var _media = _dereq_(18); -var _media = _dereq_(17); +var _dom = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * YouTube renderer - * - * Uses <iframe> approach and uses YouTube API to manipulate it. - * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event, - * so it doesn't work - not sure if Google problem or not. - * @see https://developers.google.com/youtube/iframe_api_reference - */ var YouTubeApi = { - /** - * @type {Boolean} - */ isIframeStarted: false, - /** - * @type {Boolean} - */ + isIframeLoaded: false, - /** - * @type {Array} - */ + iframeQueue: [], - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ enqueueIframe: function enqueueIframe(settings) { - - // Check whether YouTube API is already loaded. YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; if (YouTubeApi.isLoaded) { @@ -2949,24 +2191,13 @@ var YouTubeApi = { } }, - /** - * Load YouTube API script on the header of the document - * - */ loadIframeApi: function loadIframeApi() { if (!YouTubeApi.isIframeStarted) { - var tag = _document2.default.createElement('script'); - tag.src = '//www.youtube.com/player_api'; - var firstScriptTag = _document2.default.getElementsByTagName('script')[0]; - firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + (0, _dom.loadScript)('https://www.youtube.com/player_api'); YouTubeApi.isIframeStarted = true; } }, - /** - * Process queue of YouTube <iframe> element creation - * - */ iFrameReady: function iFrameReady() { YouTubeApi.isLoaded = true; @@ -2978,35 +2209,17 @@ var YouTubeApi = { } }, - /** - * Create a new instance of YouTube API player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ createIframe: function createIframe(settings) { return new YT.Player(settings.containerId, settings); }, - /** - * Extract ID from YouTube's URL to be loaded through API - * Valid URL format(s): - * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - http://www.youtube.com/v/VIDEO_ID?version=3 - * - http://youtu.be/Djd6tPrxc08 - * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - * @param {String} url - * @return {string} - */ getYouTubeId: function getYouTubeId(url) { var youTubeId = ''; if (url.indexOf('?') > 0) { - // assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 youTubeId = YouTubeApi.getYouTubeIdFromParam(url); - // if it's http://www.youtube.com/v/VIDEO_ID?version=3 if (youTubeId === '') { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } @@ -3017,12 +2230,6 @@ var YouTubeApi = { return youTubeId; }, - /** - * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0 - * - * @param {String} url - * @returns {string} - */ getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { @@ -3045,13 +2252,6 @@ var YouTubeApi = { return youTubeId; }, - /** - * Get ID from URL with formats - * - http://www.youtube.com/v/VIDEO_ID?version=3 - * - http://youtu.be/Djd6tPrxc08 - * @param {String} url - * @return {?String} - */ getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { @@ -3063,13 +2263,8 @@ var YouTubeApi = { return url.substring(url.lastIndexOf('/') + 1); }, - /** - * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3 - * @param {String} url - * @return {?String} - */ getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { - if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) { + if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { return url; } @@ -3084,12 +2279,7 @@ var YouTubeIframeRenderer = { options: { prefix: 'youtube_iframe', - /** - * Custom configuration for YouTube player - * - * @see https://developers.google.com/youtube/player_parameters#Parameters - * @type {Object} - */ + youtube: { autoplay: 0, controls: 0, @@ -3102,32 +2292,17 @@ var YouTubeIframeRenderer = { showinfo: 0, start: 0, iv_load_policy: 3, - // custom to inject `-nocookie` element in URL + nocookie: false } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/youtube', 'video/x-youtube'].includes(type); + return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { - // API objects var youtube = {}, apiStack = [], readyState = 4; @@ -3142,39 +2317,29 @@ var YouTubeIframeRenderer = { youtube.id = mediaElement.id + '_' + options.prefix; youtube.mediaElement = mediaElement; - // wrappers for get/set var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - // add to flash state that we will store - var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['get' + capName] = function () { if (youTubeApi !== null) { var value = null; - // figure out how to get youtube dta here switch (propName) { case 'currentTime': return youTubeApi.getCurrentTime(); - case 'duration': return youTubeApi.getDuration(); - case 'volume': volume = youTubeApi.getVolume() / 100; return volume; - case 'paused': return paused; - case 'ended': return ended; - case 'muted': return youTubeApi.isMuted(); - case 'buffered': var percentLoaded = youTubeApi.getVideoLoadedFraction(), duration = youTubeApi.getDuration(); @@ -3189,7 +2354,6 @@ var YouTubeIframeRenderer = { }; case 'src': return youTubeApi.getVideoUrl(); - case 'readyState': return readyState; } @@ -3201,12 +2365,8 @@ var YouTubeIframeRenderer = { }; youtube['set' + capName] = function (value) { - if (youTubeApi !== null) { - - // do something switch (propName) { - case 'src': var url = typeof value === 'string' ? value : value[0].src, _videoId = YouTubeApi.getYouTubeId(url); @@ -3217,11 +2377,9 @@ var YouTubeIframeRenderer = { youTubeApi.cueVideoById(_videoId); } break; - case 'currentTime': youTubeApi.seekTo(value); break; - case 'muted': if (value) { youTubeApi.mute(); @@ -3233,7 +2391,6 @@ var YouTubeIframeRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'volume': volume = value; youTubeApi.setVolume(value * 100); @@ -3246,13 +2403,11 @@ var YouTubeIframeRenderer = { var event = (0, _general.createEvent)('canplay', youtube); mediaElement.dispatchEvent(event); break; - default: break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -3262,16 +2417,10 @@ var YouTubeIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement youtube[methodName] = function () { - if (youTubeApi !== null) { - - // DO method switch (methodName) { case 'play': paused = false; @@ -3281,7 +2430,6 @@ var YouTubeIframeRenderer = { return youTubeApi.pauseVideo(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -3293,11 +2441,9 @@ var YouTubeIframeRenderer = { assignMethods(methods[_i]); } - // CREATE YouTube var youtubeContainer = _document2.default.createElement('div'); youtubeContainer.id = youtube.id; - // If `nocookie` feature was enabled, modify original URL if (youtube.options.youtube.nocookie) { mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src)); } @@ -3306,8 +2452,8 @@ var YouTubeIframeRenderer = { mediaElement.originalNode.style.display = 'none'; var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', - height = isAudio ? '0' : mediaElement.originalNode.height, - width = isAudio ? '0' : mediaElement.originalNode.width, + height = isAudio ? '1' : mediaElement.originalNode.height, + width = isAudio ? '1' : mediaElement.originalNode.width, videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), youtubeSettings = { id: youtube.id, @@ -3336,7 +2482,6 @@ var YouTubeIframeRenderer = { ended: false }; - // do call stack if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { @@ -3353,7 +2498,6 @@ var YouTubeIframeRenderer = { } } - // a few more events youTubeIframe = youTubeApi.getIframe(); var events = ['mouseover', 'mouseout'], @@ -3367,7 +2511,6 @@ var YouTubeIframeRenderer = { youTubeIframe.addEventListener(events[_i3], assignEvents, false); } - // send init events var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay']; for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { @@ -3376,62 +2519,43 @@ var YouTubeIframeRenderer = { } }, onStateChange: function onStateChange(e) { - - // translate events var events = []; switch (e.data) { case -1: - // not started events = ['loadedmetadata']; paused = true; ended = false; break; - case 0: - // YT.PlayerState.ENDED events = ['ended']; paused = false; ended = true; - youtube.stopInterval(); break; - case 1: - // YT.PlayerState.PLAYING events = ['play', 'playing']; paused = false; ended = false; - youtube.startInterval(); - break; - case 2: - // YT.PlayerState.PAUSED events = ['pause']; paused = true; ended = false; - youtube.stopInterval(); break; - case 3: - // YT.PlayerState.BUFFERING events = ['progress']; ended = false; - break; case 5: - // YT.PlayerState.CUED events = ['loadeddata', 'loadedmetadata', 'canplay']; paused = true; ended = false; - break; } - // send events up for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { var event = (0, _general.createEvent)(events[_i5], youtube); mediaElement.dispatchEvent(event); @@ -3445,12 +2569,10 @@ var YouTubeIframeRenderer = { } }; - // The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio if (isAudio) { youtubeSettings.playerVars.playsinline = 1; } - // send it off for async loading and creation YouTubeApi.enqueueIframe(youtubeSettings); youtube.onEvent = function (eventName, player, _youTubeState) { @@ -3482,7 +2604,6 @@ var YouTubeIframeRenderer = { youtube.interval = null; youtube.startInterval = function () { - // create timer youtube.interval = setInterval(function () { var event = (0, _general.createEvent)('timeupdate', youtube); @@ -3506,14 +2627,14 @@ if (_window2.default.postMessage && _typeof(_window2.default.addEventListener)) }; _media.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null; + return (/\/\/(www\.youtube|youtu\.be)/i.test(url) ? 'video/x-youtube' : null + ); }); _renderer.renderer.add(YouTubeIframeRenderer); } -},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],15:[function(_dereq_,module,exports){ +},{"16":16,"17":17,"18":18,"2":2,"3":3,"6":6,"7":7}],15:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3537,18 +2658,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); - -var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null; -var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null; +var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA); +var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA); var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD; -var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null; -var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null; +var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); +var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); -var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null; -var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null; -var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME; -var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null; - +var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); +var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); +var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; +var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), @@ -3567,7 +2686,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { return !!supports; }(); -// for IE var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; @@ -3575,28 +2693,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } -// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge) -var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null; - -// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails) +var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA); -// iOS var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; -// W3C var hasNativeFullscreen = video.requestFullscreen !== undefined; -// OS X 10.5 can't do this even if it says it can :( -if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) { +if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } -// webkit/firefox/IE11+ var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; - var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; @@ -3604,7 +2714,6 @@ var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; -// Enabled? if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { @@ -3616,7 +2725,6 @@ if (IS_CHROME) { } if (hasTrueNativeFullScreen) { - if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { @@ -3636,7 +2744,6 @@ if (hasTrueNativeFullScreen) { }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { - if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { @@ -3665,7 +2772,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; - exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; @@ -3684,7 +2790,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; - _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; @@ -3701,6 +2806,261 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"6":6}],16:[function(_dereq_,module,exports){ 'use strict'; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeClass = exports.addClass = exports.hasClass = undefined; +exports.loadScript = loadScript; +exports.offset = offset; +exports.toggleClass = toggleClass; +exports.fadeOut = fadeOut; +exports.fadeIn = fadeIn; +exports.siblings = siblings; +exports.visible = visible; +exports.ajax = ajax; + +var _window = _dereq_(3); + +var _window2 = _interopRequireDefault(_window); + +var _document = _dereq_(2); + +var _document2 = _interopRequireDefault(_document); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function TinyPromise(handler) { + var thens = []; + var state = -1; + var result = void 0; + var then = void 0; + + function done(value) { + for (result = value; then = thens.shift();) { + then[state] && then[state](result); + } + } + + handler(function (value) { + return done(value, state = 0); + }, function (value) { + return done(value, state = 1); + }); + + return { + then: function then() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + ~state ? args[state] && args[state](result) : thens.push(args); + } + }; +} + +function loadScript(url) { + return TinyPromise(function (resolve, reject) { + var script = _document2.default.createElement('script'); + script.src = url; + script.async = true; + script.onload = function () { + script.remove(); + resolve(); + }; + script.onerror = function () { + script.remove(); + reject(); + }; + _document2.default.head.appendChild(script); + }); +} + +function offset(el) { + var rect = el.getBoundingClientRect(), + scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, + scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; + return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; +} + +var hasClassMethod = void 0, + addClassMethod = void 0, + removeClassMethod = void 0; + +if ('classList' in _document2.default.documentElement) { + hasClassMethod = function hasClassMethod(el, className) { + return el.classList !== undefined && el.classList.contains(className); + }; + addClassMethod = function addClassMethod(el, className) { + return el.classList.add(className); + }; + removeClassMethod = function removeClassMethod(el, className) { + return el.classList.remove(className); + }; +} else { + hasClassMethod = function hasClassMethod(el, className) { + return new RegExp('\\b' + className + '\\b').test(el.className); + }; + addClassMethod = function addClassMethod(el, className) { + if (!hasClass(el, className)) { + el.className += ' ' + className; + } + }; + removeClassMethod = function removeClassMethod(el, className) { + el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); + }; +} + +var hasClass = exports.hasClass = hasClassMethod; +var addClass = exports.addClass = addClassMethod; +var removeClass = exports.removeClass = removeClassMethod; + +function toggleClass(el, className) { + hasClass(el, className) ? removeClass(el, className) : addClass(el, className); +} + +function fadeOut(el) { + var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; + var callback = arguments[2]; + + if (!el.style.opacity) { + el.style.opacity = 1; + } + + var start = null; + _window2.default.requestAnimationFrame(function animate(timestamp) { + start = start || timestamp; + var progress = timestamp - start; + var opacity = parseFloat(1 - progress / duration, 2); + el.style.opacity = opacity < 0 ? 0 : opacity; + if (progress > duration) { + if (callback && typeof callback === 'function') { + callback(); + } + } else { + _window2.default.requestAnimationFrame(animate); + } + }); +} + +function fadeIn(el) { + var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; + var callback = arguments[2]; + + if (!el.style.opacity) { + el.style.opacity = 0; + } + + var start = null; + _window2.default.requestAnimationFrame(function animate(timestamp) { + start = start || timestamp; + var progress = timestamp - start; + var opacity = parseFloat(progress / duration, 2); + el.style.opacity = opacity > 1 ? 1 : opacity; + if (progress > duration) { + if (callback && typeof callback === 'function') { + callback(); + } + } else { + _window2.default.requestAnimationFrame(animate); + } + }); +} + +function siblings(el, filter) { + var siblings = []; + el = el.parentNode.firstChild; + do { + if (!filter || filter(el)) { + siblings.push(el); + } + } while (el = el.nextSibling); + return siblings; +} + +function visible(elem) { + return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); +} + +function ajax(url, dataType, success, error) { + var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + + var type = 'application/x-www-form-urlencoded; charset=UTF-8', + completed = false, + accept = '*/'.concat('*'); + + switch (dataType) { + case 'text': + type = 'text/plain'; + break; + case 'json': + type = 'application/json, text/javascript'; + break; + case 'html': + type = 'text/html'; + break; + case 'xml': + type = 'application/xml, text/xml'; + break; + } + + if (type !== 'application/x-www-form-urlencoded') { + accept = type + ', */*; q=0.01'; + } + + if (xhr) { + xhr.open('GET', url, true); + xhr.setRequestHeader('Accept', accept); + xhr.onreadystatechange = function () { + if (completed) { + return; + } + + if (xhr.readyState === 4) { + if (xhr.status === 200) { + completed = true; + var data = void 0; + switch (dataType) { + case 'json': + data = JSON.parse(xhr.responseText); + break; + case 'xml': + data = xhr.responseXML; + break; + default: + data = xhr.responseText; + break; + } + success(data); + } else if (typeof error === 'function') { + error(xhr.status); + } + } + }; + + xhr.send(); + } +} + +_mejs2.default.Utils = _mejs2.default.Utils || {}; +_mejs2.default.Utils.offset = offset; +_mejs2.default.Utils.hasClass = hasClass; +_mejs2.default.Utils.addClass = addClass; +_mejs2.default.Utils.removeClass = removeClass; +_mejs2.default.Utils.toggleClass = toggleClass; +_mejs2.default.Utils.fadeIn = fadeIn; +_mejs2.default.Utils.fadeOut = fadeOut; +_mejs2.default.Utils.siblings = siblings; +_mejs2.default.Utils.visible = visible; +_mejs2.default.Utils.ajax = ajax; +_mejs2.default.Utils.loadScript = loadScript; + +},{"2":2,"3":3,"6":6}],17:[function(_dereq_,module,exports){ +'use strict'; + Object.defineProperty(exports, "__esModule", { value: true }); @@ -3718,11 +3078,6 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * - * @param {String} input - * @return {string} - */ function escapeHTML(input) { if (typeof input !== 'string') { @@ -3741,7 +3096,6 @@ function escapeHTML(input) { }); } -// taken from underscore function debounce(func, wait) { var _this = this, _arguments = arguments; @@ -3777,28 +3131,13 @@ function debounce(func, wait) { }; } -/** - * Determine if an object contains any elements - * - * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object - * @param {Object} instance - * @return {Boolean} - */ function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } -/** - * Group a string of events into `document` (d) and `window` (w) events - * - * @param {String} events List of space separated events - * @param {String} id Namespace appended to events - * @return {{d: Array, w: Array}} - */ function splitEvents(events, id) { - // Global events var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; - // add player ID as an event namespace so it's easier to unbind them all later + var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); @@ -3816,26 +3155,20 @@ function splitEvents(events, id) { return ret; } -/** - * - * @param {string} eventName - * @param {*} target - * @return {Event|Object} - */ function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } - var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/), + var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { - eventName = eventFrags[0]; - detail.namespace = eventFrags[1]; + eventName = eventFrags[1]; + detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { @@ -3843,23 +3176,11 @@ function createEvent(eventName, target) { }); } -/** - * Returns true if targetNode appears after sourceNode in the dom. - * @param {HTMLElement} sourceNode - the source node for comparison - * @param {HTMLElement} targetNode - the node to compare against sourceNode - */ function isNodeAfter(sourceNode, targetNode) { - return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING - ); + return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } -/** - * Determines if a value is a string - * - * @param {*} value to check - * @returns {Boolean} True if a value is a string - */ function isString(value) { return typeof value === 'string'; } @@ -3873,7 +3194,7 @@ _mejs2.default.Utils.createEvent = createEvent; _mejs2.default.Utils.isNodeAfter = isNodeAfter; _mejs2.default.Utils.isString = isString; -},{"6":6}],17:[function(_dereq_,module,exports){ +},{"6":6}],18:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3891,17 +3212,12 @@ var _mejs = _dereq_(6); var _mejs2 = _interopRequireDefault(_mejs); -var _general = _dereq_(16); +var _general = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var typeChecks = exports.typeChecks = []; -/** - * - * @param {String} url - * @return {String} - */ function absolutizeUrl(url) { if (typeof url !== 'string') { @@ -3913,42 +3229,21 @@ function absolutizeUrl(url) { return el.firstChild.href; } -/** - * Get the format of a specific media, based on URL and additionally its mime type - * - * @param {String} url - * @param {String} type - * @return {String} - */ function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : getMimeFromType(type); } -/** - * Return the mime part of the type in case the attribute contains the codec - * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`) - * - * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element - * @param {String} type - * @return {String} - */ function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } - return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type; + return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } -/** - * Get the type of media based on URL structure - * - * @param {String} url - * @return {String} - */ function getTypeFromFile(url) { if (typeof url !== 'string') { @@ -3963,17 +3258,15 @@ function getTypeFromFile(url) { } } - // the do standard extension check var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; - // Obtain correct MIME types if (normalizedExt) { - if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) { + if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; - } else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) { + } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } @@ -3981,12 +3274,6 @@ function getTypeFromFile(url) { return mime; } -/** - * Get media file extension from URL - * - * @param {String} url - * @return {String} - */ function getExtension(url) { if (typeof url !== 'string') { @@ -3995,16 +3282,9 @@ function getExtension(url) { var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); - - return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; + return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } -/** - * Get standard extension of a media file - * - * @param {String} extension - * @return {String} - */ function normalizeExtension(extension) { if (typeof extension !== 'string') { @@ -4037,7 +3317,7 @@ _mejs2.default.Utils.getTypeFromFile = getTypeFromFile; _mejs2.default.Utils.getExtension = getExtension; _mejs2.default.Utils.normalizeExtension = normalizeExtension; -},{"16":16,"6":6}],18:[function(_dereq_,module,exports){ +},{"17":17,"6":6}],19:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); @@ -4046,15 +3326,6 @@ var _document2 = _interopRequireDefault(_document); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Polyfill - * - * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list - * of polyfills provided by Babel. - */ - -// ChildNode.remove polyfill -// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { @@ -4071,11 +3342,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); -// CustomEvent polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent (function () { - if (typeof window.CustomEvent === "function") return false; + if (typeof window.CustomEvent === 'function') { + return false; + } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; @@ -4085,18 +3356,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de } CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; })(); -// Object.assign polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill if (typeof Object.assign !== 'function') { Object.assign = function (target) { - // .length of function is 2 if (target === null || target === undefined) { - // TypeError if undefined or null throw new TypeError('Cannot convert undefined or null to object'); } @@ -4106,9 +3372,7 @@ if (typeof Object.assign !== 'function') { var nextSource = arguments[index]; if (nextSource !== null) { - // Skip over if undefined or null for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } @@ -4119,76 +3383,6 @@ if (typeof Object.assign !== 'function') { }; } -// Array.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill -if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function value(searchElement, fromIndex) { - - // 1. const O be ? ToObject(this value). - if (this === null || this === undefined) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. const len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If len is 0, return false. - if (len === 0) { - return false; - } - - // 4. const n be ? ToInteger(fromIndex). - // (If fromIndex is undefined, this step produces the value 0.) - var n = fromIndex | 0; - - // 5. If n ≥ 0, then - // a. const k be n. - // 6. Else n < 0, - // a. const k be len + n. - // b. If k < 0, const k be 0. - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 7. Repeat, while k < len - while (k < len) { - // a. const elementK be the result of ? Get(O, ! ToString(k)). - // b. If SameValueZero(searchElement, elementK) is true, return true. - // c. Increase k by 1. - // NOTE: === provides the correct "SameValueZero" comparison needed here. - if (o[k] === searchElement) { - return true; - } - k++; - } - - // 8. Return false - return false; - } - }); -} - -// String.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes -if (!String.prototype.includes) { - String.prototype.includes = function (search, start) { - 'use strict'; - - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; -} - -// String.startsWith polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; @@ -4196,8 +3390,6 @@ if (!String.prototype.startsWith) { }; } -// Element.matches polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -4207,8 +3399,6 @@ if (!Element.prototype.matches) { }; } -// Element.closest polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -4222,13 +3412,6 @@ if (window.Element && !Element.prototype.closest) { }; } -// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ -// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - -// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel - -// MIT license - (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; @@ -4252,14 +3435,12 @@ if (window.Element && !Element.prototype.closest) { }; })(); -// Javascript workaround for FF iframe `getComputedStyle` bug -// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009 if (/firefox/i.test(navigator.userAgent)) { - window.oldGetComputedStyle = window.getComputedStyle; + window.mediaElementJsOldGetComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { - var t = window.oldGetComputedStyle(el, pseudoEl); + var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } -},{"2":2}]},{},[18,5,4,8,13,10,9,11,12,14]); +},{"2":2}]},{},[19,5,4,8,13,10,9,11,12,14]); diff --git a/lib/mejs/mediaelement.min.js b/lib/mejs/mediaelement.min.js index 8a6cc1a6adef6bfead7edbce220f76769e7bf779..1e41c707c4e42b5c0699ec367819f34d4188ba49 100644 --- a/lib/mejs/mediaelement.min.js +++ b/lib/mejs/mediaelement.min.js @@ -8,27 +8,5 @@ * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * - *//*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(8),i=a(16),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{16:16,6:6,8:8}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(16),m=a(17),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{16:16,17:17,2:2,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js */ -Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(17),n=a(15),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof dashjs)o.createInstance(a);else if(!o.isScriptLoaded){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;i=d.cloneNode(!0),b=Object.assign(b,a.options);for(var n=j["default"].html5media.properties,p=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);i["get"+b]=function(){return null!==m?i[a]:null},i["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&("src"===a&&(m.attachSource(b),h&&i.play()),i[a]=b)}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=m=c,m.getDebug().setLogToBrowserConsole(b.dash.debug),m.setAutoPlay(g&&"auto"===g||h),m.setScheduleWhilePaused(g&&"auto"===g||h);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&m.initialize(i,i.src,!1),i.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},k=0,n=d.length;n>k;k++)f(d[k]);var o=function(b){var c=l.createEvent(b.type,i);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var p in e)e.hasOwnProperty(p)&&m.on(e[p],o)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){i.setAttribute("src",c[s].src);break}i.setAttribute("id",e),d.parentNode.insertBefore(i,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),i.setSize=function(a,b){return i.style.width=a+"px",i.style.height=b+"px",i},i.hide=function(){return i.pause(),i.style.display="none",i},i.show=function(){return i.style.display="",i};var u=l.createEvent("rendererready",i);return a.dispatchEvent(u),i}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(16),p=a(15),q=a(17),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{15:15,16:16,17:17,2:2,3:3,4:4,6:6,7:7}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof flvjs)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,h=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var i=j["default"].html5media.properties,m=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==h?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==h&&(g[a]=b,"src"===a&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()))}},n=0,p=i.length;p>n;n++)m(i[n]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=h=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()),g.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var q=0,r=c.length;r>q;q++)if(k.renderer.renderers[b.prefix].canPlayType(c[q].type)){g.setAttribute("src",c[q].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==h&&h.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==h&&h.destroy()};var s=l.createEvent("rendererready",g);return a.dispatchEvent(s),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof Hls)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;m=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||h;for(var n=j["default"].html5media.properties,p=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+c]=function(){return null!==i?m[a]:null},m["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(m[a]=c,"src"===a&&(i.destroy(),i=o.createInstance({options:b.hls,id:e}),i.loadSource(c),i.attachMedia(m)))}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){var c=a.originalNode.src;i.detachMedia(),i.loadSource(c),i.attachMedia(m)}m.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var h=void 0,k=void 0,n=function(b,c){var d=l.createEvent(b,m);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!h||e-h>3e3?(h=(new Date).getTime(),i.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),i.swapAudioCodec(),i.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:i.destroy()}};for(var o in d)d.hasOwnProperty(o)&&i.on(d[o],n)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){m.setAttribute("src",c[s].src);break}"auto"===g||h||(m.addEventListener("play",function(){null!==i&&i.startLoad()}),m.addEventListener("pause",function(){null!==i&&i.stopLoad()})),m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==i&&i.destroy()},m.stop=function(){null!==i&&i.stopLoad()};var u=l.createEvent("rendererready",m);return a.dispatchEvent(u),m}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{15:15,16:16,2:2,3:3,6:6,7:7}],14:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(16),n=a(17),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},e=[],f=4,h=null,j=!0,l=!1,n=null,p=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var q=k["default"].html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==h){var a=null;switch(b){case"currentTime":return h.getCurrentTime();case"duration":return h.getDuration();case"volume":return p=h.getVolume()/100;case"paused":return j;case"ended":return l;case"muted":return h.isMuted();case"buffered":var c=h.getVideoLoadedFraction(),d=h.getDuration();return{start:function(){return 0},end:function(){return c*d},length:1};case"src":return h.getVideoUrl();case"readyState":return f}return a}return null},d["set"+c]=function(c){if(null!==h)switch(b){case"src":var f="string"==typeof c?c:c[0].src,g=o.getYouTubeId(f);a.originalNode.autoplay?h.loadVideoById(g):h.cueVideoById(g);break;case"currentTime":h.seekTo(c);break;case"muted":c?h.mute():h.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":p=c,h.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var i=m.createEvent("canplay",d);a.dispatchEvent(i)}else e.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=k["default"].html5media.methods,v=function(a){d[a]=function(){if(null!==h)switch(a){case"play":return j=!1,h.playVideo();case"pause":return j=!0,h.pauseVideo();case"load":return null}else e.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);var y=i["default"].createElement("div");y.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(y,a.originalNode),a.originalNode.style.display="none";var z="audio"===a.originalNode.tagName.toLowerCase(),A=z?"0":a.originalNode.height,B=z?"0":a.originalNode.width,C=o.getYouTubeId(c[0].src),D={id:d.id,containerId:y.id,videoId:C,height:A,width:B,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=h=b.target,a.youTubeState={paused:!0,ended:!1},e.length)for(var c=0,f=e.length;f>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);d["set"+j](g.value)}else"call"===g.type&&d[g.methodName]()}n=h.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},o=0,p=k.length;p>o;o++)n.addEventListener(k[o],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],j=!0,l=!1;break;case 0:c=["ended"],j=!1,l=!0,d.stopInterval();break;case 1:c=["play","playing"],j=!1,l=!1,d.startInterval();break;case 2:c=["pause"],j=!0,l=!1,d.stopInterval();break;case 3:c=["progress"],l=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],j=!0,l=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return z&&(D.playerVars.playsinline=1),o.enqueueIframe(D),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==h&&h.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),n&&(n.style.display="none")},d.show=function(){n&&(n.style.display="")},d.destroy=function(){h.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{16:16,17:17,2:2,3:3,6:6,7:7}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&","<":"<",">":">",'"':"""};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1; -if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(16),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{16:16,6:6}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}]},{},[18,5,4,8,13,10,9,11,12,14]); \ No newline at end of file +!function e(t,n,r){function a(o,l){if(!n[o]){if(!t[o]){var s="function"==typeof require&&require;if(!l&&s)return s(o,!0);if(i)return i(o,!0);var d=new Error("Cannot find module '"+o+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[o]={exports:{}};t[o][0].call(u.exports,function(e){var n=t[o][1][e];return a(n||e)},u,u.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)a(r[o]);return a}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var r=void 0!==n?n:"undefined"!=typeof window?window:{},a=e(1);if("undefined"!=typeof document)t.exports=document;else{var i=r["__GLOBAL_DOCUMENT_CACHE@4"];i||(i=r["__GLOBAL_DOCUMENT_CACHE@4"]=a),t.exports=i}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),i=e(8),o=e(17),l={lang:"en",en:i.EN};l.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");l.lang=t[0],void 0===l[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===r(t[1])?t[1]:{},l[t[0]]=(0,o.isObjectEmpty)(t[1])?i.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===r(t[1])&&(l[t[0]]=t[1])}return l.lang},l.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,a=void 0,i=l.language(),s=function(e,t,n){return"object"!==(void 0===e?"undefined":r(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==l[i]&&(n=l[i][e],null!==t&&"number"==typeof t&&(a=l[i]["mejs.plural-form"],n=s.apply(null,[n,t,a]))),!n&&l.en&&(n=l.en[e],null!==t&&"number"==typeof t&&(a=l.en["mejs.plural-form"],n=s.apply(null,[n,t,a]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,o.escapeHTML)(n)}return e},a.default.i18n=l,"undefined"!=typeof mejsL10n&&a.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=l},{17:17,6:6,8:8}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var i=r(e(3)),o=r(e(2)),l=r(e(6)),s=e(17),d=e(18),u=e(7),c=e(15),f=function e(t,n,r){var f=this;a(this,e);var m=this;r=Array.isArray(r)?r:null,m.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(m.defaults,n),m.mediaElement=o.default.createElement(n.fakeNodeName),m.mediaElement.options=n;var p=t,h=!1;if("string"==typeof t?m.mediaElement.originalNode=o.default.getElementById(t):(m.mediaElement.originalNode=t,p=t.id),p=p||"mejs_"+Math.random().toString().slice(2),void 0!==m.mediaElement.originalNode&&null!==m.mediaElement.originalNode&&m.mediaElement.appendChild){m.mediaElement.originalNode.setAttribute("id",p+"_from_mejs");var v=m.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!m.mediaElement.originalNode.getAttribute("preload")&&m.mediaElement.originalNode.setAttribute("preload","none"),m.mediaElement.originalNode.parentNode.insertBefore(m.mediaElement,m.mediaElement.originalNode),m.mediaElement.appendChild(m.mediaElement.originalNode)}m.mediaElement.id=p,m.mediaElement.renderers={},m.mediaElement.renderer=null,m.mediaElement.rendererName=null,m.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var r=n.mediaElement.renderers[e],a=null;if(void 0!==r&&null!==r)return r.show(),r.setSrc(t[0].src),n.mediaElement.renderer=r,n.mediaElement.rendererName=e,!0;for(var i=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,o=0,l=i.length;o<l;o++){var s=i[o];if(s===e){a=u.renderer.renderers[s];var d=Object.assign(a.options,n.mediaElement.options);return r=a.create(n.mediaElement,d,t),r.name=e,n.mediaElement.renderers[a.name]=r,n.mediaElement.renderer=r,n.mediaElement.rendererName=e,r.show(),!0}}return!1},m.mediaElement.setSize=function(e,t){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&m.mediaElement.renderer.setSize(e,t)},m.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=o.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=m.mediaElement.options.customError;if(!n){var r=m.mediaElement.originalNode.getAttribute("poster");r&&(n+='<img src="'+r+'" width="100%" height="100%" alt="'+l.default.i18n.t("mejs.download-file")+'">');for(var a=0,i=e.length;a<i;a++){var s=e[a];n+='<a href="'+s.src+'" data-type="'+s.type+'"><span>'+l.default.i18n.t("mejs.download-file")+": "+s.src+"</span></a>"}}t.innerHTML=n,m.mediaElement.originalNode.parentNode.insertBefore(t,m.mediaElement.originalNode),m.mediaElement.originalNode.style.display="none",h=!0};var g=l.default.html5media.properties,y=l.default.html5media.methods,E=function(e,t,n,r){var a=e[t],i=function(){return n.apply(e,[a])},o=function(t){return a=r.apply(e,[t])};Object.defineProperty(e,t,{get:i,set:o})},b=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer?m.mediaElement.renderer.getSrc():null},w=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,r=e.length;n<r;n++){var a=(0,d.absolutizeUrl)(e[n].src),i=e[n].type;t.push({src:a,type:""!==i&&null!==i&&void 0!==i||!a?i:(0,d.getTypeFromFile)(a)})}var o=u.renderer.select(t,m.mediaElement.options.renderers.length?m.mediaElement.options.renderers:[]),l=void 0;if(m.mediaElement.paused||(m.mediaElement.pause(),l=(0,s.createEvent)("pause",m.mediaElement),m.mediaElement.dispatchEvent(l)),m.mediaElement.originalNode.setAttribute("src",t[0].src||""),m.mediaElement.querySelector(".me_cannotplay")&&m.mediaElement.querySelector(".me_cannotplay").remove(),null===o)return m.mediaElement.createErrorMessage(t),l=(0,s.createEvent)("error",m.mediaElement),l.message="No renderer found",void m.mediaElement.dispatchEvent(l);m.mediaElement.changeRenderer(o.rendererName,t),void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer||((l=(0,s.createEvent)("error",m.mediaElement)).message="Error creating renderer",m.mediaElement.dispatchEvent(l),m.mediaElement.createErrorMessage(t))};E(m.mediaElement,"src",b,w),m.mediaElement.getSrc=b,m.mediaElement.setSrc=w;for(var S=0,_=g.length;S<_;S++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer?m.mediaElement.renderer["get"+t]():null},r=function(e){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&m.mediaElement.renderer["set"+t](e)};E(m.mediaElement,e,n,r),m.mediaElement["get"+t]=n,m.mediaElement["set"+t]=r}}(g[S]);for(var N=0,A=y.length;N<A;N++)!function(e){m.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];if(void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&"function"==typeof m.mediaElement.renderer[e])try{m.mediaElement.renderer[e](n)}catch(e){m.mediaElement.createErrorMessage()}return null}}(y[N]);m.mediaElement.events={},m.mediaElement.addEventListener=function(e,t){m.mediaElement.events[e]=m.mediaElement.events[e]||[],m.mediaElement.events[e].push(t)},m.mediaElement.removeEventListener=function(e,t){if(!e)return m.mediaElement.events={},!0;var n=m.mediaElement.events[e];if(!n)return!0;if(!t)return m.mediaElement.events[e]=[],!0;for(var r=0;r<n.length;r++)if(n[r]===t)return m.mediaElement.events[e].splice(r,1),!0;return!1},m.mediaElement.dispatchEvent=function(e){var t=m.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var j=function(e,t){if(l.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===i.default.location.protocol&&c.IS_IOS&&!i.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(i.default.URL||i.default.webkitURL).createObjectURL(this.response);return m.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},T=void 0;if(null!==r)T=r;else if(null!==m.mediaElement.originalNode)switch(T=[],m.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":T.push({type:"",src:m.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var F=m.mediaElement.originalNode.childNodes.length,x=m.mediaElement.originalNode.getAttribute("src");if(x){var C=m.mediaElement.originalNode,L=(0,d.formatType)(x,C.getAttribute("type"));T.push({type:L,src:j(x,L)})}for(var O=0;O<F;O++){var P=m.mediaElement.originalNode.childNodes[O];if(P.nodeType===Node.ELEMENT_NODE&&"source"===P.tagName.toLowerCase()){var I=P.getAttribute("src"),k=(0,d.formatType)(I,P.getAttribute("type"));T.push({type:k,src:j(I,k)})}}}return T.length&&(m.mediaElement.src=T),m.mediaElement.options.success&&m.mediaElement.options.success(m.mediaElement,m.mediaElement.originalNode),h&&m.mediaElement.options.error&&m.mediaElement.options.error(m.mediaElement,m.mediaElement.originalNode),m.mediaElement};i.default.MediaElement=f,n.default=f},{15:15,17:17,18:18,2:2,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),a={};a.version="4.1.1",a.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]},r.default.mejs=a,n.default=a},{3:3}],7:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),l=function(){function e(){r(this,e),this.renderers={},this.order=[]}return i(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var r=[/^(html5|native)/i,/^flash/i,/iframe$/i],a=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].test(e))return t;return r.length};t.sort(function(e,t){return a(e)-a(t)})}for(var i=0,o=t.length;i<o;i++){var l=t[i],s=this.renderers[l];if(null!==s&&void 0!==s)for(var d=0,u=e.length;d<u;d++)if("function"==typeof s.canPlayType&&"string"==typeof e[d].type&&s.canPlayType(e[d].type))return{rendererName:s.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":a(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),s=n.renderer=new l;o.default.Renderers=s},{6:6}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(18),d=e(15),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof dashjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();a.default["__ready__"+e.id](t)}},f={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(e){return d.HAS_MSE&&["application/dash+xml"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=r.getAttribute("preload"),u=r.autoplay,f=null,m=null;f=r.cloneNode(!0),t=Object.assign(t,e.options);for(var p=i.default.html5media.properties,h=0,v=p.length;h<v;h++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);f["get"+t]=function(){return null!==m?f[e]:null},f["set"+t]=function(t){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==m&&("src"===e&&(m.attachSource(t),u&&f.play()),f[e]=t)}}(p[h]);if(a.default["__ready__"+s]=function(n){e.dashPlayer=m=n,m.getDebug().setLogToBrowserConsole(t.dash.debug),m.setAutoPlay(d&&"auto"===d||u),m.setScheduleWhilePaused(d&&"auto"===d||u);for(var r=i.default.html5media.events.concat(["click","mouseover","mouseout"]),a=dashjs.MediaPlayer.events,o=0,s=r.length;o<s;o++)!function(t){"loadedmetadata"===t&&m.initialize(f,f.src,!1),f.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(r[o]);var c=function(t){var n=(0,l.createEvent)(t.type,f);n.data=t,e.dispatchEvent(n),"error"===t.type.toLowerCase()&&console.error(t)};for(var p in a)a.hasOwnProperty(p)&&m.on(a[p],c)},n&&n.length>0)for(var g=0,y=n.length;g<y;g++)if(o.renderer.renderers[t.prefix].canPlayType(n[g].type)){f.setAttribute("src",n[g].src);break}f.setAttribute("id",s),r.parentNode.insertBefore(f,r),r.autoplay=!1,r.style.display="none",c.load({options:t.dash,id:s}),f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f};var E=(0,l.createEvent)("rendererready",f);return e.dispatchEvent(E),f}};s.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=r(e(3)),o=r(e(2)),l=r(e(6)),s=r(e(4)),d=e(7),u=e(17),c=e(15),f=e(18),m=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=m.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,r,a){m.plugins[e]=m.detectPlugin(t,n,r,a)},detectPlugin:function(e,t,n,r){var o=[0,0,0],l=void 0,s=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===a(c.NAV.plugins[e])){if((l=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(o=l.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)o[d]=parseInt(o[d].match(/\d+/),10)}else if(void 0!==i.default.ActiveXObject)try{(s=new ActiveXObject(n))&&(o=r(s))}catch(e){}return o}};m.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var p={create:function(e,t,n){var r={};r.options=t,r.id=e.id+"_"+r.options.prefix,r.mediaElement=e,r.flashState={},r.flashApi=null,r.flashApiStack=[];for(var a=l.default.html5media.properties,m=0,p=a.length;m<p;m++)!function(e){r.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);r["get"+t]=function(){if(null!==r.flashApi){if(void 0!==r.flashApi["get_"+e]){var t=r.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},r["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==r.flashApi&&void 0!==r.flashApi["set_"+e]?r.flashApi["set_"+e](t):r.flashApiStack.push({type:"set",propName:e,value:t})}}(a[m]);var h=l.default.html5media.methods;h.push("stop");for(var v=0,g=h.length;v<g;v++)!function(e){r[e]=function(){if(null!==r.flashApi){if(r.flashApi["fire_"+e])try{r.flashApi["fire_"+e]()}catch(e){}}else r.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var y=["rendererready"],E=0,b=y.length;E<b;E++){var w=(0,u.createEvent)(y[E],r);e.dispatchEvent(w)}i.default["__ready__"+r.id]=function(){if(r.flashReady=!0,r.flashApi=o.default.getElementById("__"+r.id),r.flashApiStack.length)for(var e=0,t=r.flashApiStack.length;e<t;e++){var n=r.flashApiStack[e];if("set"===n.type){var a=n.propName,i=""+a.substring(0,1).toUpperCase()+a.substring(1);r["set"+i](n.value)}else"call"===n.type&&r[n.methodName]()}},i.default["__event__"+r.id]=function(e,t){var n=(0,u.createEvent)(e,r);n.message=t||"",r.mediaElement.dispatchEvent(n)},r.flashWrapper=o.default.createElement("div"),-1===["always","sameDomain"].indexOf(r.options.shimScriptAccess)&&(r.options.shimScriptAccess="sameDomain");var S=e.originalNode.autoplay,_=["uid="+r.id,"autoplay="+S,"allowScriptAccess="+r.options.shimScriptAccess],N=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),A=N?e.originalNode.height:1,j=N?e.originalNode.width:1;e.originalNode.getAttribute("src")&&_.push("src="+e.originalNode.getAttribute("src")),!0===r.options.enablePseudoStreaming&&(_.push("pseudostreamstart="+r.options.pseudoStreamingStartQueryParam),_.push("pseudostreamtype="+r.options.pseudoStreamingType)),e.appendChild(r.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var T=[];if(c.IS_IE){var F=o.default.createElement("div");r.flashWrapper.appendChild(F),T=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+r.id+'"','width="'+j+'"','height="'+A+'"'],N||T.push('style="clip: rect(0 0 0 0); position: absolute;"'),F.outerHTML="<object "+T.join(" ")+'><param name="movie" value="'+r.options.pluginPath+r.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+_.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+r.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+s.default.t("mejs.install-flash")+"</div></object>"}else T=['id="__'+r.id+'"','name="__'+r.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+r.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+r.options.pluginPath+r.options.filename+'"','flashvars="'+_.join("&")+'"','width="'+j+'"','height="'+A+'"'],N||T.push('style="clip: rect(0 0 0 0); position: absolute;"'),r.flashWrapper.innerHTML="<embed "+T.join(" ")+">";if(r.flashNode=r.flashWrapper.lastChild,r.hide=function(){N&&(r.flashNode.style.display="none")},r.show=function(){N&&(r.flashNode.style.display="")},r.setSize=function(e,t){r.flashNode.style.width=e+"px",r.flashNode.style.height=t+"px",null!==r.flashApi&&"function"==typeof r.flashApi.fire_setSize&&r.flashApi.fire_setSize(e,t)},r.destroy=function(){r.flashNode.remove()},n&&n.length>0)for(var x=0,C=n.length;x<C;x++)if(d.renderer.renderers[t.prefix].canPlayType(n[x].type)){r.setSrc(n[x].src);break}return r}};if(m.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(v);var g={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(g);var y={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(y);var E={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(E)}},{15:15,17:17,18:18,2:2,3:3,4:4,6:6,7:7}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(15),d=e(18),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof flvjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=flvjs.createPlayer(e.options);a.default["__ready__"+e.id](t)}},f={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(e){return s.HAS_MSE&&["video/x-flv","video/flv"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=null,u=null;d=r.cloneNode(!0),t=Object.assign(t,e.options);for(var f=i.default.html5media.properties,m=0,p=f.length;m<p;m++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);d["get"+t]=function(){return null!==u?d[e]:null},d["set"+t]=function(t){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==u&&(d[e]=t,"src"===e&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()))}}(f[m]);if(a.default["__ready__"+s]=function(t){e.flvPlayer=u=t;for(var n=i.default.html5media.events.concat(["click","mouseover","mouseout"]),r=0,a=n.length;r<a;r++)!function(t){"loadedmetadata"===t&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[r])},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(o.renderer.renderers[t.prefix].canPlayType(n[h].type)){d.setAttribute("src",n[h].src);break}d.setAttribute("id",s),r.parentNode.insertBefore(d,r),r.autoplay=!1,r.style.display="none",t.flv.type="flv",t.flv.url=d.getAttribute("src"),c.load({options:t.flv,id:s}),d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var g=(0,l.createEvent)("rendererready",d);return e.dispatchEvent(g),d}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(15),d=e(18),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof Hls?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=new Hls(e.options);return a.default["__ready__"+e.id](t),t}},f={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return s.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=r.getAttribute("preload"),u=r.autoplay,f=null,m=null;m=r.cloneNode(!0),(t=Object.assign(t,e.options)).hls.autoStartLoad=d&&"none"!==d||u;for(var p=i.default.html5media.properties,h=0,v=p.length;h<v;h++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);m["get"+n]=function(){return null!==f?m[e]:null},m["set"+n]=function(n){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==f&&(m[e]=n,"src"===e&&(f.destroy(),(f=c._createPlayer({options:t.hls,id:s})).loadSource(n),f.attachMedia(m)))}}(p[h]);if(a.default["__ready__"+s]=function(t){e.hlsPlayer=f=t;for(var n=i.default.html5media.events.concat(["click","mouseover","mouseout"]),r=Hls.Events,a=0,o=n.length;a<o;a++)!function(t){if("loadedmetadata"===t){var n=e.originalNode.src;f.detachMedia(),f.loadSource(n),f.attachMedia(m)}m.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[a]);var s=void 0,d=void 0,u=function(t,n){var r=(0,l.createEvent)(t,m);if(r.data=n,e.dispatchEvent(r),"hlsError"===t&&(console.warn(t,n),n.fatal))switch(n.type){case"mediaError":var a=(new Date).getTime();!s||a-s>3e3?(s=(new Date).getTime(),f.recoverMediaError()):!d||a-d>3e3?(d=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),f.swapAudioCodec(),f.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:f.destroy()}};for(var c in r)r.hasOwnProperty(c)&&f.on(r[c],u)},n&&n.length>0)for(var g=0,y=n.length;g<y;g++)if(o.renderer.renderers[t.prefix].canPlayType(n[g].type)){m.setAttribute("src",n[g].src);break}"auto"===d||u||(m.addEventListener("play",function(){null!==f&&f.startLoad()}),m.addEventListener("pause",function(){null!==f&&f.stopLoad()})),m.setAttribute("id",s),r.parentNode.insertBefore(m,r),r.autoplay=!1,r.style.display="none",c.load({options:t.hls,id:s}),m.setSize=function(e,t){return m.style.width=e+"px",m.style.height=t+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==f&&f.destroy()},m.stop=function(){null!==f&&f.stopLoad()};var E=(0,l.createEvent)("rendererready",m);return e.dispatchEvent(E),m}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],13:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(2)),o=r(e(6)),l=e(7),s=e(17),d=e(15),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=i.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var r=e.id+"_"+t.prefix,a=null;void 0===e.originalNode||null===e.originalNode?(a=i.default.createElement("audio"),e.appendChild(a)):a=e.originalNode,a.setAttribute("id",r);for(var d=o.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);a["get"+t]=function(){return a[e]},a["set"+t]=function(t){-1===o.default.html5media.readOnlyProperties.indexOf(e)&&(a[e]=t)}}(d[u]);for(var f=o.default.html5media.events.concat(["click","mouseover","mouseout"]),m=0,p=f.length;m<p;m++)!function(t){a.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[m]);if(a.setSize=function(e,t){return a.style.width=e+"px",a.style.height=t+"px",a},a.hide=function(){return a.style.display="none",a},a.show=function(){return a.style.display="",a},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(l.renderer.renderers[t.prefix].canPlayType(n[h].type)){a.setAttribute("src",n[h].src);break}var g=(0,s.createEvent)("rendererready",a);return e.dispatchEvent(g),a}};a.default.HtmlMediaElement=o.default.HtmlMediaElement=u,l.renderer.add(u)},{15:15,17:17,2:2,3:3,6:6,7:7}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=r(e(3)),o=r(e(2)),l=r(e(6)),s=e(7),d=e(17),u=e(18),c=e(16),f={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){f.isLoaded="undefined"!=typeof YT&&YT.loaded,f.isLoaded?f.createIframe(e):(f.loadIframeApi(),f.iframeQueue.push(e))},loadIframeApi:function(){f.isIframeStarted||((0,c.loadScript)("https://www.youtube.com/player_api"),f.isIframeStarted=!0)},iFrameReady:function(){for(f.isLoaded=!0,f.isIframeLoaded=!0;f.iframeQueue.length>0;){var e=f.iframeQueue.pop();f.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return e.indexOf("?")>0?""===(t=f.getYouTubeIdFromParam(e))&&(t=f.getYouTubeIdFromUrl(e)):t=f.getYouTubeIdFromUrl(e),t},getYouTubeIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",r=0,a=t.length;r<a;r++){var i=t[r].split("=");if("v"===i[0]){n=i[1];break}}return n},getYouTubeIdFromUrl:function(e){return void 0!==e&&null!==e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(void 0===e||null===e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},m={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(e,t,n){var r={},a=[],s=null,u=!0,c=!1,m=null,p=1;r.options=t,r.id=e.id+"_"+t.prefix,r.mediaElement=e;for(var h=l.default.html5media.properties,v=0,g=h.length;v<g;v++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);r["get"+n]=function(){if(null!==s){switch(t){case"currentTime":return s.getCurrentTime();case"duration":return s.getDuration();case"volume":return p=s.getVolume()/100;case"paused":return u;case"ended":return c;case"muted":return s.isMuted();case"buffered":var e=s.getVideoLoadedFraction(),n=s.getDuration();return{start:function(){return 0},end:function(){return e*n},length:1};case"src":return s.getVideoUrl();case"readyState":return 4}return null}return null},r["set"+n]=function(n){if(null!==s)switch(t){case"src":var i="string"==typeof n?n:n[0].src,o=f.getYouTubeId(i);e.originalNode.autoplay?s.loadVideoById(o):s.cueVideoById(o);break;case"currentTime":s.seekTo(n);break;case"muted":n?s.mute():s.unMute(),setTimeout(function(){var t=(0,d.createEvent)("volumechange",r);e.dispatchEvent(t)},50);break;case"volume":p=n,s.setVolume(100*n),setTimeout(function(){var t=(0,d.createEvent)("volumechange",r);e.dispatchEvent(t)},50);break;case"readyState":var l=(0,d.createEvent)("canplay",r);e.dispatchEvent(l)}else a.push({type:"set",propName:t,value:n})}}(h[v]);for(var y=l.default.html5media.methods,E=0,b=y.length;E<b;E++)!function(e){r[e]=function(){if(null!==s)switch(e){case"play":return u=!1,s.playVideo();case"pause":return u=!0,s.pauseVideo();case"load":return null}else a.push({type:"call",methodName:e})}}(y[E]);var w=o.default.createElement("div");w.id=r.id,r.options.youtube.nocookie&&e.originalNode.setAttribute("src",f.getYouTubeNoCookieUrl(n[0].src)),e.originalNode.parentNode.insertBefore(w,e.originalNode),e.originalNode.style.display="none";var S="audio"===e.originalNode.tagName.toLowerCase(),_=S?"1":e.originalNode.height,N=S?"1":e.originalNode.width,A=f.getYouTubeId(n[0].src),j={id:r.id,containerId:w.id,videoId:A,height:_,width:N,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},r.options.youtube),origin:i.default.location.host,events:{onReady:function(t){if(e.youTubeApi=s=t.target,e.youTubeState={paused:!0,ended:!1},a.length)for(var n=0,i=a.length;n<i;n++){var o=a[n];if("set"===o.type){var l=o.propName,u=""+l.substring(0,1).toUpperCase()+l.substring(1);r["set"+u](o.value)}else"call"===o.type&&r[o.methodName]()}m=s.getIframe();for(var c=["mouseover","mouseout"],f=function(t){var n=(0,d.createEvent)(t.type,r);e.dispatchEvent(n)},p=0,h=c.length;p<h;p++)m.addEventListener(c[p],f,!1);for(var v=["rendererready","loadeddata","loadedmetadata","canplay"],g=0,y=v.length;g<y;g++){var E=(0,d.createEvent)(v[g],r);e.dispatchEvent(E)}},onStateChange:function(t){var n=[];switch(t.data){case-1:n=["loadedmetadata"],u=!0,c=!1;break;case 0:n=["ended"],u=!1,c=!0,r.stopInterval();break;case 1:n=["play","playing"],u=!1,c=!1,r.startInterval();break;case 2:n=["pause"],u=!0,c=!1,r.stopInterval();break;case 3:n=["progress"],c=!1;break;case 5:n=["loadeddata","loadedmetadata","canplay"],u=!0,c=!1}for(var a=0,i=n.length;a<i;a++){var o=(0,d.createEvent)(n[a],r);e.dispatchEvent(o)}},onError:function(t){var n=(0,d.createEvent)("error",r);n.data=t.data,e.dispatchEvent(n)}}};return S&&(j.playerVars.playsinline=1),f.enqueueIframe(j),r.onEvent=function(t,n,r){null!==r&&void 0!==r&&(e.youTubeState=r)},r.setSize=function(e,t){null!==s&&s.setSize(e,t)},r.hide=function(){r.stopInterval(),r.pause(),m&&(m.style.display="none")},r.show=function(){m&&(m.style.display="")},r.destroy=function(){s.destroy()},r.interval=null,r.startInterval=function(){r.interval=setInterval(function(){var t=(0,d.createEvent)("timeupdate",r);e.dispatchEvent(t)},250)},r.stopInterval=function(){r.interval&&clearInterval(r.interval)},r}};i.default.postMessage&&a(i.default.addEventListener)&&(i.default.onYouTubePlayerAPIReady=function(){f.iFrameReady()},u.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.be)/i.test(e)?"video/x-youtube":null}),s.renderer.add(m))},{16:16,17:17,18:18,2:2,3:3,6:6,7:7}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var a=r(e(3)),i=r(e(2)),o=r(e(6)),l=n.NAV=a.default.navigator,s=n.UA=l.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(s),u=n.IS_IPHONE=/iphone/i.test(s),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(s)),f=n.IS_IE=/(trident|microsoft)/i.test(l.appName),m=(n.IS_EDGE="msLaunchUri"in l&&!("documentMode"in i.default)),p=n.IS_CHROME=/chrome/i.test(s),h=n.IS_FIREFOX=/firefox/i.test(s),v=n.IS_SAFARI=/safari/i.test(s)&&!p,g=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(s),y=(n.HAS_MSE="MediaSource"in a.default),E=(n.SUPPORT_POINTER_EVENTS=function(){var e=i.default.createElement("x"),t=i.default.documentElement,n=a.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var r=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!r}()),b=["source","track","audio","video"],w=void 0,S=0,_=b.length;S<_;S++)w=i.default.createElement(b[S]);var N=n.SUPPORTS_NATIVE_HLS=v||c&&(p||g)||f&&/edge/i.test(s),A=void 0!==w.webkitEnterFullscreen,j=void 0!==w.requestFullscreen;A&&/mac os x 10_5/i.test(s)&&(j=!1,A=!1);var T=void 0!==w.webkitRequestFullScreen,F=void 0!==w.mozRequestFullScreen,x=void 0!==w.msRequestFullscreen,C=T||F||x,L=C,O="",P=void 0,I=void 0,k=void 0;F?L=i.default.mozFullScreenEnabled:x&&(L=i.default.msFullscreenEnabled),p&&(A=!1),C&&(T?O="webkitfullscreenchange":F?O="mozfullscreenchange":x&&(O="MSFullscreenChange"),n.isFullScreen=P=function(){return F?i.default.mozFullScreen:T?i.default.webkitIsFullScreen:x?null!==i.default.msFullscreenElement:void 0},n.requestFullScreen=I=function(e){T?e.webkitRequestFullScreen():F?e.mozRequestFullScreen():x&&e.msRequestFullscreen()},n.cancelFullScreen=k=function(){T?i.default.webkitCancelFullScreen():F?i.default.mozCancelFullScreen():x&&i.default.msExitFullscreen()});var M=n.HAS_NATIVE_FULLSCREEN=j,U=n.HAS_WEBKIT_NATIVE_FULLSCREEN=T,R=n.HAS_MOZ_NATIVE_FULLSCREEN=F,H=n.HAS_MS_NATIVE_FULLSCREEN=x,D=n.HAS_IOS_FULLSCREEN=A,V=n.HAS_TRUE_NATIVE_FULLSCREEN=C,q=n.HAS_NATIVE_FULLSCREEN_ENABLED=L,z=n.FULLSCREEN_EVENT_NAME=O;n.isFullScreen=P,n.requestFullScreen=I,n.cancelFullScreen=k,o.default.Features=o.default.Features||{},o.default.Features.isiPad=d,o.default.Features.isiPhone=u,o.default.Features.isiOS=o.default.Features.isiPhone||o.default.Features.isiPad,o.default.Features.isAndroid=c,o.default.Features.isIE=f,o.default.Features.isEdge=m,o.default.Features.isChrome=p,o.default.Features.isFirefox=h,o.default.Features.isSafari=v,o.default.Features.isStockAndroid=g,o.default.Features.hasMSE=y,o.default.Features.supportsNativeHLS=N,o.default.Features.supportsPointerEvents=E,o.default.Features.hasiOSFullScreen=D,o.default.Features.hasNativeFullscreen=M,o.default.Features.hasWebkitNativeFullScreen=U,o.default.Features.hasMozNativeFullScreen=R,o.default.Features.hasMsNativeFullScreen=H,o.default.Features.hasTrueNativeFullScreen=V,o.default.Features.nativeFullScreenEnabled=q,o.default.Features.fullScreenEventName=z,o.default.Features.isFullScreen=P,o.default.Features.requestFullScreen=I,o.default.Features.cancelFullScreen=k},{2:2,3:3,6:6}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e){function t(e){for(a=e;i=n.shift();)i[r]&&i[r](a)}var n=[],r=-1,a=void 0,i=void 0;return e(function(e){return t(e,r=0)},function(e){return t(e,r=1)}),{then:function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];~r?t[r]&&t[r](a):n.push(t)}}}function i(e){return a(function(t,n){var r=p.default.createElement("script");r.src=e,r.async=!0,r.onload=function(){r.remove(),t()},r.onerror=function(){r.remove(),n()},p.default.head.appendChild(r)})}function o(e){var t=e.getBoundingClientRect(),n=m.default.pageXOffset||p.default.documentElement.scrollLeft,r=m.default.pageYOffset||p.default.documentElement.scrollTop;return{top:t.top+r,left:t.left+n}}function l(e,t){E(e,t)?w(e,t):b(e,t)}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var r=null;m.default.requestAnimationFrame(function a(i){var o=i-(r=r||i),l=parseFloat(1-o/t,2);e.style.opacity=l<0?0:l,o>t?n&&"function"==typeof n&&n():m.default.requestAnimationFrame(a)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var r=null;m.default.requestAnimationFrame(function a(i){var o=i-(r=r||i),l=parseFloat(o/t,2);e.style.opacity=l>1?1:l,o>t?n&&"function"==typeof n&&n():m.default.requestAnimationFrame(a)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,r){var a=m.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),i="application/x-www-form-urlencoded; charset=UTF-8",o=!1,l="*/".concat("*");switch(t){case"text":i="text/plain";break;case"json":i="application/json, text/javascript";break;case"html":i="text/html";break;case"xml":i="application/xml, text/xml"}"application/x-www-form-urlencoded"!==i&&(l=i+", */*; q=0.01"),a&&(a.open("GET",e,!0),a.setRequestHeader("Accept",l),a.onreadystatechange=function(){if(!o&&4===a.readyState)if(200===a.status){o=!0;var e=void 0;switch(t){case"json":e=JSON.parse(a.responseText);break;case"xml":e=a.responseXML;break;default:e=a.responseText}n(e)}else"function"==typeof r&&r(a.status)},a.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=i,n.offset=o,n.toggleClass=l,n.fadeOut=s,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var m=r(e(3)),p=r(e(2)),h=r(e(6)),v=void 0,g=void 0,y=void 0;"classList"in p.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},g=function(e,t){return e.classList.add(t)},y=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},g=function(e,t){E(e,t)||(e.className+=" "+t)},y=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var E=n.hasClass=v,b=n.addClass=g,w=n.removeClass=y;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=o,h.default.Utils.hasClass=E,h.default.Utils.addClass=b,h.default.Utils.removeClass=w,h.default.Utils.toggleClass=l,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=s,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=i},{2:2,3:3,6:6}],17:[function(e,t,n){"use strict";function r(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function a(e,t){var n=this,r=arguments,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var i=void 0;return function(){var o=n,l=r,s=function(){i=null,a||e.apply(o,l)},d=a&&!i;clearTimeout(i),i=setTimeout(s,t),d&&e.apply(o,l)}}function i(e){return Object.getOwnPropertyNames(e).length<=0}function o(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,r={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var a=e+(t?"."+t:"");a.startsWith(".")?(r.d.push(a),r.w.push(a)):r[n.test(e)?"w":"d"].push(a)}),r.d=r.d.join(" "),r.w=r.w.join(" "),r}function l(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),r={target:t};return null!==n&&(e=n[1],r.namespace=n[2]),new window.CustomEvent(e,{detail:r})}function s(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=r,n.debounce=a,n.isObjectEmpty=i,n.splitEvents=o,n.createEvent=l,n.isNodeAfter=s,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=r,u.default.Utils.debounce=a,u.default.Utils.isObjectEmpty=i,u.default.Utils.splitEvents=o,u.default.Utils.createEvent=l,u.default.Utils.isNodeAfter=s,u.default.Utils.isString=d},{6:6}],18:[function(e,t,n){"use strict";function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?o(e):i(t)}function i(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function o(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var r=c[t](e);if(r)return r}var a=s(l(e)),i="video/mp4";return a&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(a)?i="video/"+a:~["mp3","oga","wav","mid","midi"].indexOf(a)&&(i="audio/"+a)),i}function l(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function s(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=r,n.formatType=a,n.getMimeFromType=i,n.getTypeFromFile=o,n.getExtension=l,n.normalizeExtension=s;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(17),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=r,d.default.Utils.formatType=a,d.default.Utils.getMimeFromType=i,d.default.Utils.getTypeFromFile=o,d.default.Utils.getExtension=l,d.default.Utils.normalizeExtension=s},{17:17,6:6}],19:[function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=r.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,r=arguments.length;n<r;n++){var a=arguments[n];if(null!==a)for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,r=this;do{for(n=t.length;--n>=0&&t.item(n)!==r;);}while(n<0&&(r=r.parentElement));return r}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),a=window.setTimeout(function(){t(n+r)},r);return e=n+r,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}]},{},[19,5,4,8,13,10,9,11,12,14]); \ No newline at end of file diff --git a/lib/mejs/mediaelementplayer-legacy.css b/lib/mejs/mediaelementplayer-legacy.css index 90adc85c578731c3deb863d6c0c8a4b9329e21c2..b4d704b5c24c283307a8aa090fe800ab62798a4d 100644 --- a/lib/mejs/mediaelementplayer-legacy.css +++ b/lib/mejs/mediaelementplayer-legacy.css @@ -375,11 +375,9 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h transform: scaleX(0) !important; } -.mejs-time-handle, .mejs-time-handle-baby { +.mejs-time-handle, .mejs-time-handle-content { position: absolute; cursor: pointer; - width: 20px; - height: 20px; border: 4px solid transparent; z-index: 11; left: 0; @@ -387,16 +385,18 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h transform: translateX(0px); } -.mejs-time-handle-baby { - left: -4px; +.mejs-time-handle-content { + left: -7px; border: 4px solid rgba(255, 255, 255, 0.9); -ms-transform: scale(0); transform: scale(0); - top: -8px; + top: -4px; border-radius: 50%; + width: 10px; + height: 10px; } -.mejs-time-rail:hover .mejs-time-handle-baby, .mejs-time-rail .mejs-time-handle-baby:focus, .mejs-time-rail .mejs-time-handle-baby:active { +.mejs-time-rail:hover .mejs-time-handle-content, .mejs-time-rail .mejs-time-handle-content:focus, .mejs-time-rail .mejs-time-handle-content:active { -ms-transform: scale(1); transform: scale(1); } diff --git a/lib/mejs/mediaelementplayer-legacy.min.css b/lib/mejs/mediaelementplayer-legacy.min.css index e5bc8bd92f0faa2a28f089e54df7e7c986427614..b7bec9e6274aaa8a59131601c5a20925dfa2d93c 100644 --- a/lib/mejs/mediaelementplayer-legacy.min.css +++ b/lib/mejs/mediaelementplayer-legacy.min.css @@ -1 +1 @@ -.mejs-offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs-container .mejs-video{min-height:140px}.mejs-container *{box-sizing:border-box}.mejs-container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs-fill-container,.mejs-fill-container .mejs-container{width:100%;height:100%}.mejs-fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs-container:focus{outline:none}.mejs-iframe-overlay{position:absolute;width:100%;height:100%}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%!important;height:100%!important}.mejs-clear{clear:both}.mejs-background,.mejs-mediaelement{position:absolute;top:0;left:0}.mejs-mediaelement{width:100%;height:100%;z-index:0}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs-poster-img{display:none}.mejs-poster-img{border:0;padding:0}.mejs-overlay{position:absolute;top:0;left:0;z-index:1}.mejs-layer{z-index:1}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs-overlay:hover>.mejs-overlay-button{background-position:-80px -39px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs-overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs-controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs-button,.mejs-time,.mejs-time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs-button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs-button>button:focus{outline:1px dotted #999}.mejs-container-keyboard-inactive [role=slider],.mejs-container-keyboard-inactive [role=slider]:focus,.mejs-container-keyboard-inactive a,.mejs-container-keyboard-inactive a:focus,.mejs-container-keyboard-inactive button,.mejs-container-keyboard-inactive button:focus{outline:0}.mejs-time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs-play>button{background-position:0 0}.mejs-pause>button{background-position:-20px 0}.mejs-replay>button{background-position:-160px 0}.mejs-time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs-time-buffering,.mejs-time-current,.mejs-time-float,.mejs-time-float-corner,.mejs-time-float-current,.mejs-time-hovered,.mejs-time-loaded,.mejs-time-marker,.mejs-time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs-time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs-time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs-time-loaded{background:hsla(0,0%,100%,.3)}.mejs-time-current,.mejs-time-handle-content{background:hsla(0,0%,100%,.9)}.mejs-time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs-time-hovered.negative{background:rgba(0,0,0,.2)}.mejs-time-buffering,.mejs-time-current,.mejs-time-hovered,.mejs-time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs-time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs-time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs-time-handle,.mejs-time-handle-baby{position:absolute;cursor:pointer;width:20px;height:20px;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs-time-handle-baby{left:-4px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-8px;border-radius:50%}.mejs-time-rail .mejs-time-handle-baby:active,.mejs-time-rail .mejs-time-handle-baby:focus,.mejs-time-rail:hover .mejs-time-handle-baby{-ms-transform:scale(1);transform:scale(1)}.mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-time-float{width:64px;margin-left:-23px}.mejs-long-video .mejs-time-float-current{width:60px}.mejs-long-video .mejs-time-float-corner{left:18px}.mejs-broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs-fullscreen-button>button{background-position:-80px 0}.mejs-unfullscreen>button{background-position:-100px 0}.mejs-mute>button{background-position:-60px 0}.mejs-unmute>button{background-position:-40px 0}.mejs-volume-button{position:relative}.mejs-volume-button>.mejs-volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs-volume-button:hover{border-radius:0 0 4px 4px}.mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs-volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs-volume-current,.mejs-volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs-volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs-horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs-horizontal-volume-current,.mejs-horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs-horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs-horizontal-volume-handle{display:none}.mejs-captions-button,.mejs-chapters-button{position:relative}.mejs-captions-button>button{background-position:-140px 0}.mejs-chapters-button>button{background-position:-180px 0}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs-chapters-button>.mejs-chapters-selector{width:110px}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:visible}.mejs-captions-selector-list,.mejs-chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-captions-selector-list-item,.mejs-chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs-captions-selector-list-item:hover,.mejs-chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs-captions-selector-input,.mejs-chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs-captions-selector-label,.mejs-chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs-captions-selected,.mejs-chapters-selected{color:#21f8f8}.mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text,.mejs-captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs-container.mejs-hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs-container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block} \ No newline at end of file +.mejs-offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs-container .mejs-video{min-height:140px}.mejs-container *{box-sizing:border-box}.mejs-container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs-fill-container,.mejs-fill-container .mejs-container{width:100%;height:100%}.mejs-fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs-container:focus{outline:none}.mejs-iframe-overlay{position:absolute;width:100%;height:100%}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%!important;height:100%!important}.mejs-clear{clear:both}.mejs-background,.mejs-mediaelement{position:absolute;top:0;left:0}.mejs-mediaelement{width:100%;height:100%;z-index:0}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs-poster-img{display:none}.mejs-poster-img{border:0;padding:0}.mejs-overlay{position:absolute;top:0;left:0;z-index:1}.mejs-layer{z-index:1}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs-overlay:hover>.mejs-overlay-button{background-position:-80px -39px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs-overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs-controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs-button,.mejs-time,.mejs-time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs-button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs-button>button:focus{outline:1px dotted #999}.mejs-container-keyboard-inactive [role=slider],.mejs-container-keyboard-inactive [role=slider]:focus,.mejs-container-keyboard-inactive a,.mejs-container-keyboard-inactive a:focus,.mejs-container-keyboard-inactive button,.mejs-container-keyboard-inactive button:focus{outline:0}.mejs-time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs-play>button{background-position:0 0}.mejs-pause>button{background-position:-20px 0}.mejs-replay>button{background-position:-160px 0}.mejs-time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs-time-buffering,.mejs-time-current,.mejs-time-float,.mejs-time-float-corner,.mejs-time-float-current,.mejs-time-hovered,.mejs-time-loaded,.mejs-time-marker,.mejs-time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs-time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs-time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs-time-loaded{background:hsla(0,0%,100%,.3)}.mejs-time-current,.mejs-time-handle-content{background:hsla(0,0%,100%,.9)}.mejs-time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs-time-hovered.negative{background:rgba(0,0,0,.2)}.mejs-time-buffering,.mejs-time-current,.mejs-time-hovered,.mejs-time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs-time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs-time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs-time-handle,.mejs-time-handle-content{position:absolute;cursor:pointer;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs-time-handle-content{left:-7px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-4px;border-radius:50%;width:10px;height:10px}.mejs-time-rail .mejs-time-handle-content:active,.mejs-time-rail .mejs-time-handle-content:focus,.mejs-time-rail:hover .mejs-time-handle-content{-ms-transform:scale(1);transform:scale(1)}.mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-time-float{width:64px;margin-left:-23px}.mejs-long-video .mejs-time-float-current{width:60px}.mejs-long-video .mejs-time-float-corner{left:18px}.mejs-broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs-fullscreen-button>button{background-position:-80px 0}.mejs-unfullscreen>button{background-position:-100px 0}.mejs-mute>button{background-position:-60px 0}.mejs-unmute>button{background-position:-40px 0}.mejs-volume-button{position:relative}.mejs-volume-button>.mejs-volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs-volume-button:hover{border-radius:0 0 4px 4px}.mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs-volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs-volume-current,.mejs-volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs-volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs-horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs-horizontal-volume-current,.mejs-horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs-horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs-horizontal-volume-handle{display:none}.mejs-captions-button,.mejs-chapters-button{position:relative}.mejs-captions-button>button{background-position:-140px 0}.mejs-chapters-button>button{background-position:-180px 0}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs-chapters-button>.mejs-chapters-selector{width:110px}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:visible}.mejs-captions-selector-list,.mejs-chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-captions-selector-list-item,.mejs-chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs-captions-selector-list-item:hover,.mejs-chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs-captions-selector-input,.mejs-chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs-captions-selector-label,.mejs-chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs-captions-selected,.mejs-chapters-selected{color:#21f8f8}.mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text,.mejs-captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs-container.mejs-hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs-container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block} \ No newline at end of file diff --git a/lib/mejs/mediaelementplayer.css b/lib/mejs/mediaelementplayer.css index 183cd6009eb2d0c4d05965f4feda9a2d3542d773..1af19a3f747756f09025d35a551652a40dd02306 100644 --- a/lib/mejs/mediaelementplayer.css +++ b/lib/mejs/mediaelementplayer.css @@ -375,11 +375,9 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h transform: scaleX(0) !important; } -.mejs__time-handle, .mejs__time-handle-baby { +.mejs__time-handle, .mejs__time-handle-content { position: absolute; cursor: pointer; - width: 20px; - height: 20px; border: 4px solid transparent; z-index: 11; left: 0; @@ -387,16 +385,18 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h transform: translateX(0px); } -.mejs__time-handle-baby { - left: -4px; +.mejs__time-handle-content { + left: -7px; border: 4px solid rgba(255, 255, 255, 0.9); -ms-transform: scale(0); transform: scale(0); - top: -8px; + top: -4px; border-radius: 50%; + width: 10px; + height: 10px; } -.mejs__time-rail:hover .mejs__time-handle-baby, .mejs__time-rail .mejs__time-handle-baby:focus, .mejs__time-rail .mejs__time-handle-baby:active { +.mejs__time-rail:hover .mejs__time-handle-content, .mejs__time-rail .mejs__time-handle-content:focus, .mejs__time-rail .mejs__time-handle-content:active { -ms-transform: scale(1); transform: scale(1); } diff --git a/lib/mejs/mediaelementplayer.js b/lib/mejs/mediaelementplayer.js index fdb1946d0e1204bcf0fa77b919acc283f85081a9..549abac6f2df5cf5722a9cba9b59e21ff01596ef 100644 --- a/lib/mejs/mediaelementplayer.js +++ b/lib/mejs/mediaelementplayer.js @@ -61,20 +61,8 @@ var _general = _dereq_(21); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Locale. - * - * This object manages translations with pluralization. Also deals with WordPress compatibility. - * @type {Object} - */ var i18n = { lang: 'en', en: _en.EN }; -/** - * Language setter/getter - * - * @param {*} args Can pass the language code and/or the translation strings as an Object - * @return {string} - */ i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -86,13 +74,12 @@ i18n.language = function () { throw new TypeError('Language code must be a string value'); } - if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) { + if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format `xx` or `xx-xx`'); } i18n.lang = args[0]; - // Check if language strings were added; otherwise, check the second argument or set to English as default if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; @@ -104,13 +91,6 @@ i18n.language = function () { return i18n.lang; }; -/** - * Translate a string in the language set up (or English by default) - * - * @param {string} message - * @param {number} pluralParam - * @return {string} - */ i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; @@ -122,57 +102,20 @@ i18n.t = function (message) { var language = i18n.language(); - /** - * Modify string using algorithm to detect plural forms. - * - * @private - * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings - * @param {String|String[]} input - String or array of strings to pick the plural form - * @param {Number} number - Number to determine the proper plural form - * @param {Number} form - Number of language family to apply plural form - * @return {String} - */ var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } - /** - * - * @return {Function[]} - * @private - */ var _pluralForms = function () { - return [ - // 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará, - // Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay, - // Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof - function () { + return [function () { return arguments.length <= 1 ? undefined : arguments[1]; - }, - - // 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish, - // Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans, - // Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri, - // Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa, - // Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch, - // Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal, - // Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento, - // Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala, - // Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino, - // Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 3: Latvian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { @@ -180,10 +123,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 4: Scottish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { @@ -193,10 +133,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 5: Romanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { @@ -204,10 +141,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 6: Lithuanian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -215,10 +149,7 @@ i18n.t = function (message) { } else { return [3]; } - }, - - // 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -226,10 +157,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 8: Slovak, Czech - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { @@ -237,10 +165,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 9: Polish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -248,10 +173,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 10: Slovenian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { @@ -261,10 +183,7 @@ i18n.t = function (message) { } else { return arguments.length <= 1 ? undefined : arguments[1]; } - }, - - // 11: Irish Gaelic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -276,10 +195,7 @@ i18n.t = function (message) { } else { return arguments.length <= 5 ? undefined : arguments[5]; } - }, - - // 12: Arabic - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -293,10 +209,7 @@ i18n.t = function (message) { } else { return arguments.length <= 6 ? undefined : arguments[6]; } - }, - - // 13: Maltese - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { @@ -306,10 +219,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 14: Macedonian - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { @@ -317,19 +227,9 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 15: Icelandic - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // New additions - - // 16: Kashubian - // In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules - // Breton is listed as #16 but in the Localization Guide it belongs to the group 2 - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { @@ -337,10 +237,7 @@ i18n.t = function (message) { } else { return arguments.length <= 3 ? undefined : arguments[3]; } - }, - - // 17: Welsh - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -350,15 +247,9 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 18: Javanese - function () { + }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; - }, - - // 19: Cornish - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { @@ -368,10 +259,7 @@ i18n.t = function (message) { } else { return arguments.length <= 4 ? undefined : arguments[4]; } - }, - - // 20: Mandinka - function () { + }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { @@ -382,11 +270,9 @@ i18n.t = function (message) { }]; }(); - // Perform plural form or return original text return _pluralForms[form].apply(null, [number].concat(input)); }; - // Fetch the localized version of the string if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -395,7 +281,6 @@ i18n.t = function (message) { } } - // Fallback to default language if requested uid is not translated if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { @@ -404,11 +289,8 @@ i18n.t = function (message) { } } - // As a last resort, use the requested uid, to mimic original behavior of i18n utils - // (in which uid was the english text) str = str || message; - // Replace token if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } @@ -421,7 +303,6 @@ i18n.t = function (message) { _mejs2.default.i18n = i18n; -// `i18n` compatibility workflow with WordPress if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } @@ -453,26 +334,13 @@ var _media = _dereq_(22); var _renderer = _dereq_(7); +var _constants = _dereq_(19); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * Media Core - * - * This class is the foundation to create/render different media formats. - * @class MediaElement - */ -var MediaElement = - -/** - * - * @param {String|Node} idOrNode - * @param {Object} options - * @param {Object[]} sources - * @returns {Element|*} - */ -function MediaElement(idOrNode, options, sources) { +var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); @@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) { sources = Array.isArray(sources) ? sources : null; t.defaults = { - /** - * List of the renderers to use - * @type {String[]} - */ renderers: [], - /** - * Name of MediaElement container - * @type {String} - */ + fakeNodeName: 'mediaelementwrapper', - /** - * The path where shims are located - * @type {String} - */ + pluginPath: 'build/', - /** - * Flag in `<object>` and `<embed>` to determine whether to use local or CDN - * Possible values: 'always' (CDN version) or 'sameDomain' (local files) - */ + shimScriptAccess: 'sameDomain', - /** - * If error happens, set up HTML message - * @type {String} - */ + customError: '' }; options = Object.assign(t.defaults, options); - // create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes) t.mediaElement = _document2.default.createElement(options.fakeNodeName); t.mediaElement.options = options; @@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) { id = id || 'mejs_' + Math.random().toString().slice(2); if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) { - // change id t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); - // to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set - // only if video/audio tags are detected var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); - if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) { + if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } - // add next to this one t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); - // insert this one inside t.mediaElement.appendChild(t.mediaElement.originalNode); - } else { - // TODO: where to put the node? - } + } else {} t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; - /** - * Determine whether the renderer was found or not - * - * @public - * @param {String} rendererName - * @param {Object[]} mediaFiles - * @return {Boolean} - */ + t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this; - // check for a match on the current renderer if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) { return true; } - // if existing renderer is not the right one, then hide it if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { @@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.renderer.hide(); } - // see if we have the renderer already created var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; @@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) { var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; - // find the desired renderer in the array of possible ones for (var i = 0, total = rendererArray.length; i < total; i++) { var index = rendererArray[i]; if (index === rendererName) { - - // create the renderer var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; @@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) { newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; - // store for later t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; @@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * Set the element dimensions based on selected renderer's setSize method - * - * @public - * @param {number} width - * @param {number} height - */ t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; - /** - * - * @param {Object[]} urlList - */ t.mediaElement.createErrorMessage = function (urlList) { urlList = Array.isArray(urlList) ? urlList : []; @@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) { var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { - - // wrapper functions var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); @@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement['set' + capName] = setFn; } }, - - // `src` is a property separated from the others since it carries the logic to set the proper renderer - // based on the media files detected - getSrc = function getSrc() { + getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { - var mediaFiles = []; - // clean up URLs if (typeof value === 'string') { mediaFiles.push({ src: value, @@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) { } } - // find a renderer and URL match var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; - // Ensure that the original gets the first source found if (!t.mediaElement.paused) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); @@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) { t.mediaElement.querySelector('.me_cannotplay').remove(); } - // did we find a renderer? if (renderInfo === null) { t.mediaElement.createErrorMessage(mediaFiles); event = (0, _general.createEvent)('error', t.mediaElement); @@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) { return; } - // turn on the renderer (this checks for the existing renderer already) t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles); if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) { @@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) { event.message = 'Error creating renderer'; t.mediaElement.dispatchEvent(event); t.mediaElement.createErrorMessage(mediaFiles); - return; } }, assignMethods = function assignMethods(methodName) { - // run the method on the current renderer t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) { }; }; - // Assign all methods/properties/events to fake node if renderer was found addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; @@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) { assignMethods(methods[_i]); } - // IE && iOS t.mediaElement.events = {}; - // start: fake events t.mediaElement.addEventListener = function (eventName, callback) { - // create or find the array of callbacks for this eventName t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; - // push the callback into the stack t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { - // no eventName means remove all listeners if (!eventName) { t.mediaElement.events = {}; return true; } - // see if we have any callbacks for this eventName var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } - // check for a specific callback if (!callback) { t.mediaElement.events[eventName] = []; return true; } - // remove the specific callback for (var _i2 = 0; _i2 < callbacks.length; _i2++) { if (callbacks[_i2] === callback) { t.mediaElement.events[eventName].splice(_i2, 1); @@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) { return false; }; - /** - * - * @param {Event} event - */ t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; @@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) { } }; + var processURL = function processURL(url, type) { + + if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + var _url = _window2.default.URL || _window2.default.webkitURL, + blobUrl = _url.createObjectURL(this.response); + t.mediaElement.originalNode.setAttribute('src', blobUrl); + return blobUrl; + } + return url; + }; + xhr.open('GET', url); + xhr.responseType = 'blob'; + xhr.send(); + } + + return url; + }; + var mediaFiles = void 0; if (sources !== null) { @@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { - case 'iframe': mediaFiles.push({ type: '', @@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) { }); break; - case 'audio': case 'video': var _sources = t.mediaElement.originalNode.childNodes.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); - // Consider if node contains the `src` and `type` attributes if (nodeSource) { - var node = t.mediaElement.originalNode; + var node = t.mediaElement.originalNode, + type = (0, _media.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ - type: (0, _media.formatType)(nodeSource, node.getAttribute('type')), - src: nodeSource + type: type, + src: processURL(nodeSource, type) }); } - // test <source> types to see if they are usable for (var _i4 = 0; _i4 < _sources; _i4++) { var n = t.mediaElement.originalNode.childNodes[_i4]; if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), - type = (0, _media.formatType)(src, n.getAttribute('type')); - mediaFiles.push({ type: type, src: src }); + _type = (0, _media.formatType)(src, n.getAttribute('type')); + mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } - // Set the best match based on renderers if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } @@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement; exports.default = MediaElement; -},{"2":2,"21":21,"22":22,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ +},{"19":19,"2":2,"21":21,"22":22,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Namespace var mejs = {}; -// version number -mejs.version = '4.1.0'; +mejs.version = '4.1.1'; -// Basic HTML5 settings mejs.html5media = { - /** - * @type {String[]} - */ - properties: [ - // GET/SET - 'volume', 'src', 'currentTime', 'muted', - - // GET only - 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', - - // OTHERS - 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], + properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], - /** - * @type {String[]} - */ + methods: ['load', 'play', 'pause', 'canPlayType'], - /** - * @type {String[]} - */ + events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'], - /** - * @type {String[]} - */ - mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg'] + + mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; @@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/** - * - * Class to manage renderer selection and addition. - * @class Renderer - */ var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); @@ -1014,18 +799,9 @@ var Renderer = function () { this.order = []; } - /** - * Register a new renderer. - * - * @param {Object} renderer - An object with all the rendered information (name REQUIRED) - * @method add - */ - - _createClass(Renderer, [{ key: 'add', value: function add(renderer) { - if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } @@ -1033,35 +809,20 @@ var Renderer = function () { this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } - - /** - * Iterate a list of renderers to determine which one should the player use. - * - * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}] - * @param {?String[]} renderers - Optional list of pre-selected renderers - * @return {?Object} The renderer's name and source selected - * @method select - */ - }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; - // If renderers are not set, set a default order: - // 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV) - // 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG) - // 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.) if (!renderersLength) { - var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/], + var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { - if (renderer.match(rendererIndicator[i]) !== null) { + if (rendererIndicator[i].test(renderer)) { return i; } } @@ -1091,13 +852,9 @@ var Renderer = function () { return null; } - - // Setters/getters - }, { key: 'order', set: function set(order) { - if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } @@ -1110,7 +867,6 @@ var Renderer = function () { }, { key: 'renderers', set: function set(renderers) { - if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } @@ -1160,68 +916,26 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Fullscreen button - * - * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it - * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {Boolean} - */ usePluginFullScreen: true, - /** - * @type {?String} - */ + fullscreenText: null }); Object.assign(_player2.default.prototype, { - - /** - * @type {Boolean} - */ isFullScreen: false, - /** - * @type {Boolean} - */ + isNativeFullScreen: false, - /** - * @type {Boolean} - */ + isInIframe: false, - /** - * @type {Boolean} - */ + isPluginClickThroughCreated: false, - /** - * Possible modes - * (1) 'native-native' HTML5 video + browser fullscreen (IE10+, etc.) - * (2) 'plugin-native' plugin video + browser fullscreen (fails in some versions of Firefox) - * (3) 'fullwindow' Full window (retains all UI) - * - * @type {String} - */ + fullscreenMode: '', - /** - * - */ + containerSizeTimeout: null, - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildfullscreen: function buildfullscreen(player) { - if (!player.isVideo) { return; } @@ -1239,7 +953,6 @@ Object.assign(_player2.default.prototype, { t.addControlElement(fullscreenBtn, 'fullscreen'); fullscreenBtn.addEventListener('click', function () { - // toggle fullscreen var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen; if (isFullScreen) { @@ -1261,26 +974,16 @@ Object.assign(_player2.default.prototype, { t.normalHeight = 0; t.normalWidth = 0; - // setup native fullscreen event if (Features.HAS_TRUE_NATIVE_FULLSCREEN) { - - // - /** - * Detect any changes on fullscreen - * - * Chrome doesn't always fire this in an `<iframe>` - * @private - */ var fullscreenChanged = function fullscreenChanged() { if (player.isFullScreen) { if (Features.isFullScreen()) { player.isNativeFullScreen = true; - // reset the controls once we are fully in full screen + player.setControlsSize(); } else { player.isNativeFullScreen = false; - // when a user presses ESC - // make sure to put the player back into place + player.exitFullScreen(); } } @@ -1289,17 +992,9 @@ Object.assign(_player2.default.prototype, { player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged); } }, - - - /** - * Detect the type of fullscreen based on browser's capabilities - * - * @return {String} - */ detectFullscreenMode: function detectFullscreenMode() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); var mode = ''; @@ -1316,26 +1011,12 @@ Object.assign(_player2.default.prototype, { t.fullscreenMode = mode; return mode; }, - - - /** - * Feature destructor. - * - * Always has to be prefixed with `clean` and the name that was used in features list - * @param {MediaElementPlayer} player - */ cleanfullscreen: function cleanfullscreen(player) { player.exitFullScreen(); }, - - - /** - * - */ enterFullScreen: function enterFullScreen() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null, + isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName), containerStyles = getComputedStyle(t.container); if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN) { @@ -1347,52 +1028,38 @@ Object.assign(_player2.default.prototype, { return; } - // set it to not show scroll bars so 100% will work (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen'); - // store sizing t.normalHeight = parseFloat(containerStyles.height); t.normalWidth = parseFloat(containerStyles.width); - // attempt to do true fullscreen if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { - Features.requestFullScreen(t.container); if (t.isInIframe) { - // sometimes exiting from fullscreen doesn't work - // notably in Chrome <iframe>. Fixed in version 17 setTimeout(function checkFullscreen() { if (t.isNativeFullScreen) { var percentErrorMargin = 0.002, - // 0.2% - windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, + windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, screenWidth = screen.width, absDiff = Math.abs(screenWidth - windowWidth), marginError = screenWidth * percentErrorMargin; - // check if the video is suddenly not really fullscreen if (absDiff > marginError) { - // manually exit t.exitFullScreen(); } else { - // test again setTimeout(checkFullscreen, 500); } } }, 1000); } - } else if (t.fullscreeMode === 'fullwindow') {} - // move into position + } - // make full size t.container.style.width = '100%'; t.container.style.height = '100%'; - // Only needed for safari 5.1 native full screen, can cause display issues elsewhere - // Actually, it seems to be needed for IE8, too t.containerSizeTimeout = setTimeout(function () { t.container.style.width = '100%'; t.container.style.height = '100%'; @@ -1440,25 +1107,16 @@ Object.assign(_player2.default.prototype, { var event = (0, _general.createEvent)('enteredfullscreen', t.container); t.container.dispatchEvent(event); }, - - - /** - * - */ exitFullScreen: function exitFullScreen() { - var t = this, - isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); - // Prevent container from attempting to stretch a second time clearTimeout(t.containerSizeTimeout); - // come out of native fullscreen if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) { Features.cancelFullScreen(); } - // restore scroll bars to document (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen'); @@ -1530,38 +1188,14 @@ var _dom = _dereq_(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Play/Pause button - * - * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state - * between paused and playing. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {?String} - */ playText: null, - /** - * @type {?String} - */ + pauseText: null }); Object.assign(_player2.default.prototype, { - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - * @public - */ buildplaypause: function buildplaypause(player, controls, layers, media) { - var t = this, op = t.options, playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'), @@ -1581,10 +1215,6 @@ Object.assign(_player2.default.prototype, { var playBtn = play.querySelector('button'); t.addControlElement(play, 'playpause'); - /** - * @private - * @param {String} which - token to determine new state of button - */ function togglePlayPause(which) { if ('play' === which) { (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); @@ -1605,8 +1235,7 @@ Object.assign(_player2.default.prototype, { togglePlayPause('pse'); media.addEventListener('loadedmetadata', function () { - // `loadedmetadata` in Flash is executed simultaneously with `play`, so avoid it - if (media.rendererName.match(/flash/) === null) { + if (media.rendererName.indexOf('flash') === -1) { togglePlayPause('pse'); } }); @@ -1620,7 +1249,6 @@ Object.assign(_player2.default.prototype, { togglePlayPause('pse'); }); media.addEventListener('ended', function () { - if (!player.options.loop) { (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); @@ -1635,8 +1263,6 @@ Object.assign(_player2.default.prototype, { },{"16":16,"2":2,"20":20,"21":21,"4":4}],10:[function(_dereq_,module,exports){ 'use strict'; -// import window from 'global/window'; - var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); @@ -1657,38 +1283,13 @@ var _dom = _dereq_(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Progress/loaded bar - * - * This feature creates a progress bar with a slider in the control bar, and updates it based on native events. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * Enable tooltip that shows time in progress bar - * @type {Boolean} - */ enableProgressTooltip: true, - /** - * Enable smooth behavior when hovering progress bar - * @type {Boolean} - */ useSmoothHover: true }); Object.assign(_player2.default.prototype, { - - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildprogress: function buildprogress(player, controls, layers, media) { var lastKeyPressTime = 0, @@ -1697,7 +1298,7 @@ Object.assign(_player2.default.prototype, { var t = this, autoRewindInitial = player.options.autoRewind, - tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : "", + tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '', rail = _document2.default.createElement('div'); rail.className = t.options.classPrefix + 'time-rail'; @@ -1726,13 +1327,7 @@ Object.assign(_player2.default.prototype, { element.style.OTransform = value; }; - /** - * - * @private - * @param {Event} e - */ var handleMouseMove = function handleMouseMove(e) { - var totalStyles = getComputedStyle(t.total), offsetStyles = (0, _dom.offset)(t.total), width = parseFloat(totalStyles.width), @@ -1763,11 +1358,9 @@ Object.assign(_player2.default.prototype, { pos = 0, x = void 0; - // mouse or touch position relative to the object if (e.originalEvent && e.originalEvent.changedTouches) { x = e.originalEvent.changedTouches[0].pageX; } else if (e.changedTouches) { - // for Zepto x = e.changedTouches[0].pageX; } else { x = e.pageX; @@ -1784,13 +1377,11 @@ Object.assign(_player2.default.prototype, { percentage = pos / width; t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration; - // fake seek to where the mouse is if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) { t.setCurrentRailHandle(t.newTime); t.updateCurrent(t.newTime); } - // position floating time box if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) { if (pos < 0) { pos = 0; @@ -1817,15 +1408,7 @@ Object.assign(_player2.default.prototype, { } } }, - - /** - * Update elements in progress bar for accessibility purposes only when player is paused. - * - * This is to avoid attempts to repeat the time over and over again when media is playing. - * @private - */ - updateSlider = function updateSlider() { - + updateSlider = function updateSlider() { var seconds = media.currentTime, timeSliderText = _i18n2.default.t('mejs.time-slider'), time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength), @@ -1848,19 +1431,12 @@ Object.assign(_player2.default.prototype, { t.slider.removeAttribute('aria-valuetext'); } }, - - /** - * - * @private - */ - restartPlayer = function restartPlayer() { - var now = new Date(); - if (now - lastKeyPressTime >= 1000) { + restartPlayer = function restartPlayer() { + if (new Date() - lastKeyPressTime >= 1000) { media.play(); } }, handleMouseup = function handleMouseup() { - if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) { media.setCurrentTime(t.newTime); player.setCurrentRail(); @@ -1872,7 +1448,6 @@ Object.assign(_player2.default.prototype, { t.forcedHandlePause = false; }; - // Events t.slider.addEventListener('focus', function () { player.options.autoRewind = false; }); @@ -1880,7 +1455,6 @@ Object.assign(_player2.default.prototype, { player.options.autoRewind = autoRewindInitial; }); t.slider.addEventListener('keydown', function (e) { - if (new Date() - lastKeyPressTime >= 1000) { startedPaused = media.paused; } @@ -1895,30 +1469,25 @@ Object.assign(_player2.default.prototype, { var seekTime = media.currentTime; switch (keyCode) { - case 37: // left + case 37: case 40: - // Down if (media.duration !== Infinity) { seekTime -= seekBackward; } break; - case 39: // Right + case 39: case 38: - // Up if (media.duration !== Infinity) { seekTime += seekForward; } break; case 36: - // Home seekTime = 0; break; case 35: - // end seekTime = duration; break; case 32: - // space if (!_constants.IS_FIREFOX) { if (media.paused) { media.play(); @@ -1928,7 +1497,6 @@ Object.assign(_player2.default.prototype, { } return; case 13: - // enter if (media.paused) { media.play(); } else { @@ -1958,7 +1526,6 @@ Object.assign(_player2.default.prototype, { var events = ['mousedown', 'touchstart']; - // Required to manipulate mouse movements that require drag 'n' drop properly t.slider.addEventListener('dragstart', function () { return false; }); @@ -1967,9 +1534,7 @@ Object.assign(_player2.default.prototype, { t.slider.addEventListener(events[i], function (e) { t.forcedHandlePause = false; if (media.duration !== Infinity) { - // only handle left clicks or touch if (e.which === 1 || e.which === 0) { - if (!media.paused) { t.media.pause(); t.forcedHandlePause = true; @@ -2029,9 +1594,6 @@ Object.assign(_player2.default.prototype, { } }); - // loading - // If media is does not have a finite duration, remove progress bar interaction - // and indicate that is a live broadcast media.addEventListener('progress', function (e) { var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); if (media.duration !== Infinity) { @@ -2052,7 +1614,6 @@ Object.assign(_player2.default.prototype, { } }); - // current time media.addEventListener('timeupdate', function (e) { var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); if (media.duration !== Infinity) { @@ -2084,79 +1645,41 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Calculate the progress on the media and update progress bar's width - * - * @param {Event} e - */ setProgressRail: function setProgressRail(e) { - - var percent = null; - var t = this, target = e !== undefined ? e.target : t.media; - // newest HTML5 spec has buffered array (FF4, Webkit) + var percent = null; + if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) { - // account for a real array with multiple values - always read the end of the last buffer percent = target.buffered.end(target.buffered.length - 1) / target.duration; - } - // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end() - // to be anything other than 0. If the byte count is available we use this instead. - // Browsers that support the else if do not seem to have the bufferedBytes value and - // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8. - else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { + } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { percent = target.bufferedBytes / target.bytesTotal; - } - // Firefox 3 with an Ogg file seems to go this way - else if (e && e.lengthComputable && e.total !== 0) { + } else if (e && e.lengthComputable && e.total !== 0) { percent = e.loaded / e.total; } - // finally update the progress bar if (percent !== null) { percent = Math.min(1, Math.max(0, percent)); - // update loaded bar + if (t.loaded && t.total) { t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')'); } } }, - - /** - * Update the slider's width depending on the time assigned - * - * @param {Number} fakeTime - */ setCurrentRailHandle: function setCurrentRailHandle(fakeTime) { var t = this; t.setCurrentRailMain(t, fakeTime); }, - - /** - * Update the slider's width depending on the current time - * - */ setCurrentRail: function setCurrentRail() { var t = this; t.setCurrentRailMain(t); }, - - /** - * Method that handles the calculation of the width of the rail. - * - * @param {MediaElementPlayer} t - * @param {?Number} fakeTime - */ setCurrentRailMain: function setCurrentRailMain(t, fakeTime) { if (t.media.currentTime !== undefined && t.media.duration) { var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime; - // update bar and handle if (t.total && t.handle) { - var tW = parseFloat(getComputedStyle(t.total).width); var newWidth = Math.round(tW * nTime / t.media.duration), @@ -2203,36 +1726,13 @@ var _dom = _dereq_(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Current/duration times - * - * This feature creates/updates the duration and progress times in the control bar, based on native events. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * The initial duration - * @type {Number} - */ duration: 0, - /** - * @type {String} - */ + timeAndDurationSeparator: '<span> | </span>' }); Object.assign(_player2.default.prototype, { - - /** - * Current time constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildcurrent: function buildcurrent(player, controls, layers, media) { var t = this, time = _document2.default.createElement('div'); @@ -2250,27 +1750,13 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Duration time constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildduration: function buildduration(player, controls, layers, media) { - var t = this, currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime'); if (currTime) { controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>'); } else { - - // add class to current time if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) { (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container'); } @@ -2288,12 +1774,6 @@ Object.assign(_player2.default.prototype, { } }); }, - - - /** - * Update the current time and output it in format 00:00 - * - */ updateCurrent: function updateCurrent() { var t = this; @@ -2307,12 +1787,6 @@ Object.assign(_player2.default.prototype, { t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); } }, - - - /** - * Update the duration time and output it in format 00:00 - * - */ updateDuration: function updateDuration() { var t = this; @@ -2328,7 +1802,6 @@ Object.assign(_player2.default.prototype, { var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); - // Toggle long-video class if time code is >5 digits (MM:SS) if (timecode.length > 5) { (0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video'); } @@ -2366,68 +1839,25 @@ var _dom = _dereq_(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Closed Captions (CC) button - * - * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media - * with a certain language (if available), toggle captions, etc. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.) - * If there are multiple tracks for one language, the last track node found is activated - * @see https://www.loc.gov/standards/iso639-2/php/code_list.php - * @type {String} - */ startLanguage: '', - /** - * @type {?String} - */ + tracksText: null, - /** - * @type {?String} - */ + chaptersText: null, - /** - * Avoid to screen reader speak captions over an audio track. - * - * @type {Boolean} - */ + tracksAriaLive: false, - /** - * Remove the [cc] button when no track nodes are present - * @type {Boolean} - */ + hideCaptionsButtonWhenEmpty: true, - /** - * Change captions to pop-up if true and only one track node is found - * @type {Boolean} - */ + toggleCaptionsButtonWhenOnlyOne: false, - /** - * @type {String} - */ + slidesSelector: '' }); Object.assign(_player2.default.prototype, { - - /** - * @type {Boolean} - */ hasChapters: false, - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - */ buildtracks: function buildtracks(player, controls, layers, media) { if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) { @@ -2440,7 +1870,6 @@ Object.assign(_player2.default.prototype, { chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'), total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length; - // If browser will do native captions, prefer mejs captions, loop through tracks and hide if (t.domNode.textTracks) { for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) { t.domNode.textTracks[i].mode = 'hidden'; @@ -2484,7 +1913,6 @@ Object.assign(_player2.default.prototype, { player.selectedTrack = null; player.isLoadingTrack = false; - // add to list for (var _i2 = 0; _i2 < total; _i2++) { var _kind = player.tracks[_i2].kind; if (_kind === 'subtitles' || _kind === 'captions') { @@ -2492,15 +1920,12 @@ Object.assign(_player2.default.prototype, { } } - // start loading tracks player.loadNextTrack(); var inEvents = ['mouseenter', 'focusin'], outEvents = ['mouseleave', 'focusout']; - // if only one language then just make the button a toggle if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) { - // click player.captionsButton.addEventListener('click', function () { var trackId = 'none'; if (player.selectedTrack === null) { @@ -2511,7 +1936,7 @@ Object.assign(_player2.default.prototype, { } else { var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'), captions = player.captionsButton.querySelectorAll('input[type=radio]'); - // hover or keyboard focus + for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) { player.captionsButton.addEventListener(inEvents[_i3], function () { (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); @@ -2524,12 +1949,8 @@ Object.assign(_player2.default.prototype, { }); } - // handle clicks to the language radio buttons for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) { captions[_i5].addEventListener('click', function () { - // value is trackId, same as the actual id, and we're using it here - // because the "none" checkbox doesn't have a trackId - // to use, but we want to know when "none" is clicked player.setTrack(this.value); }); } @@ -2544,7 +1965,6 @@ Object.assign(_player2.default.prototype, { }); } - //Allow up/down arrow to change the selected radio without changing the volume. player.captionsButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); @@ -2564,21 +1984,17 @@ Object.assign(_player2.default.prototype, { }); } - //Allow up/down arrow to change the selected radio without changing the volume. player.chaptersButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); if (!player.options.alwaysShowControls) { - // move with controls player.container.addEventListener('controlsshown', function () { - // push captions above controls (0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); }); player.container.addEventListener('controlshidden', function () { if (!media.paused) { - // move back to normal place (0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); } }); @@ -2598,16 +2014,7 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * Feature destructor. - * - * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list - * @param {MediaElementPlayer} player - */ cleartracks: function cleartracks(player) { - if (player) { if (player.captions) { player.captions.remove(); @@ -2636,7 +2043,6 @@ Object.assign(_player2.default.prototype, { tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles, total = tracktags.length; - // store for use by plugins t.tracks = []; for (var i = 0; i < total; i++) { var track = tracktags[i], @@ -2653,12 +2059,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * - * @param {String} trackId, or "none" to disable captions - */ setTrack: function setTrack(trackId) { var t = this, @@ -2704,11 +2104,6 @@ Object.assign(_player2.default.prototype, { event.detail.caption = t.selectedTrack; t.media.dispatchEvent(event); }, - - - /** - * - */ loadNextTrack: function loadNextTrack() { var t = this; @@ -2717,37 +2112,25 @@ Object.assign(_player2.default.prototype, { t.isLoadingTrack = true; t.loadTrack(t.trackToLoad); } else { - // add done? t.isLoadingTrack = false; t.checkForTracks(); } }, - - - /** - * - * @param index - */ loadTrack: function loadTrack(index) { var t = this, track = t.tracks[index]; if (track !== undefined && (track.src !== undefined || track.src !== "")) { (0, _dom.ajax)(track.src, 'text', function (d) { - - // parse the loaded file track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d); track.isLoaded = true; - t.enableTrackButton(track); t.loadNextTrack(); if (track.kind === 'slides') { t.setupSlides(track); - } - // Load by default the first track with `chapters` kind - else if (track.kind === 'chapters' && !t.hasChapters) { + } else if (track.kind === 'chapters' && !t.hasChapters) { t.drawChapters(track); t.hasChapters = true; } @@ -2757,12 +2140,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - - /** - * - * @param {String} track - The language code - */ enableTrackButton: function enableTrackButton(track) { var t = this, lang = track.srclang, @@ -2785,23 +2162,14 @@ Object.assign(_player2.default.prototype, { targetSiblings[i].innerHTML = label; } - // auto select if (t.options.startLanguage === lang) { target.checked = true; var event = (0, _general.createEvent)('click', target); target.dispatchEvent(event); } }, - - - /** - * - * @param {String} trackId - */ removeTrackButton: function removeTrackButton(trackId) { - var element = _document2.default.getElementById('' + trackId); - if (element) { var button = element.closest('li'); if (button) { @@ -2809,36 +2177,19 @@ Object.assign(_player2.default.prototype, { } } }, - - - /** - * - * @param {String} trackId - * @param {String} lang - The language code - * @param {String} label - */ addTrackButton: function addTrackButton(trackId, lang, label) { var t = this; if (label === '') { label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; } - // trackId is used in the value, too, because the "none" - // caption option doesn't have a trackId but we need to be able - // to set it, too - t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label">' + label + ' (loading)</label>') + '</li>'; + t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>'; }, - - - /** - * - */ checkForTracks: function checkForTracks() { var t = this; var hasSubtitles = false; - // check if any subtitles if (t.options.hideCaptionsButtonWhenEmpty) { for (var i = 0, total = t.tracks.length; i < total; i++) { var kind = t.tracks[i].kind; @@ -2852,13 +2203,7 @@ Object.assign(_player2.default.prototype, { t.setControlsSize(); } }, - - - /** - * - */ displayCaptions: function displayCaptions() { - if (this.tracks === undefined) { return; } @@ -2866,19 +2211,15 @@ Object.assign(_player2.default.prototype, { var t = this, track = t.selectedTrack, sanitize = function sanitize(html) { - var div = _document2.default.createElement('div'); div.innerHTML = html; - // Remove all `<script>` tags first var scripts = div.getElementsByTagName('script'); var i = scripts.length; while (i--) { scripts[i].remove(); } - // Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute - // (`onerror`, `onclick`, etc.) var allElements = div.getElementsByTagName('*'); for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) { var attributesObj = allElements[_i12].attributes, @@ -2898,38 +2239,23 @@ Object.assign(_player2.default.prototype, { if (track !== null && track.isLoaded) { var i = t.searchTrackPosition(track.entries, t.media.currentTime); if (i > -1) { - // Set the line before the timecode as a class so the cue can be targeted if needed t.captionsText.innerHTML = sanitize(track.entries[i].text); t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || ''); t.captions.style.display = ''; t.captions.style.height = '0px'; - return; // exit out if one is visible; + return; } - t.captions.style.display = 'none'; } else { t.captions.style.display = 'none'; } }, - - - /** - * - * @param {HTMLElement} track - */ setupSlides: function setupSlides(track) { var t = this; - t.slides = track; t.slides.entries.imgs = [t.slides.entries.length]; t.showSlide(0); }, - - - /** - * - * @param {Number} index - */ showSlide: function showSlide(index) { var _this = this; @@ -2944,7 +2270,6 @@ Object.assign(_player2.default.prototype, { var img = t.slides.entries[index].imgs; if (img === undefined || img.fadeIn === undefined) { - var image = _document2.default.createElement('img'); image.src = url; image.addEventListener('load', function () { @@ -2970,11 +2295,6 @@ Object.assign(_player2.default.prototype, { } } }, - - - /** - * - */ displaySlides: function displaySlides() { var t = this; @@ -2987,15 +2307,8 @@ Object.assign(_player2.default.prototype, { if (i > -1) { t.showSlide(i); - return; // exit out if one is visible; } }, - - - /** - * - * @param {Object} chapters - */ drawChapters: function drawChapters(chapters) { var t = this, total = chapters.entries.length; @@ -3007,7 +2320,7 @@ Object.assign(_player2.default.prototype, { t.chaptersButton.querySelector('ul').innerHTML = ''; for (var i = 0; i < total; i++) { - t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>'; + t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>'; } var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'), @@ -3049,14 +2362,6 @@ Object.assign(_player2.default.prototype, { }); } }, - - /** - * Perform binary search to look for proper track index - * - * @param {Object[]} tracks - * @param {Number} currentTime - * @return {Number} - */ searchTrackPosition: function searchTrackPosition(tracks, currentTime) { var lo = 0, hi = tracks.length - 1, @@ -3082,11 +2387,6 @@ Object.assign(_player2.default.prototype, { } }); -/** - * Map all possible languages with their respective code - * - * @constructor - */ _mejs2.default.language = { codes: { af: 'mejs.afrikaans', @@ -3147,35 +2447,10 @@ _mejs2.default.language = { } }; -/* - Parses WebVTT format which should be formatted as - ================================ - WEBVTT - - 1 - 00:00:01,1 --> 00:00:05,000 - A line of text - - 2 - 00:01:15,1 --> 00:02:05,000 - A second line of text - - =============================== - - Adapted from: http://www.delphiki.com/html5/playr - */ _mejs2.default.TrackFormatParser = { webvtt: { - /** - * @type {String} - */ pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, - /** - * - * @param {String} trackText - * @returns {{text: Array, times: Array}} - */ parse: function parse(trackText) { var lines = trackText.split(/\r?\n/), entries = []; @@ -3192,7 +2467,7 @@ _mejs2.default.TrackFormatParser = { identifier = lines[i - 1]; } i++; - // grab all the (possibly multi-line) text that follows + text = lines[i]; i++; while (lines[i] !== '' && i < lines.length) { @@ -3213,13 +2488,8 @@ _mejs2.default.TrackFormatParser = { return entries; } }, - // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420 + dfxp: { - /** - * - * @param {String} trackText - * @returns {{text: Array, times: Array}} - */ parse: function parse(trackText) { trackText = $(trackText).filter('tt'); var container = trackText.firstChild, @@ -3305,56 +2575,22 @@ var _dom = _dereq_(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Volume button - * - * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its - * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc. - */ - -// Feature configuration Object.assign(_player.config, { - /** - * @type {?String} - */ muteText: null, - /** - * @type {?String} - */ + unmuteText: null, - /** - * @type {?String} - */ + allyVolumeControlText: null, - /** - * @type {Boolean} - */ + hideVolumeOnTouchDevices: true, - /** - * @type {String} - */ + audioVolume: 'horizontal', - /** - * @type {String} - */ + videoVolume: 'vertical' }); Object.assign(_player2.default.prototype, { - - /** - * Feature constructor. - * - * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list - * @param {MediaElementPlayer} player - * @param {$} controls - * @param {$} layers - * @param {HTMLElement} media - * @public - */ buildvolume: function buildvolume(player, controls, layers, media) { - - // Android and iOS don't support volume controls if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) { return; } @@ -3367,55 +2603,55 @@ Object.assign(_player2.default.prototype, { mute = _document2.default.createElement('div'); mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute'; - mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider">') + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; + mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; t.addControlElement(mute, 'volume'); - // horizontal version if (mode === 'horizontal') { var anchor = _document2.default.createElement('a'); anchor.className = t.options.classPrefix + 'horizontal-volume-slider'; anchor.href = 'javascript:void(0);'; + anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); + anchor.setAttribute('aria-valuemin', 0); + anchor.setAttribute('aria-valuemax', 100); + anchor.setAttribute('role', 'slider'); anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>'; mute.parentNode.insertBefore(anchor, mute.nextSibling); } + var mouseIsDown = false, + mouseIsOver = false, + updateVolumeSlider = function updateVolumeSlider() { + var volume = Math.floor(media.volume * 100); + volumeSlider.setAttribute('aria-valuenow', volume); + volumeSlider.setAttribute('aria-valuetext', volume + '%'); + }; + var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'), volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'), volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'), volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'), - button = mute.firstElementChild, - - - /** - * @private - * @param {Number} volume - */ - positionVolumeHandle = function positionVolumeHandle(volume) { - - // correct to 0-1 + positionVolumeHandle = function positionVolumeHandle(volume) { volume = Math.max(0, volume); volume = Math.min(volume, 1); - // adjust mute button style if (volume === 0) { (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); - var _button = mute.firstElementChild; - _button.setAttribute('title', unmuteText); - _button.setAttribute('aria-label', unmuteText); + var button = mute.firstElementChild; + button.setAttribute('title', unmuteText); + button.setAttribute('aria-label', unmuteText); } else { (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); - var _button2 = mute.firstElementChild; - _button2.setAttribute('title', muteText); - _button2.setAttribute('aria-label', muteText); + var _button = mute.firstElementChild; + _button.setAttribute('title', muteText); + _button.setAttribute('aria-label', muteText); } var volumePercentage = volume * 100 + '%', volumeStyles = getComputedStyle(volumeHandle); - // position slider if (mode === 'vertical') { volumeCurrent.style.bottom = 0; volumeCurrent.style.height = volumePercentage; @@ -3428,26 +2664,18 @@ Object.assign(_player2.default.prototype, { volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px'; } }, - - /** - * @private - */ - handleVolumeMove = function handleVolumeMove(e) { - + handleVolumeMove = function handleVolumeMove(e) { var totalOffset = (0, _dom.offset)(volumeTotal), volumeStyles = getComputedStyle(volumeTotal); var volume = null; - // calculate the new volume based on the most recent position if (mode === 'vertical') { - var railHeight = parseFloat(volumeStyles.height), newY = e.pageY - totalOffset.top; volume = (railHeight - newY) / railHeight; - // the controls just hide themselves (usually when mouse moves too far up) if (totalOffset.top === 0 || totalOffset.left === 0) { return; } @@ -3458,14 +2686,11 @@ Object.assign(_player2.default.prototype, { volume = newX / railWidth; } - // ensure the volume isn't outside 0-1 volume = Math.max(0, volume); volume = Math.min(volume, 1); - // position the slider and handle positionVolumeHandle(volume); - // set the media object (this will trigger the `volumechanged` event) if (volume === 0) { media.setMuted(true); } else { @@ -3489,6 +2714,12 @@ Object.assign(_player2.default.prototype, { volumeSlider.style.display = 'block'; mouseIsOver = true; }); + + mute.addEventListener('focusout', function (e) { + if (!e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider') && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); mute.addEventListener('mouseleave', function () { mouseIsOver = false; if (!mouseIsDown && mode === 'vertical') { @@ -3497,22 +2728,17 @@ Object.assign(_player2.default.prototype, { }); mute.addEventListener('focusout', function () { mouseIsOver = false; - if (!mouseIsDown && mode === 'vertical') { - volumeSlider.style.display = 'none'; - } }); mute.addEventListener('keydown', function (e) { - if (t.options.keyActions.length) { var keyCode = e.which || e.keyCode || 0, volume = media.volume; + switch (keyCode) { case 38: - // Up volume = Math.min(volume + 0.1, 1); break; case 40: - // Down volume = Math.max(0, volume - 0.1); break; default: @@ -3527,26 +2753,12 @@ Object.assign(_player2.default.prototype, { e.stopPropagation(); } }); + mute.querySelector('button').addEventListener('click', function () { + media.setMuted(!media.muted); + var event = (0, _general.createEvent)('volumechange', media); + media.dispatchEvent(event); + }); - var mouseIsDown = false, - mouseIsOver = false, - - - /** - * @private - */ - updateVolumeSlider = function updateVolumeSlider() { - var volume = Math.floor(media.volume * 100); - volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); - volumeSlider.setAttribute('aria-valuemin', 0); - volumeSlider.setAttribute('aria-valuemax', 100); - volumeSlider.setAttribute('aria-valuenow', volume); - volumeSlider.setAttribute('aria-valuetext', volume + '%'); - volumeSlider.setAttribute('role', 'slider'); - volumeSlider.tabIndex = -1; - }; - - // Events volumeSlider.addEventListener('dragstart', function () { return false; }); @@ -3554,6 +2766,16 @@ Object.assign(_player2.default.prototype, { volumeSlider.addEventListener('mouseover', function () { mouseIsOver = true; }); + volumeSlider.addEventListener('focusin', function () { + volumeSlider.style.display = 'block'; + mouseIsOver = true; + }); + volumeSlider.addEventListener('focusout', function () { + mouseIsOver = false; + if (!mouseIsDown && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); volumeSlider.addEventListener('mousedown', function (e) { handleVolumeMove(e); t.globalBind('mousemove.vol', function (event) { @@ -3571,29 +2793,10 @@ Object.assign(_player2.default.prototype, { } }); mouseIsDown = true; - e.preventDefault(); e.stopPropagation(); }); - // MUTE button - button.addEventListener('click', function () { - media.setMuted(!media.muted); - var event = (0, _general.createEvent)('volumechange', media); - media.dispatchEvent(event); - }); - button.addEventListener('focus', function () { - if (mode === 'vertical') { - volumeSlider.style.display = 'block'; - } - }); - button.addEventListener('blur', function () { - if (mode === 'vertical') { - volumeSlider.style.display = 'none'; - } - }); - - // listen for volume change events from other sources media.addEventListener('volumechange', function (e) { if (!mouseIsDown) { if (media.muted) { @@ -3609,17 +2812,11 @@ Object.assign(_player2.default.prototype, { updateVolumeSlider(e); }); - // mutes the media and sets the volume icon muted if the initial volume is set to 0 if (player.options.startVolume === 0) { media.setMuted(true); } - // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements - var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null; - - if (isNative) { - media.setVolume(player.options.startVolume); - } + media.setVolume(player.options.startVolume); t.container.addEventListener('controlsresize', function () { if (media.muted) { @@ -3638,53 +2835,33 @@ Object.assign(_player2.default.prototype, { },{"16":16,"19":19,"2":2,"20":20,"21":21,"4":4}],14:[function(_dereq_,module,exports){ 'use strict'; -/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js - */ - Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { "mejs.plural-form": 1, - // core/mediaelement.js "mejs.download-file": "Download File", - // renderers/flash.js "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", - // features/fullscreen.js "mejs.fullscreen": "Fullscreen", - // features/playpause.js "mejs.play": "Play", "mejs.pause": "Pause", - // features/progress.js "mejs.time-slider": "Time Slider", "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", "mejs.live-broadcast": "Live Broadcast", - // features/volume.js "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", "mejs.unmute": "Unmute", "mejs.mute": "Mute", "mejs.volume-slider": "Volume Slider", - // core/player.js "mejs.video-player": "Video Player", "mejs.audio-player": "Audio Player", - // features/tracks.js "mejs.captions-subtitles": "Captions/Subtitles", "mejs.captions-chapters": "Chapters", "mejs.none": "None", @@ -3820,109 +2997,91 @@ _mejs2.default.mepIndex = 0; _mejs2.default.players = {}; -// default player values var config = exports.config = { - // url to poster (to fix iOS 3.x) poster: '', - // When the video is ended, show the poster. + showPosterWhenEnded: false, - // When the video is paused, show the poster. + showPosterWhenPaused: false, - // Default if the <video width> is not specified + defaultVideoWidth: 480, - // Default if the <video height> is not specified + defaultVideoHeight: 270, - // If set, overrides <video width> + videoWidth: -1, - // If set, overrides <video height> + videoHeight: -1, - // Default if the user doesn't specify + defaultAudioWidth: 400, - // Default if the user doesn't specify + defaultAudioHeight: 40, - // Default amount to move back when back key is pressed + defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) { return media.duration * 0.05; }, - // Default amount to move forward when forward key is pressed + defaultSeekForwardInterval: function defaultSeekForwardInterval(media) { return media.duration * 0.05; }, - // Set dimensions via JS instead of CSS + setDimensions: true, - // Width of audio player + audioWidth: -1, - // Height of audio player + audioHeight: -1, - // Initial volume when the player starts (overridden by user cookie) + startVolume: 0.8, - // Useful for <audio> player loops + loop: false, - // Rewind to beginning when media ends + autoRewind: true, - // Resize to media dimensions + enableAutosize: true, - /* - * Time format to use. Default: 'mm:ss' - * Supported units: - * h: hour - * m: minute - * s: second - * f: frame count - * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits. - * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible. - * - * Example to display 75 seconds: - * Format 'mm:ss': 01:15 - * Format 'm:ss': 1:15 - * Format 'm:s': 1:15 - */ + timeFormat: '', - // Force the hour marker (##:00:00) + alwaysShowHours: false, - // Show framecount in timecode (##:00:00:00) + showTimecodeFrameCount: false, - // Used when showTimecodeFrameCount is set to true + framesPerSecond: 25, - // Hide controls when playing and mouse is not over the video + alwaysShowControls: false, - // Display the video control when media is loading + hideVideoControlsOnLoad: false, - // Display the video controls when media is paused + hideVideoControlsOnPause: false, - // Enable click video element to toggle play/pause + clickToPlayPause: true, - // Time in ms to hide controls + controlsTimeoutDefault: 1500, - // Time in ms to trigger the timer when mouse moves + controlsTimeoutMouseEnter: 2500, - // Time in ms to trigger the timer when mouse leaves + controlsTimeoutMouseLeave: 1000, - // Force iPad's native controls + iPadUseNativeControls: false, - // Force iPhone's native controls + iPhoneUseNativeControls: false, - // Force Android's native controls + AndroidUseNativeControls: false, - // Features to show + features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'], - // Only for dynamic + isVideo: true, - // Stretching modes (auto, fill, responsive, none) + stretching: 'auto', - // Prefix class names on elements + classPrefix: 'mejs__', - // Turn keyboard support on and off for this instance + enableKeyboard: true, - // When this player starts, it will pause other players + pauseOtherPlayers: true, - // Number of decimal places to show if frames are shown + secondsDecimalLength: 0, - // Array of keyboard actions such as play/pause + keyActions: [{ - keys: [32, // SPACE - 179 // GOOGLE play/pause button - ], + keys: [32, 179], action: function action(player, media) { if (!_constants.IS_FIREFOX) { @@ -3934,7 +3093,7 @@ var config = exports.config = { } } }, { - keys: [38], // UP + keys: [38], action: function action(player, media) { if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { @@ -3952,7 +3111,7 @@ var config = exports.config = { } } }, { - keys: [40], // DOWN + keys: [40], action: function action(player, media) { if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { @@ -3972,9 +3131,7 @@ var config = exports.config = { } } }, { - keys: [37, // LEFT - 227 // Google TV rewind - ], + keys: [37, 227], action: function action(player, media) { if (!isNaN(media.duration) && media.duration > 0) { if (player.isVideo) { @@ -3982,15 +3139,12 @@ var config = exports.config = { player.startControlsTimer(); } - // 5% var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0); media.setCurrentTime(newTime); } } }, { - keys: [39, // RIGHT - 228 // Google TV forward - ], + keys: [39, 228], action: function action(player, media) { if (!isNaN(media.duration) && media.duration > 0) { @@ -3999,13 +3153,12 @@ var config = exports.config = { player.startControlsTimer(); } - // 5% var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration); media.setCurrentTime(newTime); } } }, { - keys: [70], // F + keys: [70], action: function action(player, media, key, event) { if (!event.ctrlKey) { if (typeof player.enterFullScreen !== 'undefined') { @@ -4018,7 +3171,7 @@ var config = exports.config = { } } }, { - keys: [77], // M + keys: [77], action: function action(player) { player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = ''; @@ -4037,15 +3190,6 @@ var config = exports.config = { _mejs2.default.MepDefaults = config; -/** - * Wrap a MediaElement object in player controls - * - * @constructor - * @param {HTMLElement|String} node - * @param {Object} o - * @return {?MediaElementPlayer} - */ - var MediaElementPlayer = function () { function MediaElementPlayer(node, o) { _classCallCheck(this, MediaElementPlayer); @@ -4061,36 +3205,28 @@ var MediaElementPlayer = function () { t.controlsTimer = null; - // enforce object, even without "new" (via John Resig) if (!(t instanceof MediaElementPlayer)) { return new MediaElementPlayer(element, o); } - // these will be reset after the MediaElement.success fires - // t.media will be the fake node to emulate all HTML5 events, methods, etc - // t.node will be the node to be restored t.node = t.media = element; if (!t.node) { return; } - // check for existing player if (t.media.player !== undefined) { return t.media.player; } - // try to get options from data-mejsoptions if (o === undefined) { var options = t.node.getAttribute('data-mejsoptions'); o = options ? JSON.parse(options) : {}; } - // extend default options t.options = Object.assign({}, config, o); if (!t.options.timeFormat) { - // Generate the time format according to options t.options.timeFormat = 'mm:ss'; if (t.options.alwaysShowHours) { t.options.timeFormat = 'hh:mm:ss'; @@ -4102,13 +3238,10 @@ var MediaElementPlayer = function () { (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25); - // unique ID t.id = 'mep_' + _mejs2.default.mepIndex++; - // add to player array (for focus events) _mejs2.default.players[t.id] = t; - // start up var meOptions = Object.assign({}, t.options, { success: function success(media, domNode) { t._meReady(media, domNode); @@ -4119,36 +3252,26 @@ var MediaElementPlayer = function () { }), tagName = t.node.tagName.toLowerCase(); - // get video from src or href? t.isDynamic = tagName !== 'audio' && tagName !== 'video'; t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo; t.mediaFiles = null; t.trackFiles = null; - // use native controls in iPad, iPhone, and Android if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) { - - // add controls and stop t.node.setAttribute('controls', true); - // override Apple's autoplay override for iPads if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) { t.play(); } } else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) { - - // DESKTOP: use MediaElementPlayer controls - - // remove native controls t.node.removeAttribute('controls'); var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player'); - // insert description for screen readers + var offscreen = _document2.default.createElement('span'); offscreen.className = t.options.classPrefix + 'offscreen'; offscreen.innerText = videoPlayerTitle; t.media.parentNode.insertBefore(offscreen, t.media); - // build container t.container = _document2.default.createElement('div'); t.container.id = t.id; t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className; @@ -4159,29 +3282,21 @@ var MediaElementPlayer = function () { t.container.addEventListener('focus', function (e) { if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { t.showControls(true); - // In versions older than IE11, the focus causes the playbar to be displayed - // if user clicks on the Play/Pause button in the control bar once it attempts - // to hide it - if (!_constants.HAS_MS_NATIVE_FULLSCREEN) { - // If e.relatedTarget appears before container, send focus to play button, - // else send focus to last control button. - var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', - button = t.container.querySelector(btnSelector); - - button.focus(); - } + + var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', + button = t.container.querySelector(btnSelector); + + button.focus(); } }); t.node.parentNode.insertBefore(t.container, t.node); - // When no elements in controls, hide bar completely if (!t.options.features.length) { t.container.style.background = 'transparent'; t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none'; } if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) { - // outer container t.outerContainer = t.media.parentNode; var wrapper = _document2.default.createElement('div'); @@ -4190,7 +3305,6 @@ var MediaElementPlayer = function () { wrapper.appendChild(t.container); } - // add classes for user and content if (_constants.IS_ANDROID) { dom.addClass(t.container, t.options.classPrefix + 'android'); } @@ -4205,9 +3319,6 @@ var MediaElementPlayer = function () { } dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio'); - // Workflow for Safari desktop: "clone" element and remove children, but save them to check sources, captions, etc. - // This ensure full compatibility when using keyboard, since Safari creates a keyboard trap when appending - // video/audio elements with children if (_constants.IS_SAFARI && !_constants.IS_IOS) { dom.addClass(t.container, t.options.classPrefix + 'hide-cues'); @@ -4228,7 +3339,6 @@ var MediaElementPlayer = function () { Array.prototype.slice.call(childNode.attributes).forEach(function (item) { elements[item.name] = item.value; }); - elements.type = (0, _media.formatType)(elements.src, elements.type); mediaFiles.push(elements); break; @@ -4255,25 +3365,13 @@ var MediaElementPlayer = function () { } } - // move the `video`/`audio` tag into the right spot t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node); - // needs to be assigned here, after iOS remap t.media.player = t; - // find parts t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls'); t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers'); - // determine the size - - /* size priority: - (1) videoWidth (forced), - (2) style="width;height;" - (3) width attribute, - (4) defaultVideoWidth (for unspecified cases) - */ - var tagType = t.isVideo ? 'video' : 'audio', capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1); @@ -4299,23 +3397,17 @@ var MediaElementPlayer = function () { t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width; - // set the size, while we wait for the plugins to load below t.setPlayerSize(t.width, t.height); - // create MediaElementShim meOptions.pluginWidth = t.width; meOptions.pluginHeight = t.height; - } - // Hide media completely for audio that doesn't have any features - else if (!t.isVideo && !t.options.features.length) { + } else if (!t.isVideo && !t.options.features.length) { t.node.style.display = 'none'; } - // create MediaElement shim new _mediaelement2.default(t.media, meOptions, t.mediaFiles); if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) { - // controls are shown when loaded var event = (0, _general.createEvent)('controlsshown', t.container); t.container.dispatchEvent(event); } @@ -4330,7 +3422,7 @@ var MediaElementPlayer = function () { doAnimation = doAnimation === undefined || doAnimation; - if (t.controlsAreVisible) { + if (t.controlsAreVisible || !t.isVideo) { return; } @@ -4342,7 +3434,6 @@ var MediaElementPlayer = function () { t.container.dispatchEvent(event); }); - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop = function _loop(i, total) { @@ -4358,8 +3449,8 @@ var MediaElementPlayer = function () { } else { dom.removeClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; + t.controls.style.opacity = 1; - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); @@ -4386,7 +3477,6 @@ var MediaElementPlayer = function () { if (doAnimation) { (function () { - // fade out main controls dom.fadeOut(t.controls, 200, function () { dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; @@ -4394,7 +3484,6 @@ var MediaElementPlayer = function () { t.container.dispatchEvent(event); }); - // any additional controls people might add and want to hide var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop2 = function _loop2(i, total) { @@ -4409,12 +3498,10 @@ var MediaElementPlayer = function () { } })(); } else { - - // hide main controls dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); t.controls.style.display = ''; + t.controls.style.opacity = 0; - // hide others var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); @@ -4430,7 +3517,6 @@ var MediaElementPlayer = function () { }, { key: 'startControlsTimer', value: function startControlsTimer(timeout) { - var t = this; timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault; @@ -4445,7 +3531,6 @@ var MediaElementPlayer = function () { }, { key: 'killControlsTimer', value: function killControlsTimer() { - var t = this; if (t.controlsTimer !== null) { @@ -4471,33 +3556,22 @@ var MediaElementPlayer = function () { t.controlsEnabled = true; t.showControls(false); } - - /** - * Set up all controls and events - * - * @param media - * @param domNode - * @private - */ - }, { key: '_meReady', value: function _meReady(media, domNode) { - var t = this, autoplayAttr = domNode.getAttribute('autoplay'), autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'), - isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null; + isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); if (t.controls) { t.enableControls(); } - if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) { + if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) { t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = ''; } - // make sure it can't create itself again if a plugin reloads if (t.created) { return; } @@ -4507,13 +3581,7 @@ var MediaElementPlayer = function () { t.domNode = domNode; if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) { - - // In the event that no features are specified for audio, - // create only MediaElement instance rather than - // doing all the work to create a full player if (!t.isVideo && !t.options.features.length) { - - // force autoplay for HTML5 if (autoplay && isNative) { t.play(); } @@ -4530,25 +3598,20 @@ var MediaElementPlayer = function () { return; } - // two built in features t.buildposter(t, t.controls, t.layers, t.media); t.buildkeyboard(t, t.controls, t.layers, t.media); t.buildoverlays(t, t.controls, t.layers, t.media); - // grab for use by features t.findTracks(); - // cache container to store control elements' original position t.featurePosition = {}; - // add user-defined features/controls for (var i = 0, total = t.options.features.length; i < total; i++) { var feature = t.options.features[i]; if (t['build' + feature]) { try { t['build' + feature](t, t.controls, t.layers, t.media); } catch (e) { - // TODO: report control error console.error('error building ' + feature, e); } } @@ -4557,15 +3620,10 @@ var MediaElementPlayer = function () { var event = (0, _general.createEvent)('controlsready', t.container); t.container.dispatchEvent(event); - // reset all layers and controls t.setPlayerSize(t.width, t.height); t.setControlsSize(); - // controls fade if (t.isVideo) { - - // create callback here since it needs access to current - // MediaElement object t.clickToPlayPauseCallback = function () { if (t.options.clickToPlayPause) { @@ -4586,16 +3644,10 @@ var MediaElementPlayer = function () { t.createIframeLayer(); - // click to play/pause t.media.addEventListener('click', t.clickToPlayPauseCallback); if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) { - - // for touch devices (iOS, Android) - // show/hide without animation on touch t.node.addEventListener('touchstart', function () { - - // toggle controls if (t.controlsAreVisible) { t.hideControls(false); } else { @@ -4605,8 +3657,6 @@ var MediaElementPlayer = function () { } }); } else { - - // show/hide controls t.container.addEventListener('mouseenter', function () { if (t.controlsEnabled) { if (!t.options.alwaysShowControls) { @@ -4639,16 +3689,12 @@ var MediaElementPlayer = function () { t.hideControls(false); } - // check for autoplay if (autoplay && !t.options.alwaysShowControls) { t.hideControls(); } - // resizer if (t.options.enableAutosize) { t.media.addEventListener('loadedmetadata', function (e) { - // if the <video height> was not set and the options.videoHeight was not set - // then resize to the real dimensions if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) { t.setPlayerSize(e.target.videoWidth, e.target.videoHeight); t.setControlsSize(); @@ -4658,13 +3704,9 @@ var MediaElementPlayer = function () { } } - // EVENTS - - // FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them) t.media.addEventListener('play', function () { t.hasFocus = true; - // go through all other players for (var playerIndex in _mejs2.default.players) { if (_mejs2.default.players.hasOwnProperty(playerIndex)) { var p = _mejs2.default.players[playerIndex]; @@ -4677,13 +3719,11 @@ var MediaElementPlayer = function () { } }); - // ended for all t.media.addEventListener('ended', function () { if (t.options.autoRewind) { try { t.media.setCurrentTime(0); - // Fixing an Android stock browser bug, where "seeked" isn't fired correctly after - // ending the video and jumping to the beginning + setTimeout(function () { var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading'); if (loadingElement && loadingElement.parentNode) { @@ -4715,7 +3755,6 @@ var MediaElementPlayer = function () { } }); - // resize on the first play t.media.addEventListener('loadedmetadata', function () { (0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25); @@ -4733,14 +3772,12 @@ var MediaElementPlayer = function () { } }); - // Only change the time format when necessary var duration = null; t.media.addEventListener('timeupdate', function () { if (duration !== t.media.duration) { duration = t.media.duration; (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25); - // make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15 if (t.updateDuration) { t.updateDuration(); } @@ -4751,11 +3788,21 @@ var MediaElementPlayer = function () { } }); + t.container.addEventListener('click', function (e) { + dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + }); + + t.container.addEventListener('focusin', function (e) { + dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + if (t.controlsEnabled && !t.options.alwaysShowControls) { + t.showControls(false); + } + }); + t.container.addEventListener('focusout', function (e) { setTimeout(function () { - //FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787 if (e.relatedTarget) { - if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) { + if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) { t.keyboardAction = false; if (t.isVideo && !t.options.alwaysShowControls) { t.hideControls(true); @@ -4765,44 +3812,20 @@ var MediaElementPlayer = function () { }, 0); }); - // webkit has trouble doing this without a delay setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); }, 0); - // adjust controls whenever window sizes (used to be in fullscreen only) t.globalBind('resize', function () { - - // don't resize for fullscreen mode if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) { t.setPlayerSize(t.width, t.height); } - // always adjust controls t.setControlsSize(); }); - - // Disable focus outline to improve look-and-feel for regular users - t.globalBind('click', function (e) { - if (e.target.matches('.' + t.options.classPrefix + 'container')) { - dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive'); - } else if (e.target.closest('.' + t.options.classPrefix + 'container')) { - dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive'); - } - }); - - // Enable focus outline for Accessibility purposes - t.globalBind('keydown', function (e) { - if (e.target.matches('.' + t.options.classPrefix + 'container')) { - dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive'); - } else if (e.target.closest('.' + t.options.classPrefix + 'container')) { - dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive'); - } - }); } - // force autoplay for HTML5 if (autoplay && isNative) { t.play(); } @@ -4816,13 +3839,6 @@ var MediaElementPlayer = function () { } } } - - /** - * - * @param {Event} e - * @private - */ - }, { key: '_handleError', value: function _handleError(e) { @@ -4838,7 +3854,6 @@ var MediaElementPlayer = function () { play.style.display = 'none'; } - // Tell user that the file cannot be played if (t.options.error) { t.options.error(e); } @@ -4860,10 +3875,8 @@ var MediaElementPlayer = function () { t.height = height; } - // check stretching modes switch (t.options.stretching) { case 'fill': - // The 'fill' effect only makes sense on video; for audio we will set the dimensions if (t.isVideo) { t.setFillMode(); } else { @@ -4876,7 +3889,7 @@ var MediaElementPlayer = function () { case 'none': t.setDimensions(t.width, t.height); break; - // This is the 'auto' mode + default: if (t.hasFluidMode() === true) { t.setResponsiveMode(); @@ -4891,8 +3904,7 @@ var MediaElementPlayer = function () { value: function hasFluidMode() { var t = this; - // detect 100% mode - use currentStyle for IE since css() doesn't return percentages - return t.height.toString().includes('%') || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; + return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; } }, { key: 'setResponsiveMode', @@ -4903,15 +3915,10 @@ var MediaElementPlayer = function () { var parentEl = void 0, el = t.container; - // traverse parents to find the closest visible one while (el) { try { - if (_window2.default.self !== _window2.default.top) { - if (_window2.default.frameElement !== null) { - return _window2.default.frameElement; - } else { - parentEl = _window2.default.frameElement.parentNode; - } + if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) { + return _window2.default.frameElement; } else { parentEl = el.parentElement; } @@ -4978,17 +3985,15 @@ var MediaElementPlayer = function () { parentWidth = parseFloat(parentStyles.width); if (t.isVideo) { - // Responsive video is based on width: 100% and height: 100% if (t.height === '100%') { - newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10); + newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10); } else { - newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10); + newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10); } } else { newHeight = nativeHeight; } - // If we were unable to compute newHeight, get the container height instead if (isNaN(newHeight)) { newHeight = parentHeight; } @@ -4999,21 +4004,16 @@ var MediaElementPlayer = function () { } if (newHeight && parentWidth) { - - // set outer container size t.container.style.width = parentWidth + 'px'; t.container.style.height = newHeight + 'px'; - // set native <video> or <audio> and shims t.node.style.width = '100%'; t.node.style.height = '100%'; - // if shim is ready, send the size to the embedded plugin if (t.isVideo && t.media.setSize) { t.media.setSize(parentWidth, newHeight); } - // set the layers var layerChildren = t.layers.childNodes; for (var i = 0, total = layerChildren.length; i < total; i++) { layerChildren[i].style.width = '100%'; @@ -5026,11 +4026,13 @@ var MediaElementPlayer = function () { value: function setFillMode() { var t = this; - var parent = void 0; + var parent = void 0, + isIframe = false; try { if (_window2.default.self !== _window2.default.top) { - parent = _window2.default.frameElement.parentNode; + isIframe = true; + parent = _window2.default.frameElement; } else { parent = t.outerContainer; } @@ -5040,7 +4042,6 @@ var MediaElementPlayer = function () { var parentStyles = getComputedStyle(parent); - // Remove the responsive attributes in the event they are there if (t.node.style.height !== 'none' && t.node.style.height !== t.height) { t.node.style.height = 'auto'; } @@ -5064,11 +4065,11 @@ var MediaElementPlayer = function () { } } - if (!parseFloat(parentStyles.width)) { + if (!isIframe && !parseFloat(parentStyles.width)) { parent.style.width = t.media.offsetWidth + 'px'; } - if (!parseFloat(parentStyles.height)) { + if (!isIframe && !parseFloat(parentStyles.height)) { parent.style.height = t.media.offsetHeight + 'px'; } @@ -5079,27 +4080,19 @@ var MediaElementPlayer = function () { t.setDimensions('100%', '100%'); - // This prevents an issue when displaying poster var poster = t.container.querySelector(t.options.classPrefix + 'poster img'); if (poster) { poster.style.display = ''; } - // calculate new width and height var targetElement = t.container.querySelectorAll('object, embed, iframe, video'), initHeight = t.height, initWidth = t.width, - - // scale to the target width - scaleX1 = parentWidth, + scaleX1 = parentWidth, scaleY1 = initHeight * parentWidth / initWidth, - - // scale to the target height - scaleX2 = initWidth * parentHeight / initHeight, + scaleX2 = initWidth * parentHeight / initHeight, scaleY2 = parentHeight, - - // now figure out which one we should use - bScaleOnWidth = scaleX2 > parentWidth === false, + bScaleOnWidth = scaleX2 > parentWidth === false, finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2), width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px', @@ -5121,8 +4114,8 @@ var MediaElementPlayer = function () { value: function setDimensions(width, height) { var t = this; - width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px'; - height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px'; + width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px'; + height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px'; t.container.style.width = width; t.container.style.height = height; @@ -5138,7 +4131,6 @@ var MediaElementPlayer = function () { value: function setControlsSize() { var t = this; - // skip calculation if hidden if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) { return; } @@ -5160,21 +4152,12 @@ var MediaElementPlayer = function () { siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1; - // Substract the width of the feature siblings from time rail var controlsWidth = parseFloat(t.controls.offsetWidth); t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px'; var event = (0, _general.createEvent)('controlsresize', t.container); t.container.dispatchEvent(event); } - - /** - * Add featured control element and cache its position in case features are reset - * - * @param {HTMLElement} element - * @param {String} key - */ - }, { key: 'addControlElement', value: function addControlElement(element, key) { @@ -5195,20 +4178,12 @@ var MediaElementPlayer = function () { } } } - - /** - * Append layer to manipulate `<iframe>` elements safely. - * - * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`. - */ - }, { key: 'createIframeLayer', value: function createIframeLayer() { - var t = this; - if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { + if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { var layer = _document2.default.createElement('div'), target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName); @@ -5235,7 +4210,7 @@ var MediaElementPlayer = function () { key: 'resetSize', value: function resetSize() { var t = this; - // webkit has trouble doing this without a delay + setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); @@ -5298,7 +4273,6 @@ var MediaElementPlayer = function () { }, { key: 'globalUnbind', value: function globalUnbind(events, callback) { - var t = this, doc = t.node ? t.node.ownerDocument : _document2.default; @@ -5325,7 +4299,6 @@ var MediaElementPlayer = function () { }, { key: 'buildposter', value: function buildposter(player, controls, layers, media) { - var t = this, poster = _document2.default.createElement('div'); @@ -5334,12 +4307,10 @@ var MediaElementPlayer = function () { var posterUrl = player.media.getAttribute('poster'); - // priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster) if (player.options.poster !== '') { posterUrl = player.options.poster; } - // second, try the real poster if (posterUrl) { t.setPoster(posterUrl); } else { @@ -5366,8 +4337,6 @@ var MediaElementPlayer = function () { if (player.options.showPosterWhenPaused) { media.addEventListener('pause', function () { - // To avoid displaying the poster when video ended, since it - // triggers a pause event as well if (!media.ended) { poster.style.display = ''; } @@ -5385,12 +4354,10 @@ var MediaElementPlayer = function () { var t = this, loading = _document2.default.createElement('div'), error = _document2.default.createElement('div'), - - // this needs to come last so it's on top - bigPlay = _document2.default.createElement('div'), + bigPlay = _document2.default.createElement('div'), buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering'); - loading.style.display = 'none'; // start out hidden + loading.style.display = 'none'; loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>'; layers.appendChild(loading); @@ -5403,8 +4370,6 @@ var MediaElementPlayer = function () { bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play'; bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>'); bigPlay.addEventListener('click', function () { - // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay - // started and immediately stopped the video if (t.options.clickToPlayPause) { var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'), @@ -5419,13 +4384,23 @@ var MediaElementPlayer = function () { button.setAttribute('aria-pressed', !!pressed); } }); + + bigPlay.addEventListener('keydown', function (e) { + var keyPressed = e.keyCode || e.which || 0; + + if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) { + var event = (0, _general.createEvent)('click', bigPlay); + bigPlay.dispatchEvent(event); + return false; + } + }); + layers.appendChild(bigPlay); - if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) { + if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) { bigPlay.style.display = 'none'; } - // show/hide big play button media.addEventListener('play', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; @@ -5434,7 +4409,6 @@ var MediaElementPlayer = function () { } error.style.display = 'none'; }); - media.addEventListener('playing', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; @@ -5443,7 +4417,6 @@ var MediaElementPlayer = function () { } error.style.display = 'none'; }); - media.addEventListener('seeking', function () { bigPlay.style.display = 'none'; loading.style.display = ''; @@ -5451,7 +4424,6 @@ var MediaElementPlayer = function () { buffer.style.display = ''; } }); - media.addEventListener('seeked', function () { bigPlay.style.display = media.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none'; loading.style.display = 'none'; @@ -5459,7 +4431,6 @@ var MediaElementPlayer = function () { buffer.style.display = ''; } }); - media.addEventListener('pause', function () { loading.style.display = 'none'; if (!_constants.IS_STOCK_ANDROID) { @@ -5469,7 +4440,6 @@ var MediaElementPlayer = function () { buffer.style.display = 'none'; } }); - media.addEventListener('waiting', function () { loading.style.display = ''; if (buffer) { @@ -5477,15 +4447,12 @@ var MediaElementPlayer = function () { } }); - // show/hide loading media.addEventListener('loadeddata', function () { loading.style.display = ''; if (buffer) { buffer.style.display = ''; } - // Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices - // (https://github.com/johndyer/mediaelement/issues/1305) if (_constants.IS_ANDROID) { media.canplayTimeout = setTimeout(function () { if (_document2.default.createEvent) { @@ -5501,11 +4468,10 @@ var MediaElementPlayer = function () { if (buffer) { buffer.style.display = 'none'; } - // Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice + clearTimeout(media.canplayTimeout); }); - // error handling media.addEventListener('error', function (e) { t._handleError(e); loading.style.display = 'none'; @@ -5533,7 +4499,6 @@ var MediaElementPlayer = function () { t.keyboardAction = true; }); - // listen for key presses t.globalBind('keydown', function (event) { var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'), target = t.media.closest('.' + t.options.classPrefix + 'container'); @@ -5541,7 +4506,6 @@ var MediaElementPlayer = function () { return t.onkeydown(player, media, event); }); - // check if someone clicked outside a player region, then kill its focus t.globalBind('click', function (event) { t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container'); }); @@ -5551,7 +4515,6 @@ var MediaElementPlayer = function () { value: function onkeydown(player, media, e) { if (player.hasFocus && player.options.enableKeyboard) { - // find a matching key for (var i = 0, total = player.options.keyActions.length; i < total; i++) { var keyAction = player.options.keyActions[i]; @@ -5572,7 +4535,6 @@ var MediaElementPlayer = function () { value: function play() { var t = this; - // only load if the current time is 0 to ensure proper playing if (t.media.getCurrentTime() <= 0) { t.load(); } @@ -5634,17 +4596,14 @@ var MediaElementPlayer = function () { } t.media.setSrc(src); - t.createIframeLayer(); } }, { key: 'remove', value: function remove() { - var t = this, rendererName = t.media.rendererName; - // Stop completely media playing if (!t.media.paused) { t.media.pause(); } @@ -5652,55 +4611,51 @@ var MediaElementPlayer = function () { var src = t.media.getSrc(); t.media.setSrc(''); - // invoke features cleanup for (var featureIndex in t.options.features) { var feature = t.options.features[featureIndex]; if (t['clean' + feature]) { try { t['clean' + feature](t); } catch (e) { - // @todo: report control error console.error('error cleaning ' + feature, e); } } } - // reset dimensions var nativeWidth = t.node.getAttribute('width'), nativeHeight = t.node.getAttribute('height'); + if (nativeWidth) { - if (nativeWidth.match('%') === null) { + if (nativeWidth.indexOf('%') === -1) { nativeWidth = nativeWidth + 'px'; } } else { nativeWidth = 'auto'; } + if (nativeHeight) { - if (nativeHeight.match('%') === null) { + if (nativeHeight.indexOf('%') === -1) { nativeHeight = nativeHeight + 'px'; } } else { nativeHeight = 'auto'; } + t.node.style.width = nativeWidth; t.node.style.height = nativeHeight; - // grab video and put it back in place if (!t.isDynamic) { (function () { t.node.setAttribute('controls', true); t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', '')); - // Remove `autoplay` (not worth bringing it back once player is destroyed) delete t.node.autoplay; - // Reintegrate file if it can be played if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') { t.node.setAttribute('src', src); } - // If <iframe>, remove overlay - if (rendererName.match(/iframe/i) !== null) { + if (~rendererName.indexOf('iframe')) { var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay'); layer.remove(); } @@ -5710,7 +4665,6 @@ var MediaElementPlayer = function () { t.container.parentNode.insertBefore(node, t.container); t.node.remove(); - // Add children if (t.mediaFiles) { for (var i = 0, total = t.mediaFiles.length; i < total; i++) { var source = _document2.default.createElement('source'); @@ -5735,7 +4689,6 @@ var MediaElementPlayer = function () { }); }; - // Load captions properly for (var _i3 = 0, _total3 = t.trackFiles.length; _i3 < _total3; _i3++) { _loop3(_i3, _total3); } @@ -5753,8 +4706,6 @@ var MediaElementPlayer = function () { t.media.destroy(); } - // Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to - // pause a non existent Flash API. delete _mejs2.default.players[t.id]; if (_typeof(t.container) === 'object') { @@ -5775,8 +4726,6 @@ _window2.default.MediaElementPlayer = MediaElementPlayer; exports.default = MediaElementPlayer; -// turn into plugin - (function ($) { if (typeof $ !== 'undefined') { @@ -5798,7 +4747,6 @@ exports.default = MediaElementPlayer; }; $(_document2.default).ready(function () { - // auto enable using JSON attribute $('.' + config.classPrefix + 'player').mediaelementplayer(); }); } @@ -5840,30 +4788,9 @@ var _media = _dereq_(22); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Shim that falls back to Flash if a media type is not supported. - * - * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE), - * will play using Flash. - */ - -/** - * Core detector, plugins are added below - * - */ var PluginDetector = exports.PluginDetector = { - /** - * Cached version numbers - * @type {Array} - */ plugins: [], - /** - * Test a plugin version number - * @param {String} plugin - In this scenario 'flash' will be tested - * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision) - * @return {Boolean} - */ hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; @@ -5871,36 +4798,16 @@ var PluginDetector = exports.PluginDetector = { return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, - /** - * Detect plugin and store its version number - * - * @see PluginDetector.detectPlugin - * @param {String} p - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - */ addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, - /** - * Obtain version number from the mime-type (all but IE) or ActiveX (IE) - * - * @param {String} pluginName - * @param {String} mimeType - * @param {String} activeX - * @param {Function} axDetect - * @return {int[]} - */ detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; - // Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { @@ -5909,7 +4816,6 @@ var PluginDetector = exports.PluginDetector = { version[i] = parseInt(version[i].match(/\d+/), 10); } } - // Internet Explorer / ActiveX } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); @@ -5924,12 +4830,7 @@ var PluginDetector = exports.PluginDetector = { } }; -/** - * Add Flash detection - * - */ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { - // adapted from SWFObject var version = [], d = ax.GetVariable("$version"); @@ -5941,34 +4842,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl }); var FlashMediaElementRenderer = { - - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var flash = {}; - // store main variable flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; - - // insert data flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; - // mediaElements for get/set var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - - // add to flash state that we will store flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -5980,7 +4866,6 @@ var FlashMediaElementRenderer = { if (flash.flashApi['get_' + propName] !== undefined) { var value = flash.flashApi['get_' + propName](); - // special case for buffered to conform to HTML5's newest if (propName === 'buffered') { return { start: function start() { @@ -6007,11 +4892,9 @@ var FlashMediaElementRenderer = { value = (0, _media.absolutizeUrl)(value); } - // send value to Flash if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { flash.flashApi['set_' + propName](value); } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'set', propName: propName, @@ -6025,16 +4908,10 @@ var FlashMediaElementRenderer = { assignGettersSetters(props[i]); } - // add mediaElements for native methods var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement flash[methodName] = function () { - if (flash.flashApi !== null) { - - // send call up to Flash ExternalInterface API if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); @@ -6045,7 +4922,6 @@ var FlashMediaElementRenderer = { } } else { - // store for after "READY" event fires flash.flashApiStack.push({ type: 'call', methodName: methodName @@ -6058,7 +4934,6 @@ var FlashMediaElementRenderer = { assignMethods(methods[_i]); } - // give initial events like in others renderers var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { @@ -6066,16 +4941,13 @@ var FlashMediaElementRenderer = { mediaElement.dispatchEvent(event); } - // add a ready method that Flash can call to _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); - // do call stack if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { - var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { @@ -6091,19 +4963,15 @@ var FlashMediaElementRenderer = { }; _window2.default['__event__' + flash.id] = function (eventName, message) { - var event = (0, _general.createEvent)(eventName, flash); event.message = message || ''; - // send event from Flash up to the mediaElement flash.mediaElement.dispatchEvent(event); }; - // insert Flash object flash.flashWrapper = _document2.default.createElement('div'); - // If the access script flag does not have any of the valid values, set to `sameDomain` by default - if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) { + if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } @@ -6193,55 +5061,42 @@ var FlashMediaElementRenderer = { var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { - - /** - * Register media type based on URL structure if Flash is detected - * - */ _media.typeChecks.push(function (url) { - url = url.toLowerCase(); if (url.startsWith('rtmp')) { - if (url.includes('.mp3')) { + if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } - } else if (url.includes('.oga') || url.includes('.ogg')) { + } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; - } else if (url.includes('.m3u8')) { + } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; - } else if (url.includes('.mpd')) { + } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; - } else if (url.includes('.flv')) { + } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); - // VIDEO var FlashMediaElementVideoRenderer = { name: 'flash_video', - options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, - // start query parameter sent to server for pseudo-streaming + pseudoStreamingStartQueryParam: 'start', - // pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV) + pseudoStreamingType: 'byte' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase()); + return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -6249,88 +5104,60 @@ if (hasFlash) { }; _renderer.renderer.add(FlashMediaElementVideoRenderer); - // HLS var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', - options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()); + return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); - // M(PEG)-DASH var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', - options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['application/dash+xml'].includes(type.toLowerCase()); + return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); - // AUDIO var FlashMediaElementAudioRenderer = { name: 'flash_audio', - options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/mp3'].includes(type.toLowerCase()); + return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); - // AUDIO - ogg var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', - options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase()); + return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create @@ -6361,54 +5188,31 @@ var _constants = _dereq_(19); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Native HTML5 Renderer - * - * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement. - */ var HtmlMediaElement = { - name: 'html5', - options: { prefix: 'html5' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {String} - */ canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); - // Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS; - // also consider URLs that might have obfuscated URLs - if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { + if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { - return mediaElement.canPlayType(type).replace(/no/, ''); + return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ + create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var node = null; - // CREATE NODE if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); @@ -6418,7 +5222,6 @@ var HtmlMediaElement = { node.setAttribute('id', id); - // WRAPPERS for PROPs var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); @@ -6428,7 +5231,7 @@ var HtmlMediaElement = { }; node['set' + capName] = function (value) { - if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; @@ -6440,10 +5243,7 @@ var HtmlMediaElement = { var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), assignEvents = function assignEvents(eventName) { - node.addEventListener(eventName, function (e) { - // copy event - var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }); @@ -6453,7 +5253,6 @@ var HtmlMediaElement = { assignEvents(events[_i]); } - // HELPER METHODS node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; @@ -6516,18 +5315,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); - -var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null; -var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null; +var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA); +var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA); var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD; -var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null; -var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null; +var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); +var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); -var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null; -var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null; -var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME; -var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null; - +var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); +var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); +var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; +var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), @@ -6546,7 +5343,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { return !!supports; }(); -// for IE var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; @@ -6554,28 +5350,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } -// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge) -var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null; +var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA); -// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails) - -// iOS var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; -// W3C var hasNativeFullscreen = video.requestFullscreen !== undefined; -// OS X 10.5 can't do this even if it says it can :( -if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) { +if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } -// webkit/firefox/IE11+ var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; - var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; @@ -6583,7 +5371,6 @@ var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; -// Enabled? if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { @@ -6595,7 +5382,6 @@ if (IS_CHROME) { } if (hasTrueNativeFullScreen) { - if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { @@ -6615,7 +5401,6 @@ if (hasTrueNativeFullScreen) { }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { - if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { @@ -6644,7 +5429,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; - exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; @@ -6663,7 +5447,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; - _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; @@ -6680,15 +5463,11 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"6":6}],20:[function(_dereq_,module,exports){ 'use strict'; -/** - * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript, - * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js) - */ - Object.defineProperty(exports, "__esModule", { value: true }); exports.removeClass = exports.addClass = exports.hasClass = undefined; +exports.loadScript = loadScript; exports.offset = offset; exports.toggleClass = toggleClass; exports.fadeOut = fadeOut; @@ -6711,6 +5490,52 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function TinyPromise(handler) { + var thens = []; + var state = -1; + var result = void 0; + var then = void 0; + + function done(value) { + for (result = value; then = thens.shift();) { + then[state] && then[state](result); + } + } + + handler(function (value) { + return done(value, state = 0); + }, function (value) { + return done(value, state = 1); + }); + + return { + then: function then() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + ~state ? args[state] && args[state](result) : thens.push(args); + } + }; +} + +function loadScript(url) { + return TinyPromise(function (resolve, reject) { + var script = _document2.default.createElement('script'); + script.src = url; + script.async = true; + script.onload = function () { + script.remove(); + resolve(); + }; + script.onerror = function () { + script.remove(); + reject(); + }; + _document2.default.head.appendChild(script); + }); +} + function offset(el) { var rect = el.getBoundingClientRect(), scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, @@ -6754,7 +5579,6 @@ function toggleClass(el, className) { hasClass(el, className) ? removeClass(el, className) : addClass(el, className); } -// fade an element from the current state to full opacity in "duration" ms function fadeOut(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; @@ -6779,8 +5603,6 @@ function fadeOut(el) { }); } -// fade out an element from the current state to full transparency in "duration" ms -// display is the display style the element is assigned after the animation is done function fadeIn(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; @@ -6842,7 +5664,7 @@ function ajax(url, dataType, success, error) { break; } - if (!type.includes('application/x-www-form-urlencoded')) { + if (type !== 'application/x-www-form-urlencoded') { accept = type + ', */*; q=0.01'; } @@ -6850,19 +5672,14 @@ function ajax(url, dataType, success, error) { xhr.open('GET', url, true); xhr.setRequestHeader('Accept', accept); xhr.onreadystatechange = function () { - - // Ignore repeat invocations if (completed) { return; } if (xhr.readyState === 4) { if (xhr.status === 200) { - completed = true; - var data = void 0; - switch (dataType) { case 'json': data = JSON.parse(xhr.responseText); @@ -6874,7 +5691,6 @@ function ajax(url, dataType, success, error) { data = xhr.responseText; break; } - success(data); } else if (typeof error === 'function') { error(xhr.status); @@ -6897,6 +5713,7 @@ _mejs2.default.Utils.fadeOut = fadeOut; _mejs2.default.Utils.siblings = siblings; _mejs2.default.Utils.visible = visible; _mejs2.default.Utils.ajax = ajax; +_mejs2.default.Utils.loadScript = loadScript; },{"2":2,"3":3,"6":6}],21:[function(_dereq_,module,exports){ 'use strict'; @@ -6918,11 +5735,6 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * - * @param {String} input - * @return {string} - */ function escapeHTML(input) { if (typeof input !== 'string') { @@ -6941,7 +5753,6 @@ function escapeHTML(input) { }); } -// taken from underscore function debounce(func, wait) { var _this = this, _arguments = arguments; @@ -6977,28 +5788,13 @@ function debounce(func, wait) { }; } -/** - * Determine if an object contains any elements - * - * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object - * @param {Object} instance - * @return {Boolean} - */ function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } -/** - * Group a string of events into `document` (d) and `window` (w) events - * - * @param {String} events List of space separated events - * @param {String} id Namespace appended to events - * @return {{d: Array, w: Array}} - */ function splitEvents(events, id) { - // Global events var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; - // add player ID as an event namespace so it's easier to unbind them all later + var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); @@ -7016,26 +5812,20 @@ function splitEvents(events, id) { return ret; } -/** - * - * @param {string} eventName - * @param {*} target - * @return {Event|Object} - */ function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } - var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/), + var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { - eventName = eventFrags[0]; - detail.namespace = eventFrags[1]; + eventName = eventFrags[1]; + detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { @@ -7043,23 +5833,11 @@ function createEvent(eventName, target) { }); } -/** - * Returns true if targetNode appears after sourceNode in the dom. - * @param {HTMLElement} sourceNode - the source node for comparison - * @param {HTMLElement} targetNode - the node to compare against sourceNode - */ function isNodeAfter(sourceNode, targetNode) { - return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING - ); + return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } -/** - * Determines if a value is a string - * - * @param {*} value to check - * @returns {Boolean} True if a value is a string - */ function isString(value) { return typeof value === 'string'; } @@ -7097,11 +5875,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var typeChecks = exports.typeChecks = []; -/** - * - * @param {String} url - * @return {String} - */ function absolutizeUrl(url) { if (typeof url !== 'string') { @@ -7113,42 +5886,21 @@ function absolutizeUrl(url) { return el.firstChild.href; } -/** - * Get the format of a specific media, based on URL and additionally its mime type - * - * @param {String} url - * @param {String} type - * @return {String} - */ function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : getMimeFromType(type); } -/** - * Return the mime part of the type in case the attribute contains the codec - * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`) - * - * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element - * @param {String} type - * @return {String} - */ function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } - return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type; + return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } -/** - * Get the type of media based on URL structure - * - * @param {String} url - * @return {String} - */ function getTypeFromFile(url) { if (typeof url !== 'string') { @@ -7163,17 +5915,15 @@ function getTypeFromFile(url) { } } - // the do standard extension check var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; - // Obtain correct MIME types if (normalizedExt) { - if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) { + if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; - } else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) { + } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } @@ -7181,12 +5931,6 @@ function getTypeFromFile(url) { return mime; } -/** - * Get media file extension from URL - * - * @param {String} url - * @return {String} - */ function getExtension(url) { if (typeof url !== 'string') { @@ -7195,16 +5939,9 @@ function getExtension(url) { var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); - - return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; + return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } -/** - * Get standard extension of a media file - * - * @param {String} extension - * @return {String} - */ function normalizeExtension(extension) { if (typeof extension !== 'string') { @@ -7246,15 +5983,6 @@ var _document2 = _interopRequireDefault(_document); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Polyfill - * - * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list - * of polyfills provided by Babel. - */ - -// ChildNode.remove polyfill -// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { @@ -7271,11 +5999,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); -// CustomEvent polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent (function () { - if (typeof window.CustomEvent === "function") return false; + if (typeof window.CustomEvent === 'function') { + return false; + } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; @@ -7285,18 +6013,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de } CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; })(); -// Object.assign polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill if (typeof Object.assign !== 'function') { Object.assign = function (target) { - // .length of function is 2 if (target === null || target === undefined) { - // TypeError if undefined or null throw new TypeError('Cannot convert undefined or null to object'); } @@ -7306,9 +6029,7 @@ if (typeof Object.assign !== 'function') { var nextSource = arguments[index]; if (nextSource !== null) { - // Skip over if undefined or null for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } @@ -7319,76 +6040,6 @@ if (typeof Object.assign !== 'function') { }; } -// Array.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill -if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function value(searchElement, fromIndex) { - - // 1. const O be ? ToObject(this value). - if (this === null || this === undefined) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. const len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If len is 0, return false. - if (len === 0) { - return false; - } - - // 4. const n be ? ToInteger(fromIndex). - // (If fromIndex is undefined, this step produces the value 0.) - var n = fromIndex | 0; - - // 5. If n ≥ 0, then - // a. const k be n. - // 6. Else n < 0, - // a. const k be len + n. - // b. If k < 0, const k be 0. - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 7. Repeat, while k < len - while (k < len) { - // a. const elementK be the result of ? Get(O, ! ToString(k)). - // b. If SameValueZero(searchElement, elementK) is true, return true. - // c. Increase k by 1. - // NOTE: === provides the correct "SameValueZero" comparison needed here. - if (o[k] === searchElement) { - return true; - } - k++; - } - - // 8. Return false - return false; - } - }); -} - -// String.includes polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes -if (!String.prototype.includes) { - String.prototype.includes = function (search, start) { - 'use strict'; - - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; -} - -// String.startsWith polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; @@ -7396,8 +6047,6 @@ if (!String.prototype.startsWith) { }; } -// Element.matches polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -7407,8 +6056,6 @@ if (!Element.prototype.matches) { }; } -// Element.closest polyfill -// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), @@ -7422,13 +6069,6 @@ if (window.Element && !Element.prototype.closest) { }; } -// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ -// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - -// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel - -// MIT license - (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; @@ -7452,12 +6092,10 @@ if (window.Element && !Element.prototype.closest) { }; })(); -// Javascript workaround for FF iframe `getComputedStyle` bug -// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009 if (/firefox/i.test(navigator.userAgent)) { - window.oldGetComputedStyle = window.getComputedStyle; + window.mediaElementJsOldGetComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { - var t = window.oldGetComputedStyle(el, pseudoEl); + var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } @@ -7480,27 +6118,11 @@ var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976) - * - * @param {Number} fps - Frames per second - * @return {Boolean} - */ function isDropFrame() { var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25; return !(fps % 1 === 0); } -/** - * Format a numeric time in format '00:00:00' - * - * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero - * @param {Boolean} forceHours - * @param {Boolean} showFrameCount - * @param {Number} fps - Frames per second - * @param {Number} secondsDecimalLength - Number of decimals to display if any - * @return {String} - */ function secondsToTimeCode(time) { var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; @@ -7511,8 +6133,7 @@ function secondsToTimeCode(time) { time = !time || typeof time !== 'number' || time < 0 ? 0 : time; var dropFrames = Math.round(fps * 0.066666), - // Number of drop frames to drop on the minute marks (6%) - timeBase = Math.round(fps), + timeBase = Math.round(fps), framesPer24Hours = Math.round(fps * 3600) * 24, framesPer10Minutes = Math.round(fps * 600), frameSep = isDropFrame(fps) ? ';' : ':', @@ -7573,13 +6194,6 @@ function secondsToTimeCode(time) { return result; } -/** - * Convert a '00:00:00' time string into seconds - * - * @param {String} time - * @param {Number} fps - Frames per second - * @return {Number} - */ function timeCodeToSeconds(time) { var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25; @@ -7592,7 +6206,7 @@ function timeCodeToSeconds(time) { time = time.replace(';', ':'); } - if (!time.match(/\d{2}(\:\d{2}){0,3}/)) { + if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) { throw new TypeError('Time code must have the format `00:00:00`'); } @@ -7605,8 +6219,7 @@ function timeCodeToSeconds(time) { frames = 0, totalMinutes = 0, dropFrames = Math.round(fps * 0.066666), - // Number of drop frames to drop on the minute marks (6%) - timeBase = Math.round(fps), + timeBase = Math.round(fps), hFrames = timeBase * 3600, mFrames = timeBase * 60; @@ -7642,15 +6255,6 @@ function timeCodeToSeconds(time) { return parseFloat(output.toFixed(3)); } -/** - * Calculate the time format to use - * - * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media - * duration. Format: 'hh:mm:ss:ff' - * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero - * @param {Object} options - * @param {Number} fps - Frames per second - */ function calculateTimeFormat(time, options) { var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25; @@ -7671,7 +6275,7 @@ function calculateTimeFormat(time, options) { required = false; for (var i = 0, len = lis.length; i < len; i++) { - if (format.indexOf(lis[i][1]) > -1) { + if (~format.indexOf(lis[i][1])) { required = true; } else if (required) { var hasNextValue = false; @@ -7700,12 +6304,6 @@ function calculateTimeFormat(time, options) { options.currentTimeFormat = format; } -/** - * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds - * - * @param {String} SMPTE - * @return {Number} - */ function convertSMPTEtoSeconds(SMPTE) { if (typeof SMPTE !== 'string') { @@ -7714,7 +6312,7 @@ function convertSMPTEtoSeconds(SMPTE) { SMPTE = SMPTE.replace(',', '.'); - var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0; + var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0; var secs = 0, multiplier = 1; diff --git a/lib/mejs/mediaelementplayer.min.css b/lib/mejs/mediaelementplayer.min.css index 6068c345db060dfe35834c49d485066c1656c7d1..bf05cff11823f2a0c35a3a31bc3da961e7313409 100644 --- a/lib/mejs/mediaelementplayer.min.css +++ b/lib/mejs/mediaelementplayer.min.css @@ -1 +1 @@ -.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs__time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-baby{position:absolute;cursor:pointer;width:20px;height:20px;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs__time-handle-baby{left:-4px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-8px;border-radius:50%}.mejs__time-rail .mejs__time-handle-baby:active,.mejs__time-rail .mejs__time-handle-baby:focus,.mejs__time-rail:hover .mejs__time-handle-baby{-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block} \ No newline at end of file +.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs__time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-content{position:absolute;cursor:pointer;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs__time-handle-content{left:-7px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-4px;border-radius:50%;width:10px;height:10px}.mejs__time-rail .mejs__time-handle-content:active,.mejs__time-rail .mejs__time-handle-content:focus,.mejs__time-rail:hover .mejs__time-handle-content{-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block} \ No newline at end of file diff --git a/lib/mejs/mediaelementplayer.min.js b/lib/mejs/mediaelementplayer.min.js index 5fb58d8da726c082689f4931ede0a1864eb5c7b9..4b5132bf0a39f6d1d6b4671cc87745d504fcb634 100644 --- a/lib/mejs/mediaelementplayer.min.js +++ b/lib/mejs/mediaelementplayer.min.js @@ -8,28 +8,5 @@ * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * - *//*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(21),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,21:21,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(21),m=a(22),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,21:21,22:22,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(19),o=d(n),p=a(21),q=a(20);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,a.detectFullscreenMode();var b=this,c=p.isString(b.options.fullscreenText)?b.options.fullscreenText:k["default"].t("mejs.fullscreen"),d=i["default"].createElement("div");if(d.className=b.options.classPrefix+"button "+b.options.classPrefix+"fullscreen-button",d.innerHTML='<button type="button" aria-controls="'+b.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>',b.addControlElement(d,"fullscreen"),d.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=d,b.globalBind("keydown",function(c){var d=c.which||c.keyCode||0;27===d&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||b.isFullScreen)&&a.exitFullScreen()}),b.normalHeight=0,b.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var e=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,e)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN)return void("function"==typeof a.media.webkitEnterFullscreen?a.media.webkitEnterFullscreen():a.media.originalNode.webkitEnterFullscreen());if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen")),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,19:19,2:2,20:20,21:21,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(21),l=a(20);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){null===d.rendererName.match(/flash/)&&e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,20:20,21:21,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(24),m=a(20);Object.assign(g.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-hovered no-hover"></span>')+('<span class="'+i.options.classPrefix+'time-handle"><span class="'+i.options.classPrefix+'time-handle-content"></span></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.hovered=b.querySelector("."+i.options.classPrefix+"time-hovered"),i.newTime=0,i.forcedHandlePause=!1,i.setTransformStyle=function(a,b){a.style.transform=b,a.style.webkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b};var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=function(){return void 0!==c.webkitTransform?"webkitTransform":void 0!==c.mozTransform?"mozTransform ":void 0!==c.oTransform?"oTransform":void 0!==c.msTransform?"msTransform":"transform"}(),j=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),n=0,o=0,p=void 0;if(p=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(p<e.left?p=e.left:p>f+e.left&&(p=f+e.left),o=p-e.left,n=o/f,i.newTime=.02>=n?0:n*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),!k.IS_IOS&&!k.IS_ANDROID&&i.timefloat)){if(0>o&&(o=0),i.options.useSmoothHover&&null!==j&&"undefined"!=typeof window[j]){var q=new window[j](getComputedStyle(i.handle)[h]),r=q.m41,s=o/parseFloat(getComputedStyle(i.total).width)-r/parseFloat(getComputedStyle(i.total).width);i.hovered.style.left=r+"px",i.setTransformStyle(i.hovered,"scaleX("+s+")"),i.hovered.setAttribute("pos",o),s>=0?m.removeClass(i.hovered,"negative"):m.addClass(i.hovered,"negative")}i.timefloat.style.left=o+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"}},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){ -a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){if(i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)){d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a);for(var b=["mouseup","touchend"],c=0,e=b.length;e>c;c++)i.container.addEventListener(b[c],function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)});i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.container.addEventListener("mousemove",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"),i.hovered&&!k.IS_IOS&&!k.IS_ANDROID&&i.options.useSmoothHover&&m.removeClass(i.hovered,"no-hover"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none"),i.hovered&&i.options.useSmoothHover&&m.addClass(i.hovered,"no-hover")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&c.setTransformStyle(c.loaded,"scaleX("+b+")"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=parseFloat(getComputedStyle(a.total).width),e=Math.round(d*c/a.media.duration),f=e-Math.round(a.handle.offsetWidth/2);if(f=0>f?0:f,a.setTransformStyle(a.current,"scaleX("+e/d+")"),a.setTransformStyle(a.handle,"translateX("+f+"px)"),a.options.useSmoothHover&&!m.hasClass(a.hovered,"no-hover")){var g=parseInt(a.hovered.getAttribute("pos"));g=isNaN(g)?0:g;var h=g/d-f/d;a.hovered.style.left=f+"px",a.setTransformStyle(a.hovered,"scaleX("+h+")"),h>=0?m.removeClass(a.hovered,"negative"):m.addClass(a.hovered,"negative")}}}}})},{16:16,19:19,2:2,20:20,24:24,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(24),j=a(20);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,20:20,24:24}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(24),n=a(21),o=a(20);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(a.tracks.length||a.trackFiles&&0!==!a.trackFiles.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=null===a.trackFiles?a.tracks.length:a.trackFiles.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-input").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=null===a.trackFiles?a.node.querySelectorAll("track"):a.trackFiles,c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;if(void 0===e||void 0===e.fadeIn){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}else if(!o.visible(e)){var h=o.siblings(self,function(a){return h(a)});o.fadeIn(c.slidesContainer.querySelector(e));for(var i=0,j=h.length;j>i;i++)o.fadeOut(h[i])}}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,20:20,21:21,24:24,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(21),m=a(20);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,19:19,2:2,20:20,21:21,4:4}],14:[function(a,b,c){"use strict";/*! - * This is a `i18n` language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see core/i18n.js */ -Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(19),t=a(21),u=a(24),v=a(22),w=a(20),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;if(void 0===c){var g=d.node.getAttribute("data-mejsoptions");c=g?JSON.parse(g):{}}d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var h=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),i=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==i&&"video"!==i,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==i&&d.options.isVideo,d.mediaFiles=null,d.trackFiles=null,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var j=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),k=l["default"].createElement("span");if(k.className=d.options.classPrefix+"offscreen",k.innerText=j,d.media.parentNode.insertBefore(k,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",j),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var m=l["default"].createElement("div");m.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(m,d.container),m.appendChild(d.container)}if(s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),s.IS_SAFARI&&!s.IS_IOS){x.addClass(d.container,d.options.classPrefix+"hide-cues");for(var o=d.node.cloneNode(),q=d.node.childNodes,w=[],z=[],A=0,B=q.length;B>A;A++){var C=q[A];C&&C.nodeType!==Node.TEXT_NODE&&!function(){switch(C.tagName.toLowerCase()){case"source":var a={};Array.prototype.slice.call(C.attributes).forEach(function(b){a[b.name]=b.value}),a.type=v.formatType(a.src,a.type),w.push(a);break;case"track":C.mode="hidden",z.push(C);break;default:o.appendChild(C)}}()}d.node.remove(),d.node=d.media=o,w.length&&(d.mediaFiles=w),z.length&&(d.trackFiles=z)}d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var D=d.isVideo?"video":"audio",E=D.substring(0,1).toUpperCase()+D.substring(1);d.options[D+"Width"]>0||d.options[D+"Width"].toString().indexOf("%")>-1?d.width=d.options[D+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+E+"Width"],d.options[D+"Height"]>0||d.options[D+"Height"].toString().indexOf("%")>-1?d.height=d.options[D+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+E+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),h.pluginWidth=d.width,h.pluginHeight=d.height}if(new p["default"](d.media,h,d.mediaFiles),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var F=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(F)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),void(c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)));c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var g=0,h=c.options.features.length;h>g;g++){var i=c.options.features[g];if(c["build"+i])try{c["build"+i](c,c.controls,c.layers,c.media)}catch(k){console.error("error building "+i,k)}}var m=t.createEvent("controlsready",c.container);c.container.dispatchEvent(m),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-loading");a&&a.parentNode&&(a.parentNode.style.display="none")},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var o=null;c.media.addEventListener("timeupdate",function(){o!==c.media.duration&&(o=c.media.duration,u.calculateTimeFormat(o,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(m.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;switch("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node&&a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node&&a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){try{if(j["default"].self!==j["default"].top){if(null!==j["default"].frameElement)return j["default"].frameElement;b=j["default"].frameElement.parentNode}else b=c.parentElement}catch(d){b=c.parentElement}if(b&&x.visible(b))return b;c=b}return null}(),c=b?getComputedStyle(b,null):getComputedStyle(l["default"].body,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=void 0;try{b=j["default"].self!==j["default"].top?j["default"].frameElement.parentNode:a.outerContainer}catch(c){b=a.outerContainer}var d=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height="auto"),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth="none"),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight="none"),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height="auto"),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth="none"),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="none")),parseFloat(d.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(d.height)||(b.style.height=a.media.offsetHeight+"px"),d=getComputedStyle(b);var e=parseFloat(d.width),f=parseFloat(d.height);a.setDimensions("100%","100%");var g=a.container.querySelector(a.options.classPrefix+"poster img");g&&(g.style.display="");for(var h=a.container.querySelectorAll("object, embed, iframe, video"),i=a.height,k=a.width,l=e,m=i*e/k,n=k*f/i,o=f,p=n>e==!1,q=p?Math.floor(l):Math.floor(n),r=p?Math.floor(m):Math.floor(o),s=p?e+"px":q+"px",t=p?r+"px":f+"px",u=0,v=h.length;v>u;u++)h[u].style.height=t,h[u].style.width=s,a.media.setSize&&a.media.setSize(s,t),h[u].style.marginLeft=Math.floor((e-q)/2)+"px",h[u].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display=d.paused&&!s.IS_STOCK_ANDROID?"":"none",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),a.message&&(g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message)}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play(); -}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();var c=a.media.getSrc();a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic?a.container.parentNode.insertBefore(a.node,a.container):!function(){if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,""!==a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var d=l["default"].getElementById(a.media.id+"-iframe-overlay");d.remove()}var e=a.node.cloneNode();if(e.style.display="",a.container.parentNode.insertBefore(e,a.container),a.node.remove(),a.mediaFiles)for(var f=0,g=a.mediaFiles.length;g>f;f++){var h=l["default"].createElement("source");h.setAttribute("src",a.mediaFiles[f].src),h.setAttribute("type",a.mediaFiles[f].type),e.appendChild(h)}if(a.trackFiles)for(var i=function(b,c){var d=a.trackFiles[b],f=l["default"].createElement("track");f.kind=d.kind,f.label=d.label,f.srclang=d.srclang,f.src=d.src,e.appendChild(f),f.addEventListener("load",function(){this.mode="showing",e.textTracks[b].mode="showing"})},j=0,k=a.trackFiles.length;k>j;j++)i(j,k);delete a.node,delete a.mediaFiles,delete a.trackFiles}(),"function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var j=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");j.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{19:19,2:2,20:20,21:21,22:22,24:24,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(21),p=a(19),q=a(22),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{19:19,2:2,21:21,22:22,3:3,4:4,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(21),m=a(19),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{19:19,2:2,21:21,3:3,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(1-g/b,2);a.style.opacity=0>h?0:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(g/b,2);a.style.opacity=h>1?1:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&","<":"<",">":">",'"':"""};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(21),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{21:21,6:6}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]); \ No newline at end of file +!function e(t,n,i){function o(r,s){if(!n[r]){if(!t[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(a)return a(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[r]={exports:{}};t[r][0].call(u.exports,function(e){var n=t[r][1][e];return o(n||e)},u,u.exports,e,t,n,i)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var i=void 0!==n?n:"undefined"!=typeof window?window:{},o=e(1);if("undefined"!=typeof document)t.exports=document;else{var a=i["__GLOBAL_DOCUMENT_CACHE@4"];a||(a=i["__GLOBAL_DOCUMENT_CACHE@4"]=o),t.exports=a}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),a=e(14),r=e(21),s={lang:"en",en:a.EN};s.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");s.lang=t[0],void 0===s[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])?t[1]:{},s[t[0]]=(0,r.isObjectEmpty)(t[1])?a.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])&&(s[t[0]]=t[1])}return s.lang},s.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,a=s.language(),l=function(e,t,n){return"object"!==(void 0===e?"undefined":i(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==s[a]&&(n=s[a][e],null!==t&&"number"==typeof t&&(o=s[a]["mejs.plural-form"],n=l.apply(null,[n,t,o]))),!n&&s.en&&(n=s.en[e],null!==t&&"number"==typeof t&&(o=s.en["mejs.plural-form"],n=l.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,r.escapeHTML)(n)}return e},o.default.i18n=s,"undefined"!=typeof mejsL10n&&o.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=s},{14:14,21:21,6:6}],5:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(21),d=e(22),u=e(7),c=e(19),f=function e(t,n,i){var f=this;o(this,e);var p=this;i=Array.isArray(i)?i:null,p.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(p.defaults,n),p.mediaElement=r.default.createElement(n.fakeNodeName),p.mediaElement.options=n;var m=t,h=!1;if("string"==typeof t?p.mediaElement.originalNode=r.default.getElementById(t):(p.mediaElement.originalNode=t,m=t.id),m=m||"mejs_"+Math.random().toString().slice(2),void 0!==p.mediaElement.originalNode&&null!==p.mediaElement.originalNode&&p.mediaElement.appendChild){p.mediaElement.originalNode.setAttribute("id",m+"_from_mejs");var v=p.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!p.mediaElement.originalNode.getAttribute("preload")&&p.mediaElement.originalNode.setAttribute("preload","none"),p.mediaElement.originalNode.parentNode.insertBefore(p.mediaElement,p.mediaElement.originalNode),p.mediaElement.appendChild(p.mediaElement.originalNode)}p.mediaElement.id=m,p.mediaElement.renderers={},p.mediaElement.renderer=null,p.mediaElement.rendererName=null,p.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var i=n.mediaElement.renderers[e],o=null;if(void 0!==i&&null!==i)return i.show(),i.setSrc(t[0].src),n.mediaElement.renderer=i,n.mediaElement.rendererName=e,!0;for(var a=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,r=0,s=a.length;r<s;r++){var l=a[r];if(l===e){o=u.renderer.renderers[l];var d=Object.assign(o.options,n.mediaElement.options);return i=o.create(n.mediaElement,d,t),i.name=e,n.mediaElement.renderers[o.name]=i,n.mediaElement.renderer=i,n.mediaElement.rendererName=e,i.show(),!0}}return!1},p.mediaElement.setSize=function(e,t){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer.setSize(e,t)},p.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=r.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=p.mediaElement.options.customError;if(!n){var i=p.mediaElement.originalNode.getAttribute("poster");i&&(n+='<img src="'+i+'" width="100%" height="100%" alt="'+s.default.i18n.t("mejs.download-file")+'">');for(var o=0,a=e.length;o<a;o++){var l=e[o];n+='<a href="'+l.src+'" data-type="'+l.type+'"><span>'+s.default.i18n.t("mejs.download-file")+": "+l.src+"</span></a>"}}t.innerHTML=n,p.mediaElement.originalNode.parentNode.insertBefore(t,p.mediaElement.originalNode),p.mediaElement.originalNode.style.display="none",h=!0};var y=s.default.html5media.properties,g=s.default.html5media.methods,E=function(e,t,n,i){var o=e[t],a=function(){return n.apply(e,[o])},r=function(t){return o=i.apply(e,[t])};Object.defineProperty(e,t,{get:a,set:r})},b=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer.getSrc():null},S=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,i=e.length;n<i;n++){var o=(0,d.absolutizeUrl)(e[n].src),a=e[n].type;t.push({src:o,type:""!==a&&null!==a&&void 0!==a||!o?a:(0,d.getTypeFromFile)(o)})}var r=u.renderer.select(t,p.mediaElement.options.renderers.length?p.mediaElement.options.renderers:[]),s=void 0;if(p.mediaElement.paused||(p.mediaElement.pause(),s=(0,l.createEvent)("pause",p.mediaElement),p.mediaElement.dispatchEvent(s)),p.mediaElement.originalNode.setAttribute("src",t[0].src||""),p.mediaElement.querySelector(".me_cannotplay")&&p.mediaElement.querySelector(".me_cannotplay").remove(),null===r)return p.mediaElement.createErrorMessage(t),s=(0,l.createEvent)("error",p.mediaElement),s.message="No renderer found",void p.mediaElement.dispatchEvent(s);p.mediaElement.changeRenderer(r.rendererName,t),void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer||((s=(0,l.createEvent)("error",p.mediaElement)).message="Error creating renderer",p.mediaElement.dispatchEvent(s),p.mediaElement.createErrorMessage(t))};E(p.mediaElement,"src",b,S),p.mediaElement.getSrc=b,p.mediaElement.setSrc=S;for(var x=0,w=y.length;x<w;x++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer["get"+t]():null},i=function(e){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer["set"+t](e)};E(p.mediaElement,e,n,i),p.mediaElement["get"+t]=n,p.mediaElement["set"+t]=i}}(y[x]);for(var P=0,T=g.length;P<T;P++)!function(e){p.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];if(void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&"function"==typeof p.mediaElement.renderer[e])try{p.mediaElement.renderer[e](n)}catch(e){p.mediaElement.createErrorMessage()}return null}}(g[P]);p.mediaElement.events={},p.mediaElement.addEventListener=function(e,t){p.mediaElement.events[e]=p.mediaElement.events[e]||[],p.mediaElement.events[e].push(t)},p.mediaElement.removeEventListener=function(e,t){if(!e)return p.mediaElement.events={},!0;var n=p.mediaElement.events[e];if(!n)return!0;if(!t)return p.mediaElement.events[e]=[],!0;for(var i=0;i<n.length;i++)if(n[i]===t)return p.mediaElement.events[e].splice(i,1),!0;return!1},p.mediaElement.dispatchEvent=function(e){var t=p.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var C=function(e,t){if(s.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===a.default.location.protocol&&c.IS_IOS&&!a.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(a.default.URL||a.default.webkitURL).createObjectURL(this.response);return p.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},k=void 0;if(null!==i)k=i;else if(null!==p.mediaElement.originalNode)switch(k=[],p.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":k.push({type:"",src:p.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var N=p.mediaElement.originalNode.childNodes.length,A=p.mediaElement.originalNode.getAttribute("src");if(A){var _=p.mediaElement.originalNode,F=(0,d.formatType)(A,_.getAttribute("type"));k.push({type:F,src:C(A,F)})}for(var L=0;L<N;L++){var j=p.mediaElement.originalNode.childNodes[L];if(j.nodeType===Node.ELEMENT_NODE&&"source"===j.tagName.toLowerCase()){var M=j.getAttribute("src"),I=(0,d.formatType)(M,j.getAttribute("type"));k.push({type:I,src:C(M,I)})}}}return k.length&&(p.mediaElement.src=k),p.mediaElement.options.success&&p.mediaElement.options.success(p.mediaElement,p.mediaElement.originalNode),h&&p.mediaElement.options.error&&p.mediaElement.options.error(p.mediaElement,p.mediaElement.originalNode),p.mediaElement};a.default.MediaElement=f,n.default=f},{19:19,2:2,21:21,22:22,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),o={};o.version="4.1.1",o.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]},i.default.mejs=o,n.default=o},{3:3}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),s=function(){function e(){i(this,e),this.renderers={},this.order=[]}return a(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var i=[/^(html5|native)/i,/^flash/i,/iframe$/i],o=function(e){for(var t=0,n=i.length;t<n;t++)if(i[t].test(e))return t;return i.length};t.sort(function(e,t){return o(e)-o(t)})}for(var a=0,r=t.length;a<r;a++){var s=t[a],l=this.renderers[s];if(null!==l&&void 0!==l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":o(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),l=n.renderer=new s;r.default.Renderers=l},{6:6}],8:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(4)),s=e(16),l=i(s),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(19)),u=e(21),c=e(20);Object.assign(s.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(l.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(e){if(e.isVideo){e.isInIframe=o.default.location!==o.default.parent.location,e.detectFullscreenMode();var t=this,n=(0,u.isString)(t.options.fullscreenText)?t.options.fullscreenText:r.default.t("mejs.fullscreen"),i=a.default.createElement("div");if(i.className=t.options.classPrefix+"button "+t.options.classPrefix+"fullscreen-button",i.innerHTML='<button type="button" aria-controls="'+t.id+'" title="'+n+'" aria-label="'+n+'" tabindex="0"></button>',t.addControlElement(i,"fullscreen"),i.addEventListener("click",function(){d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||e.isFullScreen?e.exitFullScreen():e.enterFullScreen()}),e.fullscreenBtn=i,t.globalBind("keydown",function(n){27===(n.which||n.keyCode||0)&&(d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||t.isFullScreen)&&e.exitFullScreen()}),t.normalHeight=0,t.normalWidth=0,d.HAS_TRUE_NATIVE_FULLSCREEN){var s=function(){e.isFullScreen&&(d.isFullScreen()?(e.isNativeFullScreen=!0,e.setControlsSize()):(e.isNativeFullScreen=!1,e.exitFullScreen()))};e.globalBind(d.FULLSCREEN_EVENT_NAME,s)}}},detectFullscreenMode:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName),n="";return n=d.HAS_TRUE_NATIVE_FULLSCREEN&&t?"native-native":d.HAS_TRUE_NATIVE_FULLSCREEN&&!t?"plugin-native":e.usePluginFullScreen&&d.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",e.fullscreenMode=n,n},cleanfullscreen:function(e){e.exitFullScreen()},enterFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(html5|native)/i.test(e.media.rendererName),n=getComputedStyle(e.container);if(d.IS_IOS&&d.HAS_IOS_FULLSCREEN)"function"==typeof e.media.webkitEnterFullscreen?e.media.webkitEnterFullscreen():e.media.originalNode.webkitEnterFullscreen();else{if((0,c.addClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.normalHeight=parseFloat(n.height),e.normalWidth=parseFloat(n.width),"native-native"!==e.fullscreenMode&&"plugin-native"!==e.fullscreenMode||(d.requestFullScreen(e.container),e.isInIframe&&setTimeout(function t(){if(e.isNativeFullScreen){var n=o.default.innerWidth||a.default.documentElement.clientWidth||a.default.body.clientWidth,i=screen.width;Math.abs(i-n)>.002*i?e.exitFullScreen():setTimeout(t,500)}},1e3)),e.container.style.width="100%",e.container.style.height="100%",e.containerSizeTimeout=setTimeout(function(){e.container.style.width="100%",e.container.style.height="100%",e.setControlsSize()},500),t)e.node.style.width="100%",e.node.style.height="100%";else for(var i=e.container.querySelectorAll("iframe, embed, object, video"),r=i.length,s=0;s<r;s++)i[s].style.width="100%",i[s].style.height="100%";e.options.setDimensions&&"function"==typeof e.media.setSize&&e.media.setSize(screen.width,screen.height);for(var l=e.layers.childNodes,f=l.length,p=0;p<f;p++)l[p].style.width="100%",l[p].style.height="100%";e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen")),e.setControlsSize(),e.isFullScreen=!0;var m=Math.min(screen.width/e.width,screen.height/e.height),h=e.container.querySelector("."+e.options.classPrefix+"captions-text");h&&(h.style.fontSize=100*m+"%",h.style.lineHeight="normal",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="45px");var v=(0,u.createEvent)("enteredfullscreen",e.container);e.container.dispatchEvent(v)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(clearTimeout(e.containerSizeTimeout),d.HAS_TRUE_NATIVE_FULLSCREEN&&(d.IS_FULLSCREEN||e.isFullScreen)&&d.cancelFullScreen(),(0,c.removeClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.removeClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.container.style.width=e.normalWidth+"px",e.container.style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.container.querySelectorAll("iframe, embed, object, video"),i=n.length,o=0;o<i;o++)n[o].style.width=e.normalWidth+"px",n[o].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.layers.childNodes,s=r.length,l=0;l<s;l++)r[l].style.width=e.normalWidth+"px",r[l].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var f=e.container.querySelector("."+e.options.classPrefix+"captions-text");f&&(f.style.fontSize="",f.style.lineHeight="",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var p=(0,u.createEvent)("exitedfullscreen",e.container);e.container.dispatchEvent(p)}})},{16:16,19:19,2:2,20:20,21:21,3:3,4:4}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(21),d=e(20);Object.assign(a.config,{playText:null,pauseText:null}),Object.assign(r.default.prototype,{buildplaypause:function(e,t,n,i){function a(e){"play"===e?((0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"pause"),m.setAttribute("title",f),m.setAttribute("aria-label",f)):((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"play"),m.setAttribute("title",c),m.setAttribute("aria-label",c))}var r=this,u=r.options,c=(0,l.isString)(u.playText)?u.playText:s.default.t("mejs.play"),f=(0,l.isString)(u.pauseText)?u.pauseText:s.default.t("mejs.pause"),p=o.default.createElement("div");p.className=r.options.classPrefix+"button "+r.options.classPrefix+"playpause-button "+r.options.classPrefix+"play",p.innerHTML='<button type="button" aria-controls="'+r.id+'" title="'+c+'" aria-label="'+f+'" tabindex="0"></button>',p.addEventListener("click",function(){i.paused?i.play():i.pause()});var m=p.querySelector("button");r.addControlElement(p,"playpause"),a("pse"),i.addEventListener("loadedmetadata",function(){-1===i.rendererName.indexOf("flash")&&a("pse")}),i.addEventListener("play",function(){a("play")}),i.addEventListener("playing",function(){a("play")}),i.addEventListener("pause",function(){a("pse")}),i.addEventListener("ended",function(){e.options.loop||((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.addClass)(p,r.options.classPrefix+"replay"),m.setAttribute("title",c),m.setAttribute("aria-label",c))})}})},{16:16,2:2,20:20,21:21,4:4}],10:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(19),d=e(24),u=e(20);Object.assign(a.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(r.default.prototype,{buildprogress:function(e,t,n,i){var a=0,r=!1,c=!1,f=this,p=e.options.autoRewind,m=e.options.enableProgressTooltip?'<span class="'+f.options.classPrefix+'time-float"><span class="'+f.options.classPrefix+'time-float-current">00:00</span><span class="'+f.options.classPrefix+'time-float-corner"></span></span>':"",h=o.default.createElement("div");h.className=f.options.classPrefix+"time-rail",h.innerHTML='<span class="'+f.options.classPrefix+"time-total "+f.options.classPrefix+'time-slider"><span class="'+f.options.classPrefix+'time-buffering"></span><span class="'+f.options.classPrefix+'time-loaded"></span><span class="'+f.options.classPrefix+'time-current"></span><span class="'+f.options.classPrefix+'time-hovered no-hover"></span><span class="'+f.options.classPrefix+'time-handle"><span class="'+f.options.classPrefix+'time-handle-content"></span></span>'+m+"</span>",f.addControlElement(h,"progress"),t.querySelector("."+f.options.classPrefix+"time-buffering").style.display="none",f.rail=t.querySelector("."+f.options.classPrefix+"time-rail"),f.total=t.querySelector("."+f.options.classPrefix+"time-total"),f.loaded=t.querySelector("."+f.options.classPrefix+"time-loaded"),f.current=t.querySelector("."+f.options.classPrefix+"time-current"),f.handle=t.querySelector("."+f.options.classPrefix+"time-handle"),f.timefloat=t.querySelector("."+f.options.classPrefix+"time-float"),f.timefloatcurrent=t.querySelector("."+f.options.classPrefix+"time-float-current"),f.slider=t.querySelector("."+f.options.classPrefix+"time-slider"),f.hovered=t.querySelector("."+f.options.classPrefix+"time-hovered"),f.newTime=0,f.forcedHandlePause=!1,f.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t};var v=function(t){var n=getComputedStyle(f.total),o=(0,u.offset)(f.total),a=parseFloat(n.width),s=function(){return void 0!==n.webkitTransform?"webkitTransform":void 0!==n.mozTransform?"mozTransform ":void 0!==n.oTransform?"oTransform":void 0!==n.msTransform?"msTransform":"transform"}(),c=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),p=0,m=0,h=void 0;if(h=t.originalEvent&&t.originalEvent.changedTouches?t.originalEvent.changedTouches[0].pageX:t.changedTouches?t.changedTouches[0].pageX:t.pageX,i.duration&&(h<o.left?h=o.left:h>a+o.left&&(h=a+o.left),m=h-o.left,p=m/a,f.newTime=p<=.02?0:p*i.duration,r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(f.setCurrentRailHandle(f.newTime),f.updateCurrent(f.newTime)),!l.IS_IOS&&!l.IS_ANDROID&&f.timefloat)){if(m<0&&(m=0),f.options.useSmoothHover&&null!==c&&void 0!==window[c]){var v=new window[c](getComputedStyle(f.handle)[s]).m41,y=m/parseFloat(getComputedStyle(f.total).width)-v/parseFloat(getComputedStyle(f.total).width);f.hovered.style.left=v+"px",f.setTransformStyle(f.hovered,"scaleX("+y+")"),f.hovered.setAttribute("pos",m),y>=0?(0,u.removeClass)(f.hovered,"negative"):(0,u.addClass)(f.hovered,"negative")}f.timefloat.style.left=m+"px",f.timefloatcurrent.innerHTML=(0,d.secondsToTimeCode)(f.newTime,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),f.timefloat.style.display="block"}},y=function(){var t=i.currentTime,n=s.default.t("mejs.time-slider"),o=(0,d.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),a=i.duration;f.slider.setAttribute("role","slider"),f.slider.tabIndex=0,i.paused?(f.slider.setAttribute("aria-label",n),f.slider.setAttribute("aria-valuemin",0),f.slider.setAttribute("aria-valuemax",a),f.slider.setAttribute("aria-valuenow",t),f.slider.setAttribute("aria-valuetext",o)):(f.slider.removeAttribute("aria-label"),f.slider.removeAttribute("aria-valuemin"),f.slider.removeAttribute("aria-valuemax"),f.slider.removeAttribute("aria-valuenow"),f.slider.removeAttribute("aria-valuetext"))},g=function(){new Date-a>=1e3&&i.play()},E=function(){r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(i.setCurrentTime(f.newTime),e.setCurrentRail(),f.updateCurrent(f.newTime)),f.forcedHandlePause&&f.media.play(),f.forcedHandlePause=!1};f.slider.addEventListener("focus",function(){e.options.autoRewind=!1}),f.slider.addEventListener("blur",function(){e.options.autoRewind=p}),f.slider.addEventListener("keydown",function(t){if(new Date-a>=1e3&&(c=i.paused),f.options.keyActions.length){var n=t.which||t.keyCode||0,o=i.duration,r=e.options.defaultSeekForwardInterval(i),s=e.options.defaultSeekBackwardInterval(i),d=i.currentTime;switch(n){case 37:case 40:i.duration!==1/0&&(d-=s);break;case 39:case 38:i.duration!==1/0&&(d+=r);break;case 36:d=0;break;case 35:d=o;break;case 32:return void(l.IS_FIREFOX||(i.paused?i.play():i.pause()));case 13:return void(i.paused?i.play():i.pause());default:return}d=d<0?0:d>=o?o:Math.floor(d),a=new Date,c||i.pause(),d<i.duration&&!c&&setTimeout(g,1100),i.setCurrentTime(d),t.preventDefault(),t.stopPropagation()}});var b=["mousedown","touchstart"];f.slider.addEventListener("dragstart",function(){return!1});for(var S=0,x=b.length;S<x;S++)f.slider.addEventListener(b[S],function(e){if(f.forcedHandlePause=!1,i.duration!==1/0&&(1===e.which||0===e.which)){i.paused||(f.media.pause(),f.forcedHandlePause=!0),r=!0,v(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)f.container.addEventListener(t[n],function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)});f.globalBind("mouseup.dur touchend.dur",function(){E(),r=!1,f.timefloat&&(f.timefloat.style.display="none"),f.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});f.slider.addEventListener("mouseenter",function(e){e.target===f.slider&&i.duration!==1/0&&(f.container.addEventListener("mousemove",function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)}),!f.timefloat||l.IS_IOS||l.IS_ANDROID||(f.timefloat.style.display="block"),f.hovered&&!l.IS_IOS&&!l.IS_ANDROID&&f.options.useSmoothHover&&(0,u.removeClass)(f.hovered,"no-hover"))}),f.slider.addEventListener("mouseleave",function(){i.duration!==1/0&&(r||(f.globalUnbind("mousemove.dur"),f.timefloat&&(f.timefloat.style.display="none"),f.hovered&&f.options.useSmoothHover&&(0,u.addClass)(f.hovered,"no-hover")))}),i.addEventListener("progress",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n);else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),f.slider.style.display="none"}}),i.addEventListener("timeupdate",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n),y();else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),t.querySelector("."+f.options.classPrefix+"time-rail").appendChild(r),f.slider.style.display="none"}}),f.container.addEventListener("controlsresize",function(t){i.duration!==1/0&&(e.setProgressRail(t),f.forcedHandlePause||e.setCurrentRail(t))})},setProgressRail:function(e){var t=this,n=void 0!==e?e.target:t.media,i=null;n&&n.buffered&&n.buffered.length>0&&n.buffered.end&&n.duration?i=n.buffered.end(n.buffered.length-1)/n.duration:n&&void 0!==n.bytesTotal&&n.bytesTotal>0&&void 0!==n.bufferedBytes?i=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(i=e.loaded/e.total),null!==i&&(i=Math.min(1,Math.max(0,i)),t.loaded&&t.total&&t.setTransformStyle(t.loaded,"scaleX("+i+")"))},setCurrentRailHandle:function(e){var t=this;t.setCurrentRailMain(t,e)},setCurrentRail:function(){var e=this;e.setCurrentRailMain(e)},setCurrentRailMain:function(e,t){if(void 0!==e.media.currentTime&&e.media.duration){var n=void 0===t?e.media.currentTime:t;if(e.total&&e.handle){var i=parseFloat(getComputedStyle(e.total).width),o=Math.round(i*n/e.media.duration),a=o-Math.round(e.handle.offsetWidth/2);if(a=a<0?0:a,e.setTransformStyle(e.current,"scaleX("+o/i+")"),e.setTransformStyle(e.handle,"translateX("+a+"px)"),e.options.useSmoothHover&&!(0,u.hasClass)(e.hovered,"no-hover")){var r=parseInt(e.hovered.getAttribute("pos")),s=(r=isNaN(r)?0:r)/i-a/i;e.hovered.style.left=a+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),s>=0?(0,u.removeClass)(e.hovered,"negative"):(0,u.addClass)(e.hovered,"negative")}}}}})},{16:16,19:19,2:2,20:20,24:24,4:4}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=e(24),l=e(20);Object.assign(a.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(r.default.prototype,{buildcurrent:function(e,t,n,i){var a=this,r=o.default.createElement("div");r.className=a.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+a.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"current"),i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateCurrent()})},buildduration:function(e,t,n,i){var a=this;if(t.lastChild.querySelector("."+a.options.classPrefix+"currenttime"))t.querySelector("."+a.options.classPrefix+"time").innerHTML+=a.options.timeAndDurationSeparator+'<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>";else{t.querySelector("."+a.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+a.options.classPrefix+"currenttime").parentNode,a.options.classPrefix+"currenttime-container");var r=o.default.createElement("div");r.className=a.options.classPrefix+"time "+a.options.classPrefix+"duration-container",r.innerHTML='<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"duration")}i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateDuration()})},updateCurrent:function(){var e=this,t=e.media.currentTime;isNaN(t)&&(t=0),e.controls.querySelector("."+e.options.classPrefix+"currenttime")&&(e.controls.querySelector("."+e.options.classPrefix+"currenttime").innerText=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength))},updateDuration:function(){var e=this,t=e.media.duration;(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),e.options.duration>0&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength);n.length>5&&(0,l.toggleClass)(e.container,e.options.classPrefix+"long-video"),e.controls.querySelector("."+e.options.classPrefix+"duration")&&t>0&&(e.controls.querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,20:20,24:24}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=i(e(6)),r=i(e(4)),s=e(16),l=i(s),d=e(24),u=e(21),c=e(20);Object.assign(s.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l.default.prototype,{hasChapters:!1,buildtracks:function(e,t,n,i){if(e.tracks.length||e.trackFiles&&0!==!e.trackFiles.length){var a=this,s=a.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",l=(0,u.isString)(a.options.tracksText)?a.options.tracksText:r.default.t("mejs.captions-subtitles"),d=(0,u.isString)(a.options.chaptersText)?a.options.chaptersText:r.default.t("mejs.captions-chapters"),f=null===e.trackFiles?e.tracks.length:e.trackFiles.length;if(a.domNode.textTracks)for(var p=a.domNode.textTracks.length-1;p>=0;p--)a.domNode.textTracks[p].mode="hidden";a.cleartracks(e),e.captions=o.default.createElement("div"),e.captions.className=a.options.classPrefix+"captions-layer "+a.options.classPrefix+"layer",e.captions.innerHTML='<div class="'+a.options.classPrefix+"captions-position "+a.options.classPrefix+'captions-position-hover"'+s+'><span class="'+a.options.classPrefix+'captions-text"></span></div>',e.captions.style.display="none",n.insertBefore(e.captions,n.firstChild),e.captionsText=e.captions.querySelector("."+a.options.classPrefix+"captions-text"),e.captionsButton=o.default.createElement("div"),e.captionsButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"captions-button",e.captionsButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+l+'" aria-label="'+l+'" tabindex="0"></button><div class="'+a.options.classPrefix+"captions-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'captions-selector-list"><li class="'+a.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+a.options.classPrefix+'captions-selector-input" name="'+e.id+'_captions" id="'+e.id+'_captions_none" value="none" checked disabled><label class="'+a.options.classPrefix+"captions-selector-label "+a.options.classPrefix+'captions-selected" for="'+e.id+'_captions_none">'+r.default.t("mejs.none")+"</label></li></ul></div>",a.addControlElement(e.captionsButton,"tracks"),e.captionsButton.querySelector("."+a.options.classPrefix+"captions-selector-input").disabled=!1,e.chaptersButton=o.default.createElement("div"),e.chaptersButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"chapters-button",e.chaptersButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+d+'" aria-label="'+d+'" tabindex="0"></button><div class="'+a.options.classPrefix+"chapters-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'chapters-selector-list"></ul></div>';for(var m=0,h=0;h<f;h++){var v=e.tracks[h].kind;"subtitles"===v||"captions"===v?m++:"chapters"!==v||t.querySelector("."+a.options.classPrefix+"chapter-selector")||e.captionsButton.parentNode.insertBefore(e.chaptersButton,e.captionsButton)}e.trackToLoad=-1,e.selectedTrack=null,e.isLoadingTrack=!1;for(var y=0;y<f;y++){var g=e.tracks[y].kind;"subtitles"!==g&&"captions"!==g||e.addTrackButton(e.tracks[y].trackId,e.tracks[y].srclang,e.tracks[y].label)}e.loadNextTrack();var E=["mouseenter","focusin"],b=["mouseleave","focusout"];if(a.options.toggleCaptionsButtonWhenOnlyOne&&1===m)e.captionsButton.addEventListener("click",function(){var t="none";null===e.selectedTrack&&(t=e.tracks[0].trackId),e.setTrack(t)});else{for(var S=e.captionsButton.querySelectorAll("."+a.options.classPrefix+"captions-selector-label"),x=e.captionsButton.querySelectorAll("input[type=radio]"),w=0,P=E.length;w<P;w++)e.captionsButton.addEventListener(E[w],function(){(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var T=0,C=b.length;T<C;T++)e.captionsButton.addEventListener(b[T],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var k=0,N=x.length;k<N;k++)x[k].addEventListener("click",function(){e.setTrack(this.value)});for(var A=0,_=S.length;A<_;A++)S[A].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)});e.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var F=0,L=E.length;F<L;F++)e.chaptersButton.addEventListener(E[F],function(){this.querySelector("."+a.options.classPrefix+"chapters-selector-list").childNodes.length&&(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});for(var j=0,M=b.length;j<M;j++)e.chaptersButton.addEventListener(b[j],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});e.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),e.options.alwaysShowControls?(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover"):(e.container.addEventListener("controlsshown",function(){(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")}),e.container.addEventListener("controlshidden",function(){i.paused||(0,c.removeClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")})),i.addEventListener("timeupdate",function(){e.displayCaptions()}),""!==e.options.slidesSelector&&(e.slidesContainer=o.default.querySelectorAll(e.options.slidesSelector),i.addEventListener("timeupdate",function(){e.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.controls,e.layers,e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var i=0;i<n;i++){var o=t[i],a=o.getAttribute("srclang").toLowerCase()||"",r=e.id+"_track_"+i+"_"+o.getAttribute("kind")+"_"+a;e.tracks.push({trackId:r,srclang:a,src:o.getAttribute("src"),kind:o.getAttribute("kind"),label:o.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e){for(var t=this,n=t.captionsButton.querySelectorAll('input[type="radio"]'),i=t.captionsButton.querySelectorAll("."+t.options.classPrefix+"captions-selected"),o=t.captionsButton.querySelector('input[value="'+e+'"]'),a=0,r=n.length;a<r;a++)n[a].checked=!1;for(var s=0,l=i.length;s<l;s++)(0,c.removeClass)(i[s],t.options.classPrefix+"captions-selected");o.checked=!0;for(var d=(0,c.siblings)(o,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),f=0,p=d.length;f<p;f++)(0,c.addClass)(d[f],t.options.classPrefix+"captions-selected");if("none"===e)t.selectedTrack=null,(0,c.removeClass)(t.captionsButton,t.options.classPrefix+"captions-enabled");else for(var m=0,h=t.tracks.length;m<h;m++){var v=t.tracks[m];if(v.trackId===e){null===t.selectedTrack&&(0,c.addClass)(t.captionsButton,t.options.classPrefix+"captions-enabled"),t.selectedTrack=v,t.captions.setAttribute("lang",t.selectedTrack.srclang),t.displayCaptions();break}}var y=(0,u.createEvent)("captionschange",t.media);y.detail.caption=t.selectedTrack,t.media.dispatchEvent(y)},loadNextTrack:function(){var e=this;++e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,c.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?a.default.TrackFormatParser.dfxp.parse(e):a.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,i=o.default.getElementById(""+e.trackId);if(i){var s=e.label;""===s&&(s=r.default.t(a.default.language.codes[n])||n),i.disabled=!1;for(var l=(0,c.siblings)(i,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),d=0,f=l.length;d<f;d++)l[d].innerHTML=s;if(t.options.startLanguage===n){i.checked=!0;var p=(0,u.createEvent)("click",i);i.dispatchEvent(p)}}},removeTrackButton:function(e){var t=o.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var i=this;""===n&&(n=r.default.t(a.default.language.codes[t])||t),i.captionsButton.querySelector("ul").innerHTML+='<li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+i.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+i.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,i=e.tracks.length;n<i;n++){var o=e.tracks[n].kind;if(("subtitles"===o||"captions"===o)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(n>-1)return e.captionsText.innerHTML=function(e){var t=o.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),i=n.length;i--;)n[i].remove();for(var a=t.getElementsByTagName("*"),r=0,s=a.length;r<s;r++)for(var l=a[r].attributes,d=Array.prototype.slice.call(l),u=0,c=d.length;u<c;u++)d[u].name.startsWith("on")||d[u].value.startsWith("javascript")?a[r].remove():"style"===d[u].name&&a[r].removeAttribute(d[u].name);return t.innerHTML}(t.entries[n].text),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px");e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){var t=this;t.slides=e,t.slides.entries.imgs=[t.slides.entries.length],t.showSlide(0)},showSlide:function(e){var t=this,n=this;if(void 0!==n.tracks&&void 0!==n.slidesContainer){var i=n.slides.entries[e].text,a=n.slides.entries[e].imgs;if(void 0===a||void 0===a.fadeIn){var r=o.default.createElement("img");r.src=i,r.addEventListener("load",function(){var e=t,i=(0,c.siblings)(e,function(e){return i(e)});e.style.display="none",n.slidesContainer.innerHTML+=e.innerHTML,(0,c.fadeIn)(n.slidesContainer.querySelector(r));for(var o=0,a=i.length;o<a;o++)(0,c.fadeOut)(i[o],400)}),n.slides.entries[e].imgs=a=r}else if(!(0,c.visible)(a)){var s=(0,c.siblings)(self,function(e){return s(e)});(0,c.fadeIn)(n.slidesContainer.querySelector(a));for(var l=0,d=s.length;l<d;l++)(0,c.fadeOut)(s[l])}}},displaySlides:function(){var e=this;if(void 0!==this.slides){var t=e.slides,n=e.searchTrackPosition(t.entries,e.media.currentTime);n>-1&&e.showSlide(n)}},drawChapters:function(e){var t=this,n=e.entries.length;if(n){t.chaptersButton.querySelector("ul").innerHTML="";for(var i=0;i<n;i++)t.chaptersButton.querySelector("ul").innerHTML+='<li class="'+t.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false"><input type="radio" class="'+t.options.classPrefix+'captions-selector-input" name="'+t.id+'_chapters" id="'+t.id+"_chapters_"+i+'" value="'+e.entries[i].start+'" disabled><label class="'+t.options.classPrefix+'chapters-selector-label"for="'+t.id+"_chapters_"+i+'">'+e.entries[i].text+"</label></li>";for(var o=t.chaptersButton.querySelectorAll('input[type="radio"]'),a=t.chaptersButton.querySelectorAll("."+t.options.classPrefix+"chapters-selector-label"),r=0,s=o.length;r<s;r++)o[r].disabled=!1,o[r].checked=!1,o[r].addEventListener("click",function(){var e=this,n=t.chaptersButton.querySelectorAll("li"),i=(0,c.siblings)(e,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"chapters-selector-label")})[0];e.checked=!0,e.parentNode.setAttribute("aria-checked",!0),(0,c.addClass)(i,t.options.classPrefix+"chapters-selected"),(0,c.removeClass)(t.chaptersButton.querySelector("."+t.options.classPrefix+"chapters-selected"),t.options.classPrefix+"chapters-selected");for(var o=0,a=n.length;o<a;o++)n[o].setAttribute("aria-checked",!1);t.media.setCurrentTime(parseFloat(e.value)),t.media.paused&&t.media.play()});for(var l=0,d=a.length;l<d;l++)a[l].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)})}},searchTrackPosition:function(e,t){for(var n=0,i=e.length-1,o=void 0,a=void 0,r=void 0;n<=i;){if(o=n+i>>1,a=e[o].start,r=e[o].stop,t>=a&&t<r)return o;a<t?n=o+1:a>t&&(i=o-1)}return-1}}),a.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},a.default.TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],i=void 0,o=void 0,a=void 0,r=0,s=t.length;r<s;r++){if((i=this.pattern.exec(t[r]))&&r<t.length){for(r-1>=0&&""!==t[r-1]&&(a=t[r-1]),o=t[++r],r++;""!==t[r]&&r<t.length;)o=o+"\n"+t[r],r++;o=o.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:a,start:0===(0,d.convertSMPTEtoSeconds)(i[1])?.2:(0,d.convertSMPTEtoSeconds)(i[1]),stop:(0,d.convertSMPTEtoSeconds)(i[3]),text:o,settings:i[5]})}a=""}return n}},dfxp:{parse:function(e){var t=(e=$(e).filter("tt")).firstChild,n=t.querySelectorAll("p"),i=e.getElementById(""+t.attr("style")),o=[],a=void 0;if(i.length){i.removeAttribute("id");var r=i.attributes;if(r.length){a={};for(var s=0,l=r.length;s<l;s++)a[r[s].name.split(":")[1]]=r[s].value}}for(var u=0,c=n.length;u<c;u++){var f=void 0,p={start:null,stop:null,style:null,text:null};if(n.eq(u).attr("begin")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("begin"))),!p.start&&n.eq(u-1).attr("end")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u-1).attr("end"))),n.eq(u).attr("end")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("end"))),!p.stop&&n.eq(u+1).attr("begin")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u+1).attr("begin"))),a){f="";for(var m in a)f+=m+":"+a[m]+";"}f&&(p.style=f),0===p.start&&(p.start=.2),p.text=n.eq(u).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),o.push(p)}return o}}}},{16:16,2:2,20:20,21:21,24:24,4:4,6:6}],13:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(19),d=e(21),u=e(20);Object.assign(a.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(r.default.prototype,{buildvolume:function(e,t,n,i){if(!l.IS_ANDROID&&!l.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,r=a.isVideo?a.options.videoVolume:a.options.audioVolume,c=(0,d.isString)(a.options.muteText)?a.options.muteText:s.default.t("mejs.mute"),f=(0,d.isString)(a.options.unmuteText)?a.options.unmuteText:s.default.t("mejs.unmute"),p=(0,d.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:s.default.t("mejs.volume-help-text"),m=o.default.createElement("div");if(m.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",m.innerHTML="horizontal"===r?'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+s.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(m,"volume"),"horizontal"===r){var h=o.default.createElement("a");h.className=a.options.classPrefix+"horizontal-volume-slider",h.href="javascript:void(0);",h.setAttribute("aria-label",s.default.t("mejs.volume-slider")),h.setAttribute("aria-valuemin",0),h.setAttribute("aria-valuemax",100),h.setAttribute("role","slider"),h.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',m.parentNode.insertBefore(h,m.nextSibling)}var v=!1,y=!1,g=function(){var e=Math.floor(100*i.volume);E.setAttribute("aria-valuenow",e),E.setAttribute("aria-valuetext",e+"%")},E="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-slider"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),b="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-total"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-total"),S="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-current"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-current"),x="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-handle"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),w=function(e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute");var t=m.firstElementChild;t.setAttribute("title",f),t.setAttribute("aria-label",f)}else{(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute");var n=m.firstElementChild;n.setAttribute("title",c),n.setAttribute("aria-label",c)}var i=100*e+"%",o=getComputedStyle(x);"vertical"===r?(S.style.bottom=0,S.style.height=i,x.style.bottom=i,x.style.marginBottom=-parseFloat(o.height)/2+"px"):(S.style.left=0,S.style.width=i,x.style.left=i,x.style.marginLeft=-parseFloat(o.width)/2+"px")},P=function(e){var t=(0,u.offset)(b),n=getComputedStyle(b),o=null;if("vertical"===r){var a=parseFloat(n.height);if(o=(a-(e.pageY-t.top))/a,0===t.top||0===t.left)return}else{var s=parseFloat(n.width);o=(e.pageX-t.left)/s}o=Math.max(0,o),o=Math.min(o,1),w(o),0===o?i.setMuted(!0):i.setMuted(!1),i.setVolume(o),e.preventDefault(),e.stopPropagation()};m.addEventListener("mouseenter",function(e){e.target===m&&(E.style.display="block",y=!0,e.preventDefault(),e.stopPropagation())}),m.addEventListener("focusin",function(){E.style.display="block",y=!0}),m.addEventListener("focusout",function(e){e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider")||"vertical"!==r||(E.style.display="none")}),m.addEventListener("mouseleave",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),m.addEventListener("focusout",function(){y=!1}),m.addEventListener("keydown",function(e){if(a.options.keyActions.length){var t=e.which||e.keyCode||0,n=i.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}v=!1,w(n),i.setVolume(n),e.preventDefault(),e.stopPropagation()}}),m.querySelector("button").addEventListener("click",function(){i.setMuted(!i.muted);var e=(0,d.createEvent)("volumechange",i);i.dispatchEvent(e)}),E.addEventListener("dragstart",function(){return!1}),E.addEventListener("mouseover",function(){y=!0}),E.addEventListener("focusin",function(){E.style.display="block",y=!0}),E.addEventListener("focusout",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),E.addEventListener("mousedown",function(e){P(e),a.globalBind("mousemove.vol",function(e){var t=e.target;v&&(t===E||t.closest("vertical"===r?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&P(e)}),a.globalBind("mouseup.vol",function(){v=!1,a.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==r||(E.style.display="none")}),v=!0,e.preventDefault(),e.stopPropagation()}),i.addEventListener("volumechange",function(e){v||(i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))),g()}),0===e.options.startVolume&&i.setMuted(!0),i.setVolume(e.options.startVolume),a.container.addEventListener("controlsresize",function(){i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))})}}})},{16:16,19:19,2:2,20:20,21:21,4:4}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6));"undefined"!=typeof jQuery?a.default.$=o.default.jQuery=o.default.$=jQuery:"undefined"!=typeof Zepto?a.default.$=o.default.Zepto=o.default.$=Zepto:"undefined"!=typeof ender&&(a.default.$=o.default.ender=o.default.$=ender)},{3:3,6:6}],16:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=i(e(3)),l=i(e(2)),d=i(e(6)),u=i(e(5)),c=i(e(4)),f=e(19),p=e(21),m=e(24),h=e(22),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(20));d.default.mepIndex=0,d.default.players={};var y=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.duration},defaultSeekForwardInterval:function(e){return.05*e.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(e,t){f.IS_FIREFOX||(t.paused||t.ended?t.play():t.pause())}},{keys:[38],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.volume+.1,1);t.setVolume(n),n>0&&t.setMuted(!1)}},{keys:[40],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.volume-.1,0);t.setVolume(n),n<=.1&&t.setMuted(!0)}},{keys:[37,227],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.currentTime-e.options.defaultSeekBackwardInterval(t),0);t.setCurrentTime(n)}}},{keys:[39,228],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.currentTime+e.options.defaultSeekForwardInterval(t),t.duration);t.setCurrentTime(n)}}},{keys:[70],action:function(e,t,n,i){i.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}},{keys:[77],action:function(e){e.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}]};d.default.MepDefaults=y;var g=function(){function e(t,n){o(this,e);var i=this,a="string"==typeof t?l.default.getElementById(t):t;if(i.hasFocus=!1,i.controlsAreVisible=!0,i.controlsEnabled=!0,i.controlsTimer=null,!(i instanceof e))return new e(a,n);if(i.node=i.media=a,i.node){if(void 0!==i.media.player)return i.media.player;if(void 0===n){var r=i.node.getAttribute("data-mejsoptions");n=r?JSON.parse(r):{}}i.options=Object.assign({},y,n),i.options.timeFormat||(i.options.timeFormat="mm:ss",i.options.alwaysShowHours&&(i.options.timeFormat="hh:mm:ss"),i.options.showTimecodeFrameCount&&(i.options.timeFormat+=":ff")),(0,m.calculateTimeFormat)(0,i.options,i.options.framesPerSecond||25),i.id="mep_"+d.default.mepIndex++,d.default.players[i.id]=i;var s=Object.assign({},i.options,{success:function(e,t){i._meReady(e,t)},error:function(e){i._handleError(e)}}),g=i.node.tagName.toLowerCase();if(i.isDynamic="audio"!==g&&"video"!==g,i.isVideo=i.isDynamic?i.options.isVideo:"audio"!==g&&i.options.isVideo,i.mediaFiles=null,i.trackFiles=null,f.IS_IPAD&&i.options.iPadUseNativeControls||f.IS_IPHONE&&i.options.iPhoneUseNativeControls)i.node.setAttribute("controls",!0),f.IS_IPAD&&i.node.getAttribute("autoplay")&&i.play();else if(!(i.isVideo||!i.isVideo&&i.options.features.length)||f.IS_ANDROID&&i.options.AndroidUseNativeControls)i.isVideo||i.options.features.length||(i.node.style.display="none");else{i.node.removeAttribute("controls");var E=i.isVideo?c.default.t("mejs.video-player"):c.default.t("mejs.audio-player"),b=l.default.createElement("span");if(b.className=i.options.classPrefix+"offscreen",b.innerText=E,i.media.parentNode.insertBefore(b,i.media),i.container=l.default.createElement("div"),i.container.id=i.id,i.container.className=i.options.classPrefix+"container "+i.options.classPrefix+"container-keyboard-inactive "+i.media.className,i.container.tabIndex=0,i.container.setAttribute("role","application"),i.container.setAttribute("aria-label",E),i.container.innerHTML='<div class="'+i.options.classPrefix+'inner"><div class="'+i.options.classPrefix+'mediaelement"></div><div class="'+i.options.classPrefix+'layers"></div><div class="'+i.options.classPrefix+'controls"></div><div class="'+i.options.classPrefix+'clear"></div></div>',i.container.addEventListener("focus",function(e){if(!i.controlsAreVisible&&!i.hasFocus&&i.controlsEnabled){i.showControls(!0);var t=(0,p.isNodeAfter)(e.relatedTarget,i.container)?"."+i.options.classPrefix+"controls ."+i.options.classPrefix+"button:last-child > button":"."+i.options.classPrefix+"playpause-button > button";i.container.querySelector(t).focus()}}),i.node.parentNode.insertBefore(i.container,i.node),i.options.features.length||(i.container.style.background="transparent",i.container.querySelector("."+i.options.classPrefix+"controls").style.display="none"),i.isVideo&&"fill"===i.options.stretching&&!v.hasClass(i.container.parentNode,i.options.classPrefix+"fill-container")){i.outerContainer=i.media.parentNode;var S=l.default.createElement("div");S.className=i.options.classPrefix+"fill-container",i.container.parentNode.insertBefore(S,i.container),S.appendChild(i.container)}if(f.IS_ANDROID&&v.addClass(i.container,i.options.classPrefix+"android"),f.IS_IOS&&v.addClass(i.container,i.options.classPrefix+"ios"),f.IS_IPAD&&v.addClass(i.container,i.options.classPrefix+"ipad"),f.IS_IPHONE&&v.addClass(i.container,i.options.classPrefix+"iphone"),v.addClass(i.container,i.isVideo?i.options.classPrefix+"video":i.options.classPrefix+"audio"),f.IS_SAFARI&&!f.IS_IOS){v.addClass(i.container,i.options.classPrefix+"hide-cues");for(var x=i.node.cloneNode(),w=i.node.childNodes,P=[],T=[],C=0,k=w.length;C<k;C++){var N=w[C];N&&N.nodeType!==Node.TEXT_NODE&&function(){switch(N.tagName.toLowerCase()){case"source":var e={};Array.prototype.slice.call(N.attributes).forEach(function(t){e[t.name]=t.value}),e.type=(0,h.formatType)(e.src,e.type),P.push(e);break;case"track":N.mode="hidden",T.push(N);break;default:x.appendChild(N)}}()}i.node.remove(),i.node=i.media=x,P.length&&(i.mediaFiles=P),T.length&&(i.trackFiles=T)}i.container.querySelector("."+i.options.classPrefix+"mediaelement").appendChild(i.node),i.media.player=i,i.controls=i.container.querySelector("."+i.options.classPrefix+"controls"),i.layers=i.container.querySelector("."+i.options.classPrefix+"layers");var A=i.isVideo?"video":"audio",_=A.substring(0,1).toUpperCase()+A.substring(1);i.options[A+"Width"]>0||i.options[A+"Width"].toString().indexOf("%")>-1?i.width=i.options[A+"Width"]:""!==i.node.style.width&&null!==i.node.style.width?i.width=i.node.style.width:i.node.getAttribute("width")?i.width=i.node.getAttribute("width"):i.width=i.options["default"+_+"Width"],i.options[A+"Height"]>0||i.options[A+"Height"].toString().indexOf("%")>-1?i.height=i.options[A+"Height"]:""!==i.node.style.height&&null!==i.node.style.height?i.height=i.node.style.height:i.node.getAttribute("height")?i.height=i.node.getAttribute("height"):i.height=i.options["default"+_+"Height"],i.initialAspectRatio=i.height>=i.width?i.width/i.height:i.height/i.width,i.setPlayerSize(i.width,i.height),s.pluginWidth=i.width,s.pluginHeight=i.height}if(new u.default(i.media,s,i.mediaFiles),void 0!==i.container&&i.options.features.length&&i.controlsAreVisible&&!i.options.hideVideoControlsOnLoad){var F=(0,p.createEvent)("controlsshown",i.container);i.container.dispatchEvent(F)}return i}}return r(e,[{key:"showControls",value:function(e){var t=this;if(e=void 0===e||e,!t.controlsAreVisible&&t.isVideo){if(e)!function(){v.removeClass(t.controls,t.options.classPrefix+"offscreen"),v.fadeIn(t.controls,200,function(){var e=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(e)});for(var e=t.container.querySelectorAll("."+t.options.classPrefix+"control"),n=0,i=e.length;n<i;n++)!function(n,i){v.fadeIn(e[n],200,function(){v.removeClass(e[n],t.options.classPrefix+"offscreen")})}(n)}();else{v.removeClass(t.controls,t.options.classPrefix+"offscreen"),t.controls.style.display="",t.controls.style.opacity=1;for(var n=t.container.querySelectorAll("."+t.options.classPrefix+"control"),i=0,o=n.length;i<o;i++)v.removeClass(n[i],t.options.classPrefix+"offscreen"),n[i].style.display="";var a=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(a)}t.controlsAreVisible=!0,t.setControlsSize()}}},{key:"hideControls",value:function(e,t){var n=this;if(e=void 0===e||e,!0===t||!(!n.controlsAreVisible||n.options.alwaysShowControls||n.keyboardAction||n.media.paused&&4===n.media.readyState&&(!n.options.hideVideoControlsOnLoad&&n.media.currentTime<=0||!n.options.hideVideoControlsOnPause&&n.media.currentTime>0)||n.isVideo&&!n.options.hideVideoControlsOnLoad&&!n.media.readyState||n.media.ended)){if(e)!function(){v.fadeOut(n.controls,200,function(){v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="";var e=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(e)});for(var e=n.container.querySelectorAll("."+n.options.classPrefix+"control"),t=0,i=e.length;t<i;t++)!function(t,i){v.fadeOut(e[t],200,function(){v.addClass(e[t],n.options.classPrefix+"offscreen"),e[t].style.display=""})}(t)}();else{v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="",n.controls.style.opacity=0;for(var i=n.container.querySelectorAll("."+n.options.classPrefix+"control"),o=0,a=i.length;o<a;o++)v.addClass(i[o],n.options.classPrefix+"offscreen"),i[o].style.display="";var r=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(r)}n.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){var e=this;null!==e.controlsTimer&&(clearTimeout(e.controlsTimer),delete e.controlsTimer,e.controlsTimer=null)}},{key:"disableControls",value:function(){var e=this;e.killControlsTimer(),e.controlsEnabled=!0,e.hideControls(!1,!0)}},{key:"enableControls",value:function(){var e=this;e.controlsEnabled=!0,e.showControls(!1)}},{key:"_meReady",value:function(e,t){var n=this,i=t.getAttribute("autoplay"),o=!(void 0===i||null===i||"false"===i),a=null!==e.rendererName&&/(native|html5)/i.test(n.media.rendererName);if(n.controls&&n.enableControls(),n.container&&n.container.querySelector("."+n.options.classPrefix+"overlay-play")&&(n.container.querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(f.IS_ANDROID&&n.options.AndroidUseNativeControls||f.IS_IPAD&&n.options.iPadUseNativeControls||f.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length)return o&&a&&n.play(),void(n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));n.buildposter(n,n.controls,n.layers,n.media),n.buildkeyboard(n,n.controls,n.layers,n.media),n.buildoverlays(n,n.controls,n.layers,n.media),n.findTracks(),n.featurePosition={};for(var r=0,u=n.options.features.length;r<u;r++){var c=n.options.features[r];if(n["build"+c])try{n["build"+c](n,n.controls,n.layers,n.media)}catch(e){console.error("error building "+c,e)}}var h=(0,p.createEvent)("controlsready",n.container);n.container.dispatchEvent(h),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.media.paused&&t?n.pause():n.media.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t)}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!f.IS_ANDROID&&!f.IS_IOS||n.options.alwaysShowControls?(n.container.addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.container.addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.container.addEventListener("mouseleave",function(){n.controlsEnabled&&(n.media.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),o&&!n.options.alwaysShowControls&&n.hideControls(),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&null!==e.target&&!isNaN(e.target.videoHeight)&&(n.setPlayerSize(e.target.videoWidth,e.target.videoHeight),n.setControlsSize(),n.media.setSize(e.target.videoWidth,e.target.videoHeight))})),n.media.addEventListener("play",function(){n.hasFocus=!0;for(var e in d.default.players)if(d.default.players.hasOwnProperty(e)){var t=d.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||(t.pause(),t.hasFocus=!1)}}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.media.setCurrentTime(0),setTimeout(function(){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.stop?n.media.stop():n.media.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,m.calculateTimeFormat)(n.duration,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var y=null;n.media.addEventListener("timeupdate",function(){y!==n.media.duration&&(y=n.media.duration,(0,m.calculateTimeFormat)(y,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.container.addEventListener("click",function(e){v.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.container.addEventListener("focusin",function(e){v.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),n.controlsEnabled&&!n.options.alwaysShowControls&&n.showControls(!1)}),n.container.addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,n.isVideo&&!n.options.alwaysShowControls&&n.hideControls(!0))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalBind("resize",function(){n.isFullScreen||f.HAS_TRUE_NATIVE_FULLSCREEN&&l.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()})}o&&a&&n.play(),n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e){var t=this;t.controls&&t.disableControls();var n=t.layers.querySelector("."+t.options.classPrefix+"overlay-play");n&&(n.style.display="none"),t.options.error&&t.options.error(e)}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var e=this,t=function(){for(var t=void 0,n=e.container;n;){try{if(f.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&s.default.self!==s.default.top&&null!==s.default.frameElement)return s.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&v.visible(t))return t;n=t}return null}(),n=t?getComputedStyle(t,null):getComputedStyle(l.default.body,null),i=function(){return e.isVideo?e.media.videoWidth&&e.media.videoWidth>0?e.media.videoWidth:e.node.getAttribute("width")?e.node.getAttribute("width"):e.options.defaultVideoWidth:e.options.defaultAudioWidth}(),o=function(){return e.isVideo?e.media.videoHeight&&e.media.videoHeight>0?e.media.videoHeight:e.node.getAttribute("height")?e.node.getAttribute("height"):e.options.defaultVideoHeight:e.options.defaultAudioHeight}(),a=function(){var t=1;return e.isVideo?(t=e.media.videoWidth&&e.media.videoWidth>0&&e.media.videoHeight&&e.media.videoHeight>0?e.height>=e.width?e.media.videoWidth/e.media.videoHeight:e.media.videoHeight/e.media.videoWidth:e.initialAspectRatio,(isNaN(t)||t<.01||t>100)&&(t=1),t):t}(),r=parseFloat(n.height),d=void 0,u=parseFloat(n.width);if(d=e.isVideo?"100%"===e.height?parseFloat(u*o/i,10):e.height>=e.width?parseFloat(u/a,10):parseFloat(u*a,10):o,isNaN(d)&&(d=r),e.container.parentNode.length>0&&"body"===e.container.parentNode.tagName.toLowerCase()&&(u=s.default.innerWidth||l.default.documentElement.clientWidth||l.default.body.clientWidth,d=s.default.innerHeight||l.default.documentElement.clientHeight||l.default.body.clientHeight),d&&u){e.container.style.width=u+"px",e.container.style.height=d+"px",e.node.style.width="100%",e.node.style.height="100%",e.isVideo&&e.media.setSize&&e.media.setSize(u,d);for(var c=e.layers.childNodes,p=0,m=c.length;p<m;p++)c[p].style.width="100%",c[p].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=void 0,n=!1;try{s.default.self!==s.default.top?(n=!0,t=s.default.frameElement):t=e.outerContainer}catch(n){t=e.outerContainer}var i=getComputedStyle(t);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),n||parseFloat(i.width)||(t.style.width=e.media.offsetWidth+"px"),n||parseFloat(i.height)||(t.style.height=e.media.offsetHeight+"px"),i=getComputedStyle(t);var o=parseFloat(i.width),a=parseFloat(i.height);e.setDimensions("100%","100%");var r=e.container.querySelector(e.options.classPrefix+"poster img");r&&(r.style.display="");for(var l=e.container.querySelectorAll("object, embed, iframe, video"),d=e.height,u=e.width,c=o,f=d*o/u,p=u*a/d,m=a,h=p>o==!1,v=h?Math.floor(c):Math.floor(p),y=h?Math.floor(f):Math.floor(m),g=h?o+"px":v+"px",E=h?y+"px":a+"px",b=0,S=l.length;b<S;b++)l[b].style.height=E,l[b].style.width=g,e.media.setSize&&e.media.setSize(g,E),l[b].style.marginLeft=Math.floor((o-v)/2)+"px",l[b].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,p.isString)(e)&&e.indexOf("%")>-1?e:parseFloat(e)+"px",t=(0,p.isString)(t)&&t.indexOf("%")>-1?t:parseFloat(t)+"px",n.container.style.width=e,n.container.style.height=t;for(var i=n.layers.childNodes,o=0,a=i.length;o<a;o++)i[o].style.width=e,i[o].style.height=t}},{key:"setControlsSize",value:function(){var e=this;if(v.visible(e.container)&&e.rail&&v.visible(e.rail)){for(var t=getComputedStyle(e.rail),n=getComputedStyle(e.total),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),o=parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=0,r=v.siblings(e.rail,function(t){return t!==e.rail}),s=r.length,l=0;l<s;l++)a+=r[l].offsetWidth;a+=o+(0===o?2*i:i)+1;var d=parseFloat(e.controls.offsetWidth);e.rail.style.width=(a>d?0:d-a)+"px";var u=(0,p.createEvent)("controlsresize",e.container);e.container.dispatchEvent(u)}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var i=n.controls.childNodes[n.featurePosition[t]-1];i.parentNode.insertBefore(e,i.nextSibling)}else{n.controls.appendChild(e);for(var o=n.controls.childNodes,a=0,r=o.length;a<r;a++)if(e==o[a]){n.featurePosition[t]=a;break}}}},{key:"createIframeLayer",value:function(){var e=this;if(e.isVideo&&null!==e.media.rendererName&&e.media.rendererName.indexOf("iframe")>-1&&!l.default.getElementById(e.media.id+"-iframe-overlay")){var t=l.default.createElement("div"),n=l.default.getElementById(e.media.id+"_"+e.media.rendererName);t.id=e.media.id+"-iframe-overlay",t.className=e.options.classPrefix+"iframe-overlay",t.addEventListener("click",function(t){e.options.clickToPlayPause&&(e.media.paused?e.media.play():e.media.pause(),t.preventDefault(),t.stopPropagation())}),n.parentNode.insertBefore(t,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this,n=t.container.querySelector("."+t.options.classPrefix+"poster"),i=n.querySelector("img");i||((i=l.default.createElement("img")).className=t.options.classPrefix+"poster-img",i.width="100%",i.height="100%",n.appendChild(i)),i.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")'}},{key:"changeSkin",value:function(e){var t=this;t.container.className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.addEventListener(n,t,!1),n},"");if(e.w)for(var d=e.w.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.addEventListener(n,t,!1),n},"")}},{key:"globalUnbind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.removeEventListener(n,t,!1),n},"");if(e.w)for(var d=e.d.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.removeEventListener(n,t,!1),n},"")}},{key:"buildposter",value:function(e,t,n,i){var o=this,a=l.default.createElement("div");a.className=o.options.classPrefix+"poster "+o.options.classPrefix+"layer",n.appendChild(a);var r=e.media.getAttribute("poster");""!==e.options.poster&&(r=e.options.poster),r?o.setPoster(r):a.style.display="none",i.addEventListener("play",function(){a.style.display="none"}),i.addEventListener("playing",function(){a.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&i.addEventListener("ended",function(){a.style.display=""}),i.addEventListener("error",function(){a.style.display="none"}),e.options.showPosterWhenPaused&&i.addEventListener("pause",function(){i.ended||(a.style.display="")})}},{key:"buildoverlays",value:function(e,t,n,i){if(e.isVideo){var o=this,a=l.default.createElement("div"),r=l.default.createElement("div"),s=l.default.createElement("div"),d=t.querySelector("."+o.options.classPrefix+"time-buffering");a.style.display="none",a.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",a.innerHTML='<div class="'+o.options.classPrefix+'overlay-loading"><span class="'+o.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(a),r.style.display="none",r.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",r.innerHTML='<div class="'+o.options.classPrefix+'overlay-error"></div>',n.appendChild(r),s.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer "+o.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+o.options.classPrefix+'overlay-button" role="button" tabindex="0"aria-label="'+c.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(o.options.clickToPlayPause){var e=o.container.querySelector("."+o.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t)}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||f.IS_FIREFOX&&32===t){var n=(0,p.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==o.media.rendererName&&(/(youtube|facebook)/i.test(o.media.rendererName)&&!e.media.originalNode.getAttribute("poster")&&!e.options.poster||f.IS_STOCK_ANDROID)&&(s.style.display="none"),i.addEventListener("play",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("playing",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("seeking",function(){s.style.display="none",a.style.display="",d&&(d.style.display="")}),i.addEventListener("seeked",function(){s.style.display=i.paused&&!f.IS_STOCK_ANDROID?"":"none",a.style.display="none",d&&(d.style.display="")}),i.addEventListener("pause",function(){a.style.display="none",f.IS_STOCK_ANDROID||(s.style.display=""),d&&(d.style.display="none")}),i.addEventListener("waiting",function(){a.style.display="",d&&(d.style.display="")}),i.addEventListener("loadeddata",function(){a.style.display="",d&&(d.style.display=""),f.IS_ANDROID&&(i.canplayTimeout=setTimeout(function(){if(l.default.createEvent){var e=l.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),i.dispatchEvent(e)}},300))}),i.addEventListener("canplay",function(){a.style.display="none",d&&(d.style.display="none"),clearTimeout(i.canplayTimeout)}),i.addEventListener("error",function(e){o._handleError(e),a.style.display="none",s.style.display="none",d&&(d.style.display="none"),e.message&&(r.style.display="block",r.querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=e.message)}),i.addEventListener("keydown",function(t){o.onkeydown(e,i,t)})}}},{key:"buildkeyboard",value:function(e,t,n,i){var o=this;o.container.addEventListener("keydown",function(){o.keyboardAction=!0}),o.globalBind("keydown",function(t){var n=l.default.activeElement.closest("."+o.options.classPrefix+"container"),a=o.media.closest("."+o.options.classPrefix+"container");return o.hasFocus=!(!n||!a||n.id!==a.id),o.onkeydown(e,i,t)}),o.globalBind("click",function(e){o.hasFocus=!!e.target.closest("."+o.options.classPrefix+"container")})}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var i=0,o=e.options.keyActions.length;i<o;i++)for(var a=e.options.keyActions[i],r=0,s=a.keys.length;r<s;r++)n.keyCode===a.keys[r]&&(a.action(e,t,n.keyCode,n),n.preventDefault(),n.stopPropagation());return!0}},{key:"play",value:function(){var e=this;e.media.getCurrentTime()<=0&&e.load(),e.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(e){}}},{key:"load",value:function(){var e=this;e.isLoaded||e.media.load(),e.isLoaded=!0}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(e){var t=this,n=l.default.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer()}},{key:"remove",value:function(){var e=this,t=e.media.rendererName;e.media.paused||e.media.pause();var n=e.media.getSrc();e.media.setSrc("");for(var i in e.options.features){var o=e.options.features[i];if(e["clean"+o])try{e["clean"+o](e)}catch(e){console.error("error cleaning "+o,e)}}var r=e.node.getAttribute("width"),s=e.node.getAttribute("height");r?-1===r.indexOf("%")&&(r+="px"):r="auto",s?-1===s.indexOf("%")&&(s+="px"):s="auto",e.node.style.width=r,e.node.style.height=s,e.isDynamic?e.container.parentNode.insertBefore(e.node,e.container):function(){e.node.setAttribute("controls",!0),e.node.setAttribute("id",e.node.getAttribute("id").replace("_"+t,"").replace("_from_mejs","")),delete e.node.autoplay,""!==e.media.canPlayType((0,h.getTypeFromFile)(n))&&e.node.setAttribute("src",n),~t.indexOf("iframe")&&l.default.getElementById(e.media.id+"-iframe-overlay").remove();var i=e.node.cloneNode();if(i.style.display="",e.container.parentNode.insertBefore(i,e.container),e.node.remove(),e.mediaFiles)for(var o=0,a=e.mediaFiles.length;o<a;o++){var r=l.default.createElement("source");r.setAttribute("src",e.mediaFiles[o].src),r.setAttribute("type",e.mediaFiles[o].type),i.appendChild(r)}if(e.trackFiles)for(var s=0,d=e.trackFiles.length;s<d;s++)!function(t,n){var o=e.trackFiles[t],a=l.default.createElement("track");a.kind=o.kind,a.label=o.label,a.srclang=o.srclang,a.src=o.src,i.appendChild(a),a.addEventListener("load",function(){this.mode="showing",i.textTracks[t].mode="showing"})}(s);delete e.node,delete e.mediaFiles,delete e.trackFiles}(),"function"==typeof e.media.destroy&&e.media.destroy(),delete d.default.players[e.id],"object"===a(e.container)&&(e.container.parentNode.querySelector("."+e.options.classPrefix+"offscreen").remove(),e.container.remove()),e.globalUnbind(),delete e.media.player}}]),e}();s.default.MediaElementPlayer=g,n.default=g,function(e){void 0!==e&&(e.fn.mediaelementplayer=function(t){return!1===t?this.each(function(){var t=e(this).data("mediaelementplayer");t&&t.remove(),e(this).removeData("mediaelementplayer")}):this.each(function(){e(this).data("mediaelementplayer",new g(this,t))}),this},e(l.default).ready(function(){e("."+y.classPrefix+"player").mediaelementplayer()}))}(d.default.$)},{19:19,2:2,20:20,21:21,22:22,24:24,3:3,4:4,5:5,6:6}],17:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=i(e(4)),d=e(7),u=e(21),c=e(19),f=e(22),p=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=p.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,i,o){p.plugins[e]=p.detectPlugin(t,n,i,o)},detectPlugin:function(e,t,n,i){var r=[0,0,0],s=void 0,l=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===o(c.NAV.plugins[e])){if((s=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(r=s.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)r[d]=parseInt(r[d].match(/\d+/),10)}else if(void 0!==a.default.ActiveXObject)try{(l=new ActiveXObject(n))&&(r=i(l))}catch(e){}return r}};p.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var m={create:function(e,t,n){var i={};i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var o=s.default.html5media.properties,p=0,m=o.length;p<m;p++)!function(e){i.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);i["get"+t]=function(){if(null!==i.flashApi){if(void 0!==i.flashApi["get_"+e]){var t=i.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},i["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==i.flashApi&&void 0!==i.flashApi["set_"+e]?i.flashApi["set_"+e](t):i.flashApiStack.push({type:"set",propName:e,value:t})}}(o[p]);var h=s.default.html5media.methods;h.push("stop");for(var v=0,y=h.length;v<y;v++)!function(e){i[e]=function(){if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var g=["rendererready"],E=0,b=g.length;E<b;E++){var S=(0,u.createEvent)(g[E],i);e.dispatchEvent(S)}a.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=r.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var o=n.propName,a=""+o.substring(0,1).toUpperCase()+o.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},a.default["__event__"+i.id]=function(e,t){var n=(0,u.createEvent)(e,i);n.message=t||"",i.mediaElement.dispatchEvent(n)},i.flashWrapper=r.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var x=e.originalNode.autoplay,w=["uid="+i.id,"autoplay="+x,"allowScriptAccess="+i.options.shimScriptAccess],P=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),T=P?e.originalNode.height:1,C=P?e.originalNode.width:1;e.originalNode.getAttribute("src")&&w.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(w.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),w.push("pseudostreamtype="+i.options.pseudoStreamingType)),e.appendChild(i.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var k=[];if(c.IS_IE){var N=r.default.createElement("div");i.flashWrapper.appendChild(N),k=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),N.outerHTML="<object "+k.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+w.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+l.default.t("mejs.install-flash")+"</div></object>"}else k=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+w.join("&")+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),i.flashWrapper.innerHTML="<embed "+k.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){P&&(i.flashNode.style.display="none")},i.show=function(){P&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&n.length>0)for(var A=0,_=n.length;A<_;A++)if(d.renderer.renderers[t.prefix].canPlayType(n[A].type)){i.setSrc(n[A].src);break}return i}};if(p.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(v);var y={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(y);var g={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(g);var E={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(E)}},{19:19,2:2,21:21,22:22,3:3,4:4,6:6,7:7}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=e(7),l=e(21),d=e(19),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=a.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var i=e.id+"_"+t.prefix,o=null;void 0===e.originalNode||null===e.originalNode?(o=a.default.createElement("audio"),e.appendChild(o)):o=e.originalNode,o.setAttribute("id",i);for(var d=r.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);o["get"+t]=function(){return o[e]},o["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&(o[e]=t)}}(d[u]);for(var f=r.default.html5media.events.concat(["click","mouseover","mouseout"]),p=0,m=f.length;p<m;p++)!function(t){o.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[p]);if(o.setSize=function(e,t){return o.style.width=e+"px",o.style.height=t+"px",o},o.hide=function(){return o.style.display="none",o},o.show=function(){return o.style.display="",o},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(s.renderer.renderers[t.prefix].canPlayType(n[h].type)){o.setAttribute("src",n[h].src);break}var y=(0,l.createEvent)("rendererready",o);return e.dispatchEvent(y),o}};o.default.HtmlMediaElement=r.default.HtmlMediaElement=u,s.renderer.add(u)},{19:19,2:2,21:21,3:3,6:6,7:7}],19:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=n.NAV=o.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l),u=n.IS_IPHONE=/iphone/i.test(l),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(l)),f=n.IS_IE=/(trident|microsoft)/i.test(s.appName),p=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in a.default)),m=n.IS_CHROME=/chrome/i.test(l),h=n.IS_FIREFOX=/firefox/i.test(l),v=n.IS_SAFARI=/safari/i.test(l)&&!m,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),g=(n.HAS_MSE="MediaSource"in o.default),E=(n.SUPPORT_POINTER_EVENTS=function(){var e=a.default.createElement("x"),t=a.default.documentElement,n=o.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var i=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!i}()),b=["source","track","audio","video"],S=void 0,x=0,w=b.length;x<w;x++)S=a.default.createElement(b[x]);var P=n.SUPPORTS_NATIVE_HLS=v||c&&(m||y)||f&&/edge/i.test(l),T=void 0!==S.webkitEnterFullscreen,C=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(l)&&(C=!1,T=!1);var k=void 0!==S.webkitRequestFullScreen,N=void 0!==S.mozRequestFullScreen,A=void 0!==S.msRequestFullscreen,_=k||N||A,F=_,L="",j=void 0,M=void 0,I=void 0;N?F=a.default.mozFullScreenEnabled:A&&(F=a.default.msFullscreenEnabled),m&&(T=!1),_&&(k?L="webkitfullscreenchange":N?L="mozfullscreenchange":A&&(L="MSFullscreenChange"),n.isFullScreen=j=function(){return N?a.default.mozFullScreen:k?a.default.webkitIsFullScreen:A?null!==a.default.msFullscreenElement:void 0},n.requestFullScreen=M=function(e){k?e.webkitRequestFullScreen():N?e.mozRequestFullScreen():A&&e.msRequestFullscreen()},n.cancelFullScreen=I=function(){k?a.default.webkitCancelFullScreen():N?a.default.mozCancelFullScreen():A&&a.default.msExitFullscreen()});var O=n.HAS_NATIVE_FULLSCREEN=C,H=n.HAS_WEBKIT_NATIVE_FULLSCREEN=k,q=n.HAS_MOZ_NATIVE_FULLSCREEN=N,R=n.HAS_MS_NATIVE_FULLSCREEN=A,U=n.HAS_IOS_FULLSCREEN=T,D=n.HAS_TRUE_NATIVE_FULLSCREEN=_,V=n.HAS_NATIVE_FULLSCREEN_ENABLED=F,B=n.FULLSCREEN_EVENT_NAME=L;n.isFullScreen=j,n.requestFullScreen=M,n.cancelFullScreen=I,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=c,r.default.Features.isIE=f,r.default.Features.isEdge=p,r.default.Features.isChrome=m,r.default.Features.isFirefox=h,r.default.Features.isSafari=v,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=g,r.default.Features.supportsNativeHLS=P,r.default.Features.supportsPointerEvents=E,r.default.Features.hasiOSFullScreen=U,r.default.Features.hasNativeFullscreen=O,r.default.Features.hasWebkitNativeFullScreen=H,r.default.Features.hasMozNativeFullScreen=q,r.default.Features.hasMsNativeFullScreen=R,r.default.Features.hasTrueNativeFullScreen=D,r.default.Features.nativeFullScreenEnabled=V,r.default.Features.fullScreenEventName=B,r.default.Features.isFullScreen=j,r.default.Features.requestFullScreen=M,r.default.Features.cancelFullScreen=I},{2:2,3:3,6:6}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){for(o=e;a=n.shift();)a[i]&&a[i](o)}var n=[],i=-1,o=void 0,a=void 0;return e(function(e){return t(e,i=0)},function(e){return t(e,i=1)}),{then:function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];~i?t[i]&&t[i](o):n.push(t)}}}function a(e){return o(function(t,n){var i=m.default.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},m.default.head.appendChild(i)})}function r(e){var t=e.getBoundingClientRect(),n=p.default.pageXOffset||m.default.documentElement.scrollLeft,i=p.default.pageYOffset||m.default.documentElement.scrollTop;return{top:t.top+i,left:t.left+n}}function s(e,t){E(e,t)?S(e,t):b(e,t)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(1-r/t,2);e.style.opacity=s<0?0:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(r/t,2);e.style.opacity=s>1?1:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,i){var o=p.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),a="application/x-www-form-urlencoded; charset=UTF-8",r=!1,s="*/".concat("*");switch(t){case"text":a="text/plain";break;case"json":a="application/json, text/javascript";break;case"html":a="text/html";break;case"xml":a="application/xml, text/xml"}"application/x-www-form-urlencoded"!==a&&(s=a+", */*; q=0.01"),o&&(o.open("GET",e,!0),o.setRequestHeader("Accept",s),o.onreadystatechange=function(){if(!r&&4===o.readyState)if(200===o.status){r=!0;var e=void 0;switch(t){case"json":e=JSON.parse(o.responseText);break;case"xml":e=o.responseXML;break;default:e=o.responseText}n(e)}else"function"==typeof i&&i(o.status)},o.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=r,n.toggleClass=s,n.fadeOut=l,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var p=i(e(3)),m=i(e(2)),h=i(e(6)),v=void 0,y=void 0,g=void 0;"classList"in m.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},y=function(e,t){return e.classList.add(t)},g=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},y=function(e,t){E(e,t)||(e.className+=" "+t)},g=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var E=n.hasClass=v,b=n.addClass=y,S=n.removeClass=g;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=r,h.default.Utils.hasClass=E,h.default.Utils.addClass=b,h.default.Utils.removeClass=S,h.default.Utils.toggleClass=s,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=l,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=a},{2:2,3:3,6:6}],21:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function o(e,t){var n=this,i=arguments,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var a=void 0;return function(){var r=n,s=i,l=function(){a=null,o||e.apply(r,s)},d=o&&!a;clearTimeout(a),a=setTimeout(l,t),d&&e.apply(r,s)}}function a(e){return Object.getOwnPropertyNames(e).length<=0}function r(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var o=e+(t?"."+t:"");o.startsWith(".")?(i.d.push(o),i.w.push(o)):i[n.test(e)?"w":"d"].push(o)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function s(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),i={target:t};return null!==n&&(e=n[1],i.namespace=n[2]),new window.CustomEvent(e,{detail:i})}function l(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=i,n.debounce=o,n.isObjectEmpty=a,n.splitEvents=r,n.createEvent=s,n.isNodeAfter=l,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=i,u.default.Utils.debounce=o,u.default.Utils.isObjectEmpty=a,u.default.Utils.splitEvents=r,u.default.Utils.createEvent=s,u.default.Utils.isNodeAfter=l,u.default.Utils.isString=d},{6:6}],22:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?r(e):a(t)}function a(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var i=c[t](e);if(i)return i}var o=l(s(e)),a="video/mp4";return o&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(o)?a="video/"+o:~["mp3","oga","wav","mid","midi"].indexOf(o)&&(a="audio/"+o)),a}function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function l(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=i,n.formatType=o,n.getMimeFromType=a,n.getTypeFromFile=r,n.getExtension=s,n.normalizeExtension=l;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(21),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=i,d.default.Utils.formatType=o,d.default.Utils.getMimeFromType=a,d.default.Utils.getTypeFromFile=r,d.default.Utils.getExtension=s,d.default.Utils.normalizeExtension=l},{21:21,6:6}],23:[function(e,t,n){"use strict";var i=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,i=arguments.length;n<i;n++){var o=arguments[n];if(null!==o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,i=this;do{for(n=t.length;--n>=0&&t.item(n)!==i;);}while(n<0&&(i=i.parentElement));return i}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+i)},i);return e=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}],24:[function(e,t,n){"use strict";function i(){return!((arguments.length>0&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;e=!e||"number"!=typeof e||e<0?0:e;var r=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=i(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(i(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*r*Math.floor(h/d),v>r&&(h+=r*Math.floor((v-r)/Math.round(60*s-r)));var y=Math.floor(h/s);c=Math.floor(Math.floor(y/60)/60),f=Math.floor(y/60)%60,p=n?y%60:(h/s%60).toFixed(a)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):(e%60).toFixed(a);c=c<=0?0:c,f=f<=0?0:f,p=p<=0?0:p;var g=t||c>0?(c<10?"0"+c:c)+":":"";return g+=(f<10?"0"+f:f)+":",g+=""+(p<10?"0"+p:p),n&&(g+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10?u+"0"+m:""+u+m),g}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(e.indexOf(";")>0&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,a=0,r=0,s=0,l=0,d=0,u=Math.round(.066666*t),c=Math.round(t),f=3600*c,p=60*c;switch(n.length){default:case 1:s=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),s=parseInt(n[1],10);break;case 3:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10);break;case 4:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10),l=parseInt(n[3],10)}return o=i(t)?f*a+p*r+c*s+l-u*((d=60*a+r)-Math.floor(d/10)):(f*a+p*r+t*s+l)/t,parseFloat(o.toFixed(3))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var i=Math.floor(e/3600)%24,o=Math.floor(e/60)%60,a=Math.floor(e%60),r=[[Math.floor((e%1*n).toFixed(3)),"f"],[a,"s"],[o,"m"],[i,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=r.length;p<m;p++)if(~s.indexOf(r[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(r[v][0]>0){h=!0;break}if(!h)break;l||(s=c+s),s=r[p][1]+u+s,l&&(s=r[p][1]+s),c=r[p][1]}t.currentTimeFormat=s}function s(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,i=1,o=0,a=(e=e.split(":").reverse()).length;o<a;o++)i=1,o>0&&(i=Math.pow(60,o)),n+=Number(e[o])*i;return Number(n.toFixed(t))}Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=i,n.secondsToTimeCode=o,n.timeCodeToSeconds=a,n.calculateTimeFormat=r,n.convertSMPTEtoSeconds=s;var l=function(e){return e&&e.__esModule?e:{default:e}}(e(6));l.default.Utils=l.default.Utils||{},l.default.Utils.secondsToTimeCode=o,l.default.Utils.timeCodeToSeconds=a,l.default.Utils.calculateTimeFormat=r,l.default.Utils.convertSMPTEtoSeconds=s},{6:6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]); \ No newline at end of file diff --git a/lib/mejs/renderers/dailymotion.js b/lib/mejs/renderers/dailymotion.js index 33cba9cfdc9d0641203ecf4ee3b90cd5a14d8f65..2ce6620d758b3c71ef5c3d8644fba10001f36be0 100644 --- a/lib/mejs/renderers/dailymotion.js +++ b/lib/mejs/renderers/dailymotion.js @@ -11,33 +11,13 @@ */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; -/** - * DailyMotion renderer - * - * Uses <iframe> approach and uses DailyMotion API to manipulate it. - * @see https://developer.dailymotion.com/player - * - */ - var DailyMotionApi = { - /** - * @type {Boolean} - */ isSDKStarted: false, - /** - * @type {Boolean} - */ + isSDKLoaded: false, - /** - * @type {Array} - */ + iframeQueue: [], - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ enqueueIframe: function enqueueIframe(settings) { if (DailyMotionApi.isLoaded) { @@ -48,25 +28,13 @@ var DailyMotionApi = { } }, - /** - * Load DailyMotion API script on the header of the document - * - */ loadIframeApi: function loadIframeApi() { if (!DailyMotionApi.isSDKStarted) { - var e = document.createElement('script'); - e.async = true; - e.src = '//api.dmcdn.net/all.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(e, s); + mejs.Utils.loadScript('https://api.dmcdn.net/all.js'); DailyMotionApi.isSDKStarted = true; } }, - /** - * Process queue of DailyMotion <iframe> element creation - * - */ apiReady: function apiReady() { DailyMotionApi.isLoaded = true; @@ -74,15 +42,17 @@ var DailyMotionApi = { while (DailyMotionApi.iframeQueue.length > 0) { var settings = DailyMotionApi.iframeQueue.pop(); + + DM.init({ + apiKey: settings.apiKey, + status: settings.status, + cookie: settings.cookie + }); + DailyMotionApi.createIframe(settings); } }, - /** - * Create a new instance of DailyMotion API player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ createIframe: function createIframe(settings) { var player = DM.player(settings.container, { @@ -98,15 +68,6 @@ var DailyMotionApi = { }); }, - /** - * Extract ID from DailyMotion's URL to be loaded through API - * Valid URL format(s): - * - http://www.dailymotion.com/embed/video/x35yawy - * - http://dai.ly/x35yawy - * - * @param {String} url - * @return {String} - */ getDailyMotionId: function getDailyMotionId(url) { var parts = url.split('/'), lastPart = parts[parts.length - 1], @@ -118,10 +79,8 @@ var DailyMotionApi = { var DailyMotionIframeRenderer = { name: 'dailymotion_iframe', - options: { prefix: 'dailymotion_iframe', - dailymotion: { width: '100%', height: '100%', @@ -131,28 +90,17 @@ var DailyMotionIframeRenderer = { info: 0, logo: 0, related: 0 - } + }, + apiKey: null, + status: true, + cookie: true } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/dailymotion', 'video/x-dailymotion'].includes(type); + return ~['video/dailymotion', 'video/x-dailymotion'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var dm = {}, @@ -167,38 +115,28 @@ var DailyMotionIframeRenderer = { dm.id = mediaElement.id + '_' + options.prefix; dm.mediaElement = mediaElement; - // wrappers for get/set var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - // add to flash state that we will store - var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); dm['get' + capName] = function () { if (dmPlayer !== null) { var value = null; - // figure out how to get dm dta here switch (propName) { case 'currentTime': return dmPlayer.currentTime; - case 'duration': return isNaN(dmPlayer.duration) ? 0 : dmPlayer.duration; - case 'volume': return dmPlayer.volume; - case 'paused': return dmPlayer.paused; - case 'ended': return dmPlayer.ended; - case 'muted': return dmPlayer.muted; - case 'buffered': var percentLoaded = dmPlayer.bufferedTime, duration = dmPlayer.duration; @@ -213,7 +151,6 @@ var DailyMotionIframeRenderer = { }; case 'src': return mediaElement.originalNode.getAttribute('src'); - case 'readyState': return readyState; } @@ -226,31 +163,21 @@ var DailyMotionIframeRenderer = { dm['set' + capName] = function (value) { if (dmPlayer !== null) { - switch (propName) { - case 'src': var url = typeof value === 'string' ? value : value[0].src; - dmPlayer.load(DailyMotionApi.getDailyMotionId(url)); break; - case 'currentTime': dmPlayer.seek(value); break; - case 'muted': - if (value) { - dmPlayer.setMuted(true); - } else { - dmPlayer.setMuted(false); - } + dmPlayer.setMuted(value); setTimeout(function () { var event = mejs.Utils.createEvent('volumechange', dm); mediaElement.dispatchEvent(event); }, 50); break; - case 'volume': dmPlayer.setVolume(value); setTimeout(function () { @@ -258,18 +185,15 @@ var DailyMotionIframeRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'readyState': var event = mejs.Utils.createEvent('canplay', dm); mediaElement.dispatchEvent(event); break; - default: break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -279,15 +203,10 @@ var DailyMotionIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement dm[methodName] = function () { if (dmPlayer !== null) { - - // DO method switch (methodName) { case 'play': return dmPlayer.play(); @@ -295,7 +214,6 @@ var DailyMotionIframeRenderer = { return dmPlayer.pause(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -307,12 +225,10 @@ var DailyMotionIframeRenderer = { assignMethods(methods[_i]); } - // Initial method to register all DailyMotion events when initializing <iframe> window['__ready__' + dm.id] = function (_dmPlayer) { mediaElement.dmPlayer = dmPlayer = _dmPlayer; - // do call stack if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { @@ -331,7 +247,6 @@ var DailyMotionIframeRenderer = { dmIframe = document.getElementById(dm.id); - // a few more events events = ['mouseover', 'mouseout']; var assignEvents = function assignEvents(e) { var event = mejs.Utils.createEvent(e.type, dm); @@ -342,14 +257,10 @@ var DailyMotionIframeRenderer = { dmIframe.addEventListener(events[_i3], assignEvents, false); } - // BUBBLE EVENTS up events = mejs.html5media.events; events = events.concat(['click', 'mouseover', 'mouseout']); var assignNativeEvents = function assignNativeEvents(eventName) { - - // Deprecated event; not consider it if (eventName !== 'ended') { - dmPlayer.addEventListener(eventName, function (e) { var event = mejs.Utils.createEvent(e.type, dmPlayer); mediaElement.dispatchEvent(event); @@ -361,7 +272,6 @@ var DailyMotionIframeRenderer = { assignNativeEvents(events[_i4]); } - // Custom DailyMotion events dmPlayer.addEventListener('ad_start', function () { var event = mejs.Utils.createEvent('play', dmPlayer); mediaElement.dispatchEvent(event); @@ -404,8 +314,7 @@ var DailyMotionIframeRenderer = { mediaElement.dispatchEvent(event); }); - // give initial events - var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay']; + var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; for (var _i5 = 0, _total5 = initEvents.length; _i5 < _total5; _i5++) { var event = mejs.Utils.createEvent(initEvents[_i5], dm); @@ -445,39 +354,22 @@ var DailyMotionIframeRenderer = { } }; dm.setSize = function (width, height) { - dmIframe.width = width; - dmIframe.height = height; + if (dmIframe) { + dmIframe.width = width; + dmIframe.height = height; + } }; dm.destroy = function () { dmPlayer.destroy(); }; - dm.interval = null; - - dm.startInterval = function () { - dm.interval = setInterval(function () { - DailyMotionApi.sendEvent(dm.id, dmPlayer, 'timeupdate', { - paused: false, - ended: false - }); - }, 250); - }; - dm.stopInterval = function () { - if (dm.interval) { - clearInterval(dm.interval); - } - }; return dm; } }; -/* - * Register DailyMotion event globally - * - */ mejs.Utils.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//dailymotion.com') || url.includes('www.dailymotion.com') || url.includes('//dai.ly') ? 'video/x-dailymotion' : null; + return (/\/\/((www\.)?dailymotion\.com|dai\.ly)/i.test(url) ? 'video/x-dailymotion' : null + ); }); window.dmAsyncInit = function () { diff --git a/lib/mejs/renderers/dailymotion.min.js b/lib/mejs/renderers/dailymotion.min.js index dfc809eccb21a7759e41c53ddf30c7dbe9b1451a..f6c225c88b0b8615a4baccf715eac21b4f77c0e7 100644 --- a/lib/mejs/renderers/dailymotion.min.js +++ b/lib/mejs/renderers/dailymotion.min.js @@ -1,14 +1,4 @@ /*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - *//*! * MediaElement.js * http://www.mediaelementjs.com/ * @@ -19,4 +9,4 @@ * License: MIT * */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isSDKStarted){var a=document.createElement("script");a.async=!0,a.src="//api.dmcdn.net/all.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),d.isSDKStarted=!0}},apiReady:function(){for(d.isLoaded=!0,d.isSDKLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=DM.player(a.container,{height:a.height||"100%",width:a.width||"100%",video:a.videoId,params:Object.assign({api:!0},a.params),origin:location.host});b.addEventListener("apiready",function(){window["__ready__"+a.id](b,{paused:!0,ended:!1})})},getDailyMotionId:function(a){var b=a.split("/"),c=b[b.length-1],d=c.split("_");return d[0]}},e={name:"dailymotion_iframe",options:{prefix:"dailymotion_iframe",dailymotion:{width:"100%",height:"100%",params:{autoplay:!1,chromeless:1,info:0,logo:0,related:0}}},canPlayType:function(a){return["video/dailymotion","video/x-dailymotion"].includes(a)},create:function(a,b,c){var e={},f=[],g=4,h=void 0,i=null,j=null;e.options=b,e.id=a.id+"_"+b.prefix,e.mediaElement=a;for(var k=mejs.html5media.properties,l=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);e["get"+c]=function(){if(null!==i){var c=null;switch(b){case"currentTime":return i.currentTime;case"duration":return isNaN(i.duration)?0:i.duration;case"volume":return i.volume;case"paused":return i.paused;case"ended":return i.ended;case"muted":return i.muted;case"buffered":var d=i.bufferedTime,e=i.duration;return{start:function(){return 0},end:function(){return d/e},length:1};case"src":return a.originalNode.getAttribute("src");case"readyState":return g}return c}return null},e["set"+c]=function(c){if(null!==i)switch(b){case"src":var g="string"==typeof c?c:c[0].src;i.load(d.getDailyMotionId(g));break;case"currentTime":i.seek(c);break;case"muted":c?i.setMuted(!0):i.setMuted(!1),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"volume":i.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"readyState":var h=mejs.Utils.createEvent("canplay",e);a.dispatchEvent(h)}else f.push({type:"set",propName:b,value:c})}},m=0,n=k.length;n>m;m++)l(k[m]);for(var o=mejs.html5media.methods,p=function(a){e[a]=function(){if(null!==i)switch(a){case"play":return i.play();case"pause":return i.pause();case"load":return null}else f.push({type:"call",methodName:a})}},q=0,r=o.length;r>q;q++)p(o[q]);window["__ready__"+e.id]=function(b){if(a.dmPlayer=i=b,f.length)for(var c=0,d=f.length;d>c;c++){var g=f[c];if("set"===g.type){var k=g.propName,l=""+k.substring(0,1).toUpperCase()+k.substring(1);e["set"+l](g.value)}else"call"===g.type&&e[g.methodName]()}j=document.getElementById(e.id),h=["mouseover","mouseout"];for(var m=function(b){var c=mejs.Utils.createEvent(b.type,e);a.dispatchEvent(c)},n=0,o=h.length;o>n;n++)j.addEventListener(h[n],m,!1);h=mejs.html5media.events,h=h.concat(["click","mouseover","mouseout"]);for(var p=function(b){"ended"!==b&&i.addEventListener(b,function(b){var c=mejs.Utils.createEvent(b.type,i);a.dispatchEvent(c)})},q=0,r=h.length;r>q;q++)p(h[q]);i.addEventListener("ad_start",function(){var b=mejs.Utils.createEvent("play",i);a.dispatchEvent(b),b=mejs.Utils.createEvent("progress",i),a.dispatchEvent(b),b=mejs.Utils.createEvent("timeupdate",i),a.dispatchEvent(b)}),i.addEventListener("ad_timeupdate",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)}),i.addEventListener("ad_pause",function(){var b=mejs.Utils.createEvent("pause",i);a.dispatchEvent(b)}),i.addEventListener("ad_end",function(){var b=mejs.Utils.createEvent("ended",i);a.dispatchEvent(b)}),i.addEventListener("video_start",function(){var b=mejs.Utils.createEvent("play",i);a.dispatchEvent(b),b=mejs.Utils.createEvent("timeupdate",i),a.dispatchEvent(b)}),i.addEventListener("video_end",function(){var b=mejs.Utils.createEvent("ended",i);a.dispatchEvent(b)}),i.addEventListener("progress",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)}),i.addEventListener("durationchange",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)});for(var s=["rendererready","loadeddata","loadedmetadata","canplay"],t=0,u=s.length;u>t;t++){var v=mejs.Utils.createEvent(s[t],e);a.dispatchEvent(v)}};var s=document.createElement("div");s.id=e.id,a.appendChild(s),a.originalNode&&(s.style.width=a.originalNode.style.width,s.style.height=a.originalNode.style.height),a.originalNode.style.display="none";var t=d.getDailyMotionId(c[0].src),u=Object.assign({id:e.id,container:s,videoId:t,autoplay:a.originalNode.autoplay},e.options.dailymotion);return d.enqueueIframe(u),e.hide=function(){e.stopInterval(),e.pause(),j&&(j.style.display="none")},e.show=function(){j&&(j.style.display="")},e.setSize=function(a,b){j.width=a,j.height=b},e.destroy=function(){i.destroy()},e.interval=null,e.startInterval=function(){e.interval=setInterval(function(){d.sendEvent(e.id,i,"timeupdate",{paused:!1,ended:!1})},250)},e.stopInterval=function(){e.interval&&clearInterval(e.interval)},e}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//dailymotion.com")||a.includes("www.dailymotion.com")||a.includes("//dai.ly")?"video/x-dailymotion":null}),window.dmAsyncInit=function(){d.apiReady()},mejs.Renderers.add(e)},{}]},{},[1]); \ No newline at end of file +!function e(t,n,a){function i(s,d){if(!n[s]){if(!t[s]){var o="function"==typeof require&&require;if(!d&&o)return o(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return i(n||e)},c,c.exports,e,t,n,a)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s<a.length;s++)i(a[s]);return i}({1:[function(e,t,n){"use strict";var a={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(e){a.isLoaded?a.createIframe(e):(a.loadIframeApi(),a.iframeQueue.push(e))},loadIframeApi:function(){a.isSDKStarted||(mejs.Utils.loadScript("https://api.dmcdn.net/all.js"),a.isSDKStarted=!0)},apiReady:function(){for(a.isLoaded=!0,a.isSDKLoaded=!0;a.iframeQueue.length>0;){var e=a.iframeQueue.pop();DM.init({apiKey:e.apiKey,status:e.status,cookie:e.cookie}),a.createIframe(e)}},createIframe:function(e){var t=DM.player(e.container,{height:e.height||"100%",width:e.width||"100%",video:e.videoId,params:Object.assign({api:!0},e.params),origin:location.host});t.addEventListener("apiready",function(){window["__ready__"+e.id](t,{paused:!0,ended:!1})})},getDailyMotionId:function(e){var t=e.split("/");return t[t.length-1].split("_")[0]}},i={name:"dailymotion_iframe",options:{prefix:"dailymotion_iframe",dailymotion:{width:"100%",height:"100%",params:{autoplay:!1,chromeless:1,info:0,logo:0,related:0},apiKey:null,status:!0,cookie:!0}},canPlayType:function(e){return~["video/dailymotion","video/x-dailymotion"].indexOf(e.toLowerCase())},create:function(e,t,n){var i={},r=[],s=void 0,d=null,o=null;i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var u=mejs.html5media.properties,c=0,l=u.length;c<l;c++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+n]=function(){if(null!==d){switch(t){case"currentTime":return d.currentTime;case"duration":return isNaN(d.duration)?0:d.duration;case"volume":return d.volume;case"paused":return d.paused;case"ended":return d.ended;case"muted":return d.muted;case"buffered":var n=d.bufferedTime,a=d.duration;return{start:function(){return 0},end:function(){return n/a},length:1};case"src":return e.originalNode.getAttribute("src");case"readyState":return 4}return null}return null},i["set"+n]=function(n){if(null!==d)switch(t){case"src":var s="string"==typeof n?n:n[0].src;d.load(a.getDailyMotionId(s));break;case"currentTime":d.seek(n);break;case"muted":d.setMuted(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":d.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var o=mejs.Utils.createEvent("canplay",i);e.dispatchEvent(o)}else r.push({type:"set",propName:t,value:n})}}(u[c]);for(var v=mejs.html5media.methods,p=0,m=v.length;p<m;p++)!function(e){i[e]=function(){if(null!==d)switch(e){case"play":return d.play();case"pause":return d.pause();case"load":return null}else r.push({type:"call",methodName:e})}}(v[p]);window["__ready__"+i.id]=function(t){if(e.dmPlayer=d=t,r.length)for(var n=0,a=r.length;n<a;n++){var u=r[n];if("set"===u.type){var c=u.propName,l=""+c.substring(0,1).toUpperCase()+c.substring(1);i["set"+l](u.value)}else"call"===u.type&&i[u.methodName]()}o=document.getElementById(i.id);for(var v=function(t){var n=mejs.Utils.createEvent(t.type,i);e.dispatchEvent(n)},p=0,m=(s=["mouseover","mouseout"]).length;p<m;p++)o.addEventListener(s[p],v,!1);s=mejs.html5media.events;for(var f=0,h=(s=s.concat(["click","mouseover","mouseout"])).length;f<h;f++)!function(t){"ended"!==t&&d.addEventListener(t,function(t){var n=mejs.Utils.createEvent(t.type,d);e.dispatchEvent(n)})}(s[f]);d.addEventListener("ad_start",function(){var t=mejs.Utils.createEvent("play",d);e.dispatchEvent(t),t=mejs.Utils.createEvent("progress",d),e.dispatchEvent(t),t=mejs.Utils.createEvent("timeupdate",d),e.dispatchEvent(t)}),d.addEventListener("ad_timeupdate",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)}),d.addEventListener("ad_pause",function(){var t=mejs.Utils.createEvent("pause",d);e.dispatchEvent(t)}),d.addEventListener("ad_end",function(){var t=mejs.Utils.createEvent("ended",d);e.dispatchEvent(t)}),d.addEventListener("video_start",function(){var t=mejs.Utils.createEvent("play",d);e.dispatchEvent(t),t=mejs.Utils.createEvent("timeupdate",d),e.dispatchEvent(t)}),d.addEventListener("video_end",function(){var t=mejs.Utils.createEvent("ended",d);e.dispatchEvent(t)}),d.addEventListener("progress",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)}),d.addEventListener("durationchange",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)});for(var y=["rendererready","loadedmetadata","loadeddata","canplay"],E=0,g=y.length;E<g;E++){var j=mejs.Utils.createEvent(y[E],i);e.dispatchEvent(j)}};var f=document.createElement("div");f.id=i.id,e.appendChild(f),e.originalNode&&(f.style.width=e.originalNode.style.width,f.style.height=e.originalNode.style.height),e.originalNode.style.display="none";var h=a.getDailyMotionId(n[0].src),y=Object.assign({id:i.id,container:f,videoId:h,autoplay:e.originalNode.autoplay},i.options.dailymotion);return a.enqueueIframe(y),i.hide=function(){i.stopInterval(),i.pause(),o&&(o.style.display="none")},i.show=function(){o&&(o.style.display="")},i.setSize=function(e,t){o&&(o.width=e,o.height=t)},i.destroy=function(){d.destroy()},i}};mejs.Utils.typeChecks.push(function(e){return/\/\/((www\.)?dailymotion\.com|dai\.ly)/i.test(e)?"video/x-dailymotion":null}),window.dmAsyncInit=function(){a.apiReady()},mejs.Renderers.add(i)},{}]},{},[1]); \ No newline at end of file diff --git a/lib/mejs/renderers/facebook.js b/lib/mejs/renderers/facebook.js index 295baf6990ac99580f6beb30146de155b90fc8d3..9104d54a1d67460ec489669c77ab5fc1daeaa036 100644 --- a/lib/mejs/renderers/facebook.js +++ b/lib/mejs/renderers/facebook.js @@ -11,16 +11,8 @@ */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; -/** - * Facebook renderer - * - * It creates an <iframe> from a <div> with specific configuration. - * @see https://developers.facebook.com/docs/plugins/embedded-video-player - */ - var FacebookRenderer = { name: 'facebook', - options: { prefix: 'facebook', facebook: { @@ -30,24 +22,10 @@ var FacebookRenderer = { } }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/facebook', 'video/x-facebook'].includes(type); + return ~['video/facebook', 'video/x-facebook'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { var fbWrapper = {}, @@ -68,7 +46,6 @@ var FacebookRenderer = { fbWrapper.id = mediaElement.id + '_' + options.prefix; fbWrapper.mediaElement = mediaElement; - // wrappers for get/set var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { @@ -79,26 +56,19 @@ var FacebookRenderer = { if (fbApi !== null) { var value = null; - // figure out how to get youtube dta here switch (propName) { case 'currentTime': return fbApi.getCurrentPosition(); - case 'duration': return fbApi.getDuration(); - case 'volume': return fbApi.getVolume(); - case 'paused': return paused; - case 'ended': return ended; - case 'muted': return fbApi.isMuted(); - case 'buffered': return { start: function start() { @@ -111,7 +81,6 @@ var FacebookRenderer = { }; case 'src': return src; - case 'readyState': return readyState; } @@ -127,16 +96,12 @@ var FacebookRenderer = { if (fbApi !== null) { switch (propName) { - case 'src': var url = typeof value === 'string' ? value : value[0].src; - // Only way is to destroy instance and all the events fired, - // and create new one fbDiv.remove(); createFacebookEmbed(url, options.facebook); - // This method reloads video on-demand FB.XFBML.parse(); if (autoplay) { @@ -144,11 +109,9 @@ var FacebookRenderer = { } break; - case 'currentTime': fbApi.seek(value); break; - case 'muted': if (value) { fbApi.mute(); @@ -160,7 +123,6 @@ var FacebookRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'volume': fbApi.setVolume(value); setTimeout(function () { @@ -168,18 +130,15 @@ var FacebookRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'readyState': var event = mejs.Utils.createEvent('canplay', fbWrapper); mediaElement.dispatchEvent(event); break; - default: break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -189,16 +148,10 @@ var FacebookRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement fbWrapper[methodName] = function () { - if (fbApi !== null) { - - // DO method switch (methodName) { case 'play': return fbApi.play(); @@ -206,7 +159,6 @@ var FacebookRenderer = { return fbApi.pause(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -218,12 +170,6 @@ var FacebookRenderer = { assignMethods(methods[_i]); } - /** - * Dispatch a list of events - * - * @private - * @param {Array} events - */ function sendEvents(events) { for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) { var event = mejs.Utils.createEvent(events[_i2], fbWrapper); @@ -231,19 +177,7 @@ var FacebookRenderer = { } } - /** - * Create a new Facebook player and attach all its events - * - * This method creates a <div> element that, once the API is available, will generate an <iframe>. - * Valid URL format(s): - * - https://www.facebook.com/johndyer/videos/10107816243681884/ - * - * @param {String} url - * @param {Object} config - */ function createFacebookEmbed(url, config) { - - // Append width and height if not detected src = url; fbDiv = document.createElement('div'); @@ -256,10 +190,6 @@ var FacebookRenderer = { mediaElement.originalNode.parentNode.insertBefore(fbDiv, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; - /* - * Register Facebook API event globally - * - */ window.fbAsyncInit = function () { FB.init(config); @@ -270,7 +200,6 @@ var FacebookRenderer = { fbApi = msg.instance; - // Set proper size since player dimensions are unknown before this event var fbIframe = fbDiv.getElementsByTagName('iframe')[0], width = fbIframe.offsetWidth, height = fbIframe.offsetHeight, @@ -290,7 +219,6 @@ var FacebookRenderer = { fbIframe.addEventListener(events[_i3], assignEvents, false); } - // remove previous listeners var fbEvents = ['startedPlaying', 'paused', 'finishedPlaying', 'startedBuffering', 'finishedBuffering']; for (var _i4 = 0, _total4 = fbEvents.length; _i4 < _total4; _i4++) { var event = fbEvents[_i4], @@ -300,7 +228,6 @@ var FacebookRenderer = { } } - // do call stack if (apiStack.length) { for (var _i5 = 0, _total5 = apiStack.length; _i5 < _total5; _i5++) { @@ -321,7 +248,6 @@ var FacebookRenderer = { var timer = void 0; - // Custom Facebook events eventHandler.startedPlaying = fbApi.subscribe('startedPlaying', function () { if (!hasStartedPlaying) { hasStartedPlaying = true; @@ -330,7 +256,6 @@ var FacebookRenderer = { ended = false; sendEvents(['play', 'playing', 'timeupdate']); - // Workaround to update progress bar timer = setInterval(function () { fbApi.getCurrentPosition(); sendEvents(['timeupdate']); @@ -359,16 +284,7 @@ var FacebookRenderer = { }); }; - (function (d, s, id) { - var fjs = d.getElementsByTagName(s)[0]; - if (d.getElementById(id)) { - return; - } - var js = d.createElement(s); - js.id = id; - js.src = '//connect.facebook.net/en_US/sdk.js'; - fjs.parentNode.insertBefore(js, fjs); - })(document, 'script', 'facebook-jssdk'); + mejs.Utils.loadScript('https://connect.facebook.net/en_US/sdk.js'); } if (mediaFiles.length > 0) { @@ -397,7 +313,6 @@ var FacebookRenderer = { fbWrapper.interval = null; fbWrapper.startInterval = function () { - // create timer fbWrapper.interval = setInterval(function () { var event = mejs.Utils.createEvent('timeupdate', fbWrapper); mediaElement.dispatchEvent(event); @@ -413,13 +328,8 @@ var FacebookRenderer = { } }; -/** - * Register Facebook type based on URL structure - * - */ mejs.Utils.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//www.facebook') ? 'video/x-facebook' : null; + return ~url.toLowerCase().indexOf('//www.facebook') ? 'video/x-facebook' : null; }); mejs.Renderers.add(FacebookRenderer); diff --git a/lib/mejs/renderers/facebook.min.js b/lib/mejs/renderers/facebook.min.js index 4ef8875637f1566014db8ad46207898d5e84c790..68ffb8617ad316a587a8b74a2f8ccf0ee1f224fc 100644 --- a/lib/mejs/renderers/facebook.min.js +++ b/lib/mejs/renderers/facebook.min.js @@ -1,14 +1,4 @@ /*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - *//*! * MediaElement.js * http://www.mediaelementjs.com/ * @@ -19,4 +9,4 @@ * License: MIT * */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={name:"facebook",options:{prefix:"facebook",facebook:{appId:"{your-app-id}",xfbml:!0,version:"v2.6"}},canPlayType:function(a){return["video/facebook","video/x-facebook"].includes(a)},create:function(a,b,c){function d(b){for(var c=0,d=b.length;d>c;c++){var e=mejs.Utils.createEvent(b[c],f);a.dispatchEvent(e)}}function e(b,c){k=b,p=document.createElement("div"),p.id=f.id,p.className="fb-video",p.setAttribute("data-href",b),p.setAttribute("data-allowfullscreen","true"),p.setAttribute("data-controls","false"),a.originalNode.parentNode.insertBefore(p,a.originalNode),a.originalNode.style.display="none",window.fbAsyncInit=function(){FB.init(c),FB.Event.subscribe("xfbml.ready",function(b){if("video"===b.type){o=b.instance;var c=p.getElementsByTagName("iframe")[0],e=c.offsetWidth,i=c.offsetHeight,k=["mouseover","mouseout"],q=function(b){var c=mejs.Utils.createEvent(b.type,f);a.dispatchEvent(c)};f.setSize(e,i),j&&o.play();for(var r=0,s=k.length;s>r;r++)c.addEventListener(k[r],q,!1);for(var t=["startedPlaying","paused","finishedPlaying","startedBuffering","finishedBuffering"],u=0,v=t.length;v>u;u++){var w=t[u],x=h[w];void 0===x||null===x||mejs.Utils.isObjectEmpty(x)||"function"!=typeof x.removeListener||x.removeListener(w)}if(g.length)for(var y=0,z=g.length;z>y;y++){var A=g[y];if("set"===A.type){var B=A.propName,C=""+B.substring(0,1).toUpperCase()+B.substring(1);f["set"+C](A.value)}else"call"===A.type&&f[A.methodName]()}d(["rendererready","loadeddata","canplay","progress","loadedmetadata","timeupdate"]);var D=void 0;h.startedPlaying=o.subscribe("startedPlaying",function(){n||(n=!0),l=!1,m=!1,d(["play","playing","timeupdate"]),D=setInterval(function(){o.getCurrentPosition(),d(["timeupdate"])},250)}),h.paused=o.subscribe("paused",function(){l=!0,m=!1,d(["pause"])}),h.finishedPlaying=o.subscribe("finishedPlaying",function(){l=!0,m=!0,d(["ended"]),clearInterval(D),D=null}),h.startedBuffering=o.subscribe("startedBuffering",function(){d(["progress","timeupdate"])}),h.finishedBuffering=o.subscribe("finishedBuffering",function(){d(["progress","timeupdate"])})}})},function(a,b,c){var d=a.getElementsByTagName(b)[0];if(!a.getElementById(c)){var e=a.createElement(b);e.id=c,e.src="//connect.facebook.net/en_US/sdk.js",d.parentNode.insertBefore(e,d)}}(document,"script","facebook-jssdk")}var f={},g=[],h={},i=4,j=a.originalNode.autoplay,k="",l=!0,m=!1,n=!1,o=null,p=null;b=Object.assign(b,a.options),f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=mejs.html5media.properties,r=function(c){var d=""+c.substring(0,1).toUpperCase()+c.substring(1);f["get"+d]=function(){if(null!==o){var a=null;switch(c){case"currentTime":return o.getCurrentPosition();case"duration":return o.getDuration();case"volume":return o.getVolume();case"paused":return l;case"ended":return m;case"muted":return o.isMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return k;case"readyState":return i}return a}return null},f["set"+d]=function(d){if(null!==o)switch(c){case"src":var h="string"==typeof d?d:d[0].src;p.remove(),e(h,b.facebook),FB.XFBML.parse(),j&&o.play();break;case"currentTime":o.seek(d);break;case"muted":d?o.mute():o.unmute(),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"volume":o.setVolume(d),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"readyState":var i=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(i)}else g.push({type:"set",propName:c,value:d})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=mejs.html5media.methods,v=function(a){f[a]=function(){if(null!==o)switch(a){case"play":return o.play();case"pause":return o.pause();case"load":return null}else g.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);return c.length>0&&e(c[0].src,f.options.facebook),f.hide=function(){f.stopInterval(),f.pause(),p&&(p.style.display="none")},f.show=function(){p&&(p.style.display="")},f.setSize=function(a,b){null===o||isNaN(a)||isNaN(b)||(p.style.width=a,p.style.height=b)},f.destroy=function(){},f.interval=null,f.startInterval=function(){f.interval=setInterval(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},250)},f.stopInterval=function(){f.interval&&clearInterval(f.interval)},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.facebook")?"video/x-facebook":null}),mejs.Renderers.add(d)},{}]},{},[1]); \ No newline at end of file +!function e(t,n,r){function a(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(i)return i(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return a(n||e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){"use strict";var r={name:"facebook",options:{prefix:"facebook",facebook:{appId:"{your-app-id}",xfbml:!0,version:"v2.6"}},canPlayType:function(e){return~["video/facebook","video/x-facebook"].indexOf(e.toLowerCase())},create:function(e,t,n){function r(t){for(var n=0,r=t.length;n<r;n++){var a=mejs.Utils.createEvent(t[n],i);e.dispatchEvent(a)}}function a(t,n){l=t,(v=document.createElement("div")).id=i.id,v.className="fb-video",v.setAttribute("data-href",t),v.setAttribute("data-allowfullscreen","true"),v.setAttribute("data-controls","false"),e.originalNode.parentNode.insertBefore(v,e.originalNode),e.originalNode.style.display="none",window.fbAsyncInit=function(){FB.init(n),FB.Event.subscribe("xfbml.ready",function(t){if("video"===t.type){p=t.instance;var n=v.getElementsByTagName("iframe")[0],a=n.offsetWidth,l=n.offsetHeight,m=["mouseover","mouseout"],g=function(t){var n=mejs.Utils.createEvent(t.type,i);e.dispatchEvent(n)};i.setSize(a,l),u&&p.play();for(var h=0,y=m.length;h<y;h++)n.addEventListener(m[h],g,!1);for(var b=["startedPlaying","paused","finishedPlaying","startedBuffering","finishedBuffering"],E=0,k=b.length;E<k;E++){var N=b[E],j=o[N];void 0===j||null===j||mejs.Utils.isObjectEmpty(j)||"function"!=typeof j.removeListener||j.removeListener(N)}if(s.length)for(var w=0,U=s.length;w<U;w++){var x=s[w];if("set"===x.type){var B=x.propName,I=""+B.substring(0,1).toUpperCase()+B.substring(1);i["set"+I](x.value)}else"call"===x.type&&i[x.methodName]()}r(["rendererready","loadeddata","canplay","progress","loadedmetadata","timeupdate"]);var P=void 0;o.startedPlaying=p.subscribe("startedPlaying",function(){d||(d=!0),c=!1,f=!1,r(["play","playing","timeupdate"]),P=setInterval(function(){p.getCurrentPosition(),r(["timeupdate"])},250)}),o.paused=p.subscribe("paused",function(){c=!0,f=!1,r(["pause"])}),o.finishedPlaying=p.subscribe("finishedPlaying",function(){c=!0,f=!0,r(["ended"]),clearInterval(P),P=null}),o.startedBuffering=p.subscribe("startedBuffering",function(){r(["progress","timeupdate"])}),o.finishedBuffering=p.subscribe("finishedBuffering",function(){r(["progress","timeupdate"])})}})},mejs.Utils.loadScript("https://connect.facebook.net/en_US/sdk.js")}var i={},s=[],o={},u=e.originalNode.autoplay,l="",c=!0,f=!1,d=!1,p=null,v=null;t=Object.assign(t,e.options),i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var m=mejs.html5media.properties,g=0,h=m.length;g<h;g++)!function(n){var r=""+n.substring(0,1).toUpperCase()+n.substring(1);i["get"+r]=function(){if(null!==p){switch(n){case"currentTime":return p.getCurrentPosition();case"duration":return p.getDuration();case"volume":return p.getVolume();case"paused":return c;case"ended":return f;case"muted":return p.isMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return l;case"readyState":return 4}return null}return null},i["set"+r]=function(r){if(null!==p)switch(n){case"src":var o="string"==typeof r?r:r[0].src;v.remove(),a(o,t.facebook),FB.XFBML.parse(),u&&p.play();break;case"currentTime":p.seek(r);break;case"muted":r?p.mute():p.unmute(),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":p.setVolume(r),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var l=mejs.Utils.createEvent("canplay",i);e.dispatchEvent(l)}else s.push({type:"set",propName:n,value:r})}}(m[g]);for(var y=mejs.html5media.methods,b=0,E=y.length;b<E;b++)!function(e){i[e]=function(){if(null!==p)switch(e){case"play":return p.play();case"pause":return p.pause();case"load":return null}else s.push({type:"call",methodName:e})}}(y[b]);return n.length>0&&a(n[0].src,i.options.facebook),i.hide=function(){i.stopInterval(),i.pause(),v&&(v.style.display="none")},i.show=function(){v&&(v.style.display="")},i.setSize=function(e,t){null===p||isNaN(e)||isNaN(t)||(v.style.width=e,v.style.height=t)},i.destroy=function(){},i.interval=null,i.startInterval=function(){i.interval=setInterval(function(){var t=mejs.Utils.createEvent("timeupdate",i);e.dispatchEvent(t)},250)},i.stopInterval=function(){i.interval&&clearInterval(i.interval)},i}};mejs.Utils.typeChecks.push(function(e){return~e.toLowerCase().indexOf("//www.facebook")?"video/x-facebook":null}),mejs.Renderers.add(r)},{}]},{},[1]); \ No newline at end of file diff --git a/lib/mejs/renderers/soundcloud.js b/lib/mejs/renderers/soundcloud.js index 4c114e79df580ca4cc770b990c308370f5c51c1e..cfd16ad06ed189ce469b859ccdec25258b9029d8 100644 --- a/lib/mejs/renderers/soundcloud.js +++ b/lib/mejs/renderers/soundcloud.js @@ -11,93 +11,23 @@ */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; -/** - * SoundCloud renderer - * - * Uses <iframe> approach and uses SoundCloud Widget API to manipulate it. - * @see https://developers.soundcloud.com/docs/api/html5-widget - */ - var SoundCloudApi = { - /** - * @type {Boolean} - */ - isSDKStarted: false, - /** - * @type {Boolean} - */ - isSDKLoaded: false, - /** - * @type {Array} - */ - iframeQueue: [], - - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - enqueueIframe: function enqueueIframe(settings) { - - if (SoundCloudApi.isLoaded) { - SoundCloudApi.createIframe(settings); - } else { - SoundCloudApi.loadIframeApi(); - SoundCloudApi.iframeQueue.push(settings); - } - }, - - /** - * Load SoundCloud API script on the header of the document - * - */ - loadIframeApi: function loadIframeApi() { - if (!SoundCloudApi.isSDKStarted) { - - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - var done = false; + promise: null, - script.src = '//w.soundcloud.com/player/api.js'; - - // Attach handlers for all browsers - // Is onload enough now? do IE9 support it? - script.onload = script.onreadystatechange = function () { - if (!done && (!SoundCloudApi.readyState || SoundCloudApi.readyState === "loaded" || SoundCloudApi.readyState === "complete")) { - done = true; - SoundCloudApi.apiReady(); - - // Handle memory leak in IE - script.onload = script.onreadystatechange = null; - script.remove(); - } - }; - head.appendChild(script); - SoundCloudApi.isSDKStarted = true; - } - }, + load: function load(settings) { - /** - * Process queue of SoundCloud <iframe> element creation - * - */ - apiReady: function apiReady() { - SoundCloudApi.isLoaded = true; - SoundCloudApi.isSDKLoaded = true; - - while (SoundCloudApi.iframeQueue.length > 0) { - var settings = SoundCloudApi.iframeQueue.pop(); - SoundCloudApi.createIframe(settings); + if (typeof SC !== 'undefined') { + SoundCloudApi._createPlayer(settings); + } else { + SoundCloudApi.promise = SoundCloudApi.promise || mejs.Utils.loadScript('https://w.soundcloud.com/player/api.js'); + SoundCloudApi.promise.then(function () { + SoundCloudApi._createPlayer(settings); + }); } }, - /** - * Create a new instance of SoundCloud Widget player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - createIframe: function createIframe(settings) { + _createPlayer: function _createPlayer(settings) { var player = SC.Widget(settings.iframe); window['__ready__' + settings.id](player); } @@ -105,32 +35,15 @@ var SoundCloudApi = { var SoundCloudIframeRenderer = { name: 'soundcloud_iframe', - options: { prefix: 'soundcloud_iframe' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/soundcloud', 'video/x-soundcloud'].includes(type); + return ~['video/soundcloud', 'video/x-soundcloud'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { - - // create our fake element that allows events and such to work var sc = {}, apiStack = [], readyState = 4, @@ -146,43 +59,31 @@ var SoundCloudIframeRenderer = { scPlayer = null, scIframe = null; - // store main variable sc.options = options; sc.id = mediaElement.id + '_' + options.prefix; sc.mediaElement = mediaElement; - // wrappers for get/set var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - // add to flash state that we will store - - var capName = "" + propName.substring(0, 1).toUpperCase() + propName.substring(1); - - sc["get" + capName] = function () { + sc['get' + capName] = function () { if (scPlayer !== null) { var value = null; - // figure out how to get dm dta here switch (propName) { case 'currentTime': return currentTime; - case 'duration': return duration; - case 'volume': return volume; - case 'paused': return paused; - case 'ended': return ended; - case 'muted': - return muted; // ? - + return muted; case 'buffered': return { start: function start() { @@ -195,50 +96,39 @@ var SoundCloudIframeRenderer = { }; case 'src': return scIframe ? scIframe.src : ''; - case 'readyState': return readyState; } - return value; } else { return null; } }; - sc["set" + capName] = function (value) { - + sc['set' + capName] = function (value) { if (scPlayer !== null) { - - // do something switch (propName) { - case 'src': var url = typeof value === 'string' ? value : value[0].src; - scPlayer.load(url); - if (autoplay) { scPlayer.play(); } break; - case 'currentTime': scPlayer.seekTo(value * 1000); break; - case 'muted': if (value) { - scPlayer.setVolume(0); // ? + scPlayer.setVolume(0); } else { - scPlayer.setVolume(1); // ? + scPlayer.setVolume(1); } setTimeout(function () { var event = mejs.Utils.createEvent('volumechange', sc); mediaElement.dispatchEvent(event); }, 50); break; - case 'volume': scPlayer.setVolume(value); setTimeout(function () { @@ -246,7 +136,6 @@ var SoundCloudIframeRenderer = { mediaElement.dispatchEvent(event); }, 50); break; - case 'readyState': var event = mejs.Utils.createEvent('canplay', sc); mediaElement.dispatchEvent(event); @@ -257,7 +146,6 @@ var SoundCloudIframeRenderer = { break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -267,16 +155,10 @@ var SoundCloudIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the Soundcloud API sc[methodName] = function () { - if (scPlayer !== null) { - - // DO method switch (methodName) { case 'play': return scPlayer.play(); @@ -284,7 +166,6 @@ var SoundCloudIframeRenderer = { return scPlayer.pause(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -296,7 +177,6 @@ var SoundCloudIframeRenderer = { assignMethods(methods[_i]); } - // add a ready method that SC can fire window['__ready__' + sc.id] = function (_scPlayer) { mediaElement.scPlayer = scPlayer = _scPlayer; @@ -305,7 +185,6 @@ var SoundCloudIframeRenderer = { scPlayer.play(); } - // do call stack if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { @@ -313,51 +192,44 @@ var SoundCloudIframeRenderer = { if (stackItem.type === 'set') { var propName = stackItem.propName, - capName = "" + propName.substring(0, 1).toUpperCase() + propName.substring(1); + capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - sc["set" + capName](stackItem.value); + sc['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { sc[stackItem.methodName](); } } } - // SoundCloud properties are async, so we don't fire the event until the property callback fires scPlayer.bind(SC.Widget.Events.PLAY_PROGRESS, function () { paused = false; ended = false; - scPlayer.getPosition(function (_currentTime) { currentTime = _currentTime / 1000; var event = mejs.Utils.createEvent('timeupdate', sc); mediaElement.dispatchEvent(event); }); }); - scPlayer.bind(SC.Widget.Events.PAUSE, function () { paused = true; - var event = mejs.Utils.createEvent('pause', sc); mediaElement.dispatchEvent(event); }); scPlayer.bind(SC.Widget.Events.PLAY, function () { paused = false; ended = false; - var event = mejs.Utils.createEvent('play', sc); mediaElement.dispatchEvent(event); }); scPlayer.bind(SC.Widget.Events.FINISHED, function () { paused = false; ended = true; - var event = mejs.Utils.createEvent('ended', sc); mediaElement.dispatchEvent(event); }); scPlayer.bind(SC.Widget.Events.READY, function () { scPlayer.getDuration(function (_duration) { duration = _duration / 1000; - var event = mejs.Utils.createEvent('loadedmetadata', sc); mediaElement.dispatchEvent(event); }); @@ -366,7 +238,6 @@ var SoundCloudIframeRenderer = { scPlayer.getDuration(function (loadProgress) { if (duration > 0) { bufferedTime = duration * loadProgress; - var event = mejs.Utils.createEvent('progress', sc); mediaElement.dispatchEvent(event); } @@ -379,16 +250,13 @@ var SoundCloudIframeRenderer = { }); }); - // give initial events var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay']; - for (var _i3 = 0, _total3 = initEvents.length; _i3 < _total3; _i3++) { var event = mejs.Utils.createEvent(initEvents[_i3], sc); mediaElement.dispatchEvent(event); } }; - // container for API API scIframe = document.createElement('iframe'); scIframe.id = sc.id; scIframe.width = 10; @@ -406,7 +274,7 @@ var SoundCloudIframeRenderer = { id: sc.id }; - SoundCloudApi.enqueueIframe(scSettings); + SoundCloudApi.load(scSettings); sc.setSize = function () {}; sc.hide = function () { @@ -428,13 +296,9 @@ var SoundCloudIframeRenderer = { } }; -/** - * Register SoundCloud type based on URL structure - * - */ mejs.Utils.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//soundcloud.com') || url.includes('//w.soundcloud.com') ? 'video/x-soundcloud' : null; + return (/\/\/(w\.)?soundcloud.com/i.test(url) ? 'video/x-soundcloud' : null + ); }); mejs.Renderers.add(SoundCloudIframeRenderer); diff --git a/lib/mejs/renderers/soundcloud.min.js b/lib/mejs/renderers/soundcloud.min.js index 05878aedb52e364c47aa464df0336e3f015c2cac..01bacf0a2c9b1f119a6aca41d1d3ae8248c9b96c 100644 --- a/lib/mejs/renderers/soundcloud.min.js +++ b/lib/mejs/renderers/soundcloud.min.js @@ -1,14 +1,4 @@ /*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - *//*! * MediaElement.js * http://www.mediaelementjs.com/ * @@ -19,4 +9,4 @@ * License: MIT * */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isSDKStarted){var a=document.getElementsByTagName("head")[0]||document.documentElement,b=document.createElement("script"),c=!1;b.src="//w.soundcloud.com/player/api.js",b.onload=b.onreadystatechange=function(){c||d.readyState&&"loaded"!==d.readyState&&"complete"!==d.readyState||(c=!0,d.apiReady(),b.onload=b.onreadystatechange=null,b.remove())},a.appendChild(b),d.isSDKStarted=!0}},apiReady:function(){for(d.isLoaded=!0,d.isSDKLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=SC.Widget(a.iframe);window["__ready__"+a.id](b)}},e={name:"soundcloud_iframe",options:{prefix:"soundcloud_iframe"},canPlayType:function(a){return["video/soundcloud","video/x-soundcloud"].includes(a)},create:function(a,b,c){var e={},f=[],g=4,h=a.originalNode.autoplay,i=0,j=0,k=0,l=1,m=!1,n=!0,o=!1,p=null,q=null;e.options=b,e.id=a.id+"_"+b.prefix,e.mediaElement=a;for(var r=mejs.html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);e["get"+c]=function(){if(null!==p){var a=null;switch(b){case"currentTime":return j;case"duration":return i;case"volume":return l;case"paused":return n;case"ended":return o;case"muted":return m;case"buffered":return{start:function(){return 0},end:function(){return k*i},length:1};case"src":return q?q.src:"";case"readyState":return g}return a}return null},e["set"+c]=function(c){if(null!==p)switch(b){case"src":var d="string"==typeof c?c:c[0].src;p.load(d),h&&p.play();break;case"currentTime":p.seekTo(1e3*c);break;case"muted":c?p.setVolume(0):p.setVolume(1),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"volume":p.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"readyState":var g=mejs.Utils.createEvent("canplay",e);a.dispatchEvent(g)}else f.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=mejs.html5media.methods,w=function(a){e[a]=function(){if(null!==p)switch(a){case"play":return p.play();case"pause":return p.pause();case"load":return null}else f.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);window["__ready__"+e.id]=function(b){if(a.scPlayer=p=b,h&&p.play(),f.length)for(var c=0,d=f.length;d>c;c++){var g=f[c];if("set"===g.type){var l=g.propName,m=""+l.substring(0,1).toUpperCase()+l.substring(1);e["set"+m](g.value)}else"call"===g.type&&e[g.methodName]()}p.bind(SC.Widget.Events.PLAY_PROGRESS,function(){n=!1,o=!1,p.getPosition(function(b){j=b/1e3;var c=mejs.Utils.createEvent("timeupdate",e);a.dispatchEvent(c)})}),p.bind(SC.Widget.Events.PAUSE,function(){n=!0;var b=mejs.Utils.createEvent("pause",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.PLAY,function(){n=!1,o=!1;var b=mejs.Utils.createEvent("play",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.FINISHED,function(){n=!1,o=!0;var b=mejs.Utils.createEvent("ended",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.READY,function(){p.getDuration(function(b){i=b/1e3;var c=mejs.Utils.createEvent("loadedmetadata",e);a.dispatchEvent(c)})}),p.bind(SC.Widget.Events.LOAD_PROGRESS,function(){p.getDuration(function(b){if(i>0){k=i*b;var c=mejs.Utils.createEvent("progress",e);a.dispatchEvent(c)}}),p.getDuration(function(b){i=b;var c=mejs.Utils.createEvent("loadedmetadata",e);a.dispatchEvent(c)})});for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=mejs.Utils.createEvent(q[r],e);a.dispatchEvent(t)}},q=document.createElement("iframe"),q.id=e.id,q.width=10,q.height=10,q.frameBorder=0,q.style.visibility="hidden",q.src=c[0].src,q.scrolling="no",a.appendChild(q),a.originalNode.style.display="none";var z={iframe:q,id:e.id};return d.enqueueIframe(z),e.setSize=function(){},e.hide=function(){e.pause(),q&&(q.style.display="none")},e.show=function(){q&&(q.style.display="")},e.destroy=function(){p.destroy()},e}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//soundcloud.com")||a.includes("//w.soundcloud.com")?"video/x-soundcloud":null}),mejs.Renderers.add(e)},{}]},{},[1]); \ No newline at end of file +!function e(t,n,r){function a(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return a(n||e)},d,d.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof SC?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://w.soundcloud.com/player/api.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=SC.Widget(e.iframe);window["__ready__"+e.id](t)}},a={name:"soundcloud_iframe",options:{prefix:"soundcloud_iframe"},canPlayType:function(e){return~["video/soundcloud","video/x-soundcloud"].indexOf(e.toLowerCase())},create:function(e,t,n){var a={},i=[],s=e.originalNode.autoplay,o=0,u=0,c=0,d=!0,l=!1,p=null,f=null;a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var v=mejs.html5media.properties,m=0,h=v.length;m<h;m++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==p){switch(t){case"currentTime":return u;case"duration":return o;case"volume":return 1;case"paused":return d;case"ended":return l;case"muted":return!1;case"buffered":return{start:function(){return 0},end:function(){return c*o},length:1};case"src":return f?f.src:"";case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==p)switch(t){case"src":var r="string"==typeof n?n:n[0].src;p.load(r),s&&p.play();break;case"currentTime":p.seekTo(1e3*n);break;case"muted":n?p.setVolume(0):p.setVolume(1),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"volume":p.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"readyState":var o=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(o)}else i.push({type:"set",propName:t,value:n})}}(v[m]);for(var y=mejs.html5media.methods,E=0,g=y.length;E<g;E++)!function(e){a[e]=function(){if(null!==p)switch(e){case"play":return p.play();case"pause":return p.pause();case"load":return null}else i.push({type:"call",methodName:e})}}(y[E]);window["__ready__"+a.id]=function(t){if(e.scPlayer=p=t,s&&p.play(),i.length)for(var n=0,r=i.length;n<r;n++){var f=i[n];if("set"===f.type){var v=f.propName,m=""+v.substring(0,1).toUpperCase()+v.substring(1);a["set"+m](f.value)}else"call"===f.type&&a[f.methodName]()}p.bind(SC.Widget.Events.PLAY_PROGRESS,function(){d=!1,l=!1,p.getPosition(function(t){u=t/1e3;var n=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(n)})}),p.bind(SC.Widget.Events.PAUSE,function(){d=!0;var t=mejs.Utils.createEvent("pause",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.PLAY,function(){d=!1,l=!1;var t=mejs.Utils.createEvent("play",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.FINISHED,function(){d=!1,l=!0;var t=mejs.Utils.createEvent("ended",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.READY,function(){p.getDuration(function(t){o=t/1e3;var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)})}),p.bind(SC.Widget.Events.LOAD_PROGRESS,function(){p.getDuration(function(t){if(o>0){c=o*t;var n=mejs.Utils.createEvent("progress",a);e.dispatchEvent(n)}}),p.getDuration(function(t){o=t;var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)})});for(var h=["rendererready","loadeddata","loadedmetadata","canplay"],y=0,E=h.length;y<E;y++){var g=mejs.Utils.createEvent(h[y],a);e.dispatchEvent(g)}},(f=document.createElement("iframe")).id=a.id,f.width=10,f.height=10,f.frameBorder=0,f.style.visibility="hidden",f.src=n[0].src,f.scrolling="no",e.appendChild(f),e.originalNode.style.display="none";var S={iframe:f,id:a.id};return r.load(S),a.setSize=function(){},a.hide=function(){a.pause(),f&&(f.style.display="none")},a.show=function(){f&&(f.style.display="")},a.destroy=function(){p.destroy()},a}};mejs.Utils.typeChecks.push(function(e){return/\/\/(w\.)?soundcloud.com/i.test(e)?"video/x-soundcloud":null}),mejs.Renderers.add(a)},{}]},{},[1]); \ No newline at end of file diff --git a/lib/mejs/renderers/twitch.js b/lib/mejs/renderers/twitch.js index 32a2ee42218484ef6f6d6e35ae99640bda14bf37..c639c72528fa85d9f2ecf0ec597937b620aacde0 100644 --- a/lib/mejs/renderers/twitch.js +++ b/lib/mejs/renderers/twitch.js @@ -11,132 +11,43 @@ */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; -/** - * Twitch renderer - * - * Uses <iframe> approach and uses Twitch API to manipulate it. - * @see https://github.com/justintv/Twitch-API/blob/master/embed-video.md - */ - -var twitchApi = { - /** - * @type {Boolean} - */ - isIframeStarted: false, - /** - * @type {Boolean} - */ - isIframeLoaded: false, - /** - * @type {Array} - */ - iframeQueue: [], - - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - enqueueIframe: function enqueueIframe(settings) { - - // Check whether Twitch API is already loaded. - twitchApi.isLoaded = typeof Twitch !== 'undefined'; - - if (twitchApi.isLoaded) { - twitchApi.createIframe(settings); - } else { - twitchApi.loadIframeApi(); - twitchApi.iframeQueue.push(settings); - } - }, - - /** - * Load Twitch API script on the header of the document - * - */ - loadIframeApi: function loadIframeApi() { - if (!twitchApi.isIframeStarted) { - - var script = document.createElement('script'), - firstScriptTag = document.getElementsByTagName('script')[0]; - - var done = false; - - script.src = '//player.twitch.tv/js/embed/v1.js'; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) { - done = true; - twitchApi.iFrameReady(); - script.onload = script.onreadystatechange = null; - } - }; - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - twitchApi.isIframeStarted = true; - } - }, +var TwitchApi = { - /** - * Process queue of Twitch <iframe> element creation - * - */ - iFrameReady: function iFrameReady() { + promise: null, - twitchApi.isLoaded = true; - twitchApi.isIframeLoaded = true; + load: function load(settings) { - while (twitchApi.iframeQueue.length > 0) { - var settings = twitchApi.iframeQueue.pop(); - twitchApi.createIframe(settings); + if (typeof Twitch !== 'undefined') { + TwitchApi._createPlayer(settings); + } else { + TwitchApi.promise = TwitchApi.promise || mejs.Utils.loadScript('https://player.twitch.tv/js/embed/v1.js'); + TwitchApi.promise.then(function () { + TwitchApi._createPlayer(settings); + }); } }, - /** - * Create a new instance of Twitch API player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - createIframe: function createIframe(settings) { + _createPlayer: function _createPlayer(settings) { var player = new Twitch.Player(settings.id, settings); window['__ready__' + settings.id](player); }, - /** - * Extract ID from Twitch to be loaded through API - * Valid URL format(s): - * - https://player.twitch.tv/?video=40464143 - * - https://www.twitch.tv/40464143 - * - https://player.twitch.tv/?channel=monserrat - * - https://www.twitch.tv/monserrat - * - * @param {String} url - Twitch full URL to grab the number Id of the source - * @return {int} - */ getTwitchId: function getTwitchId(url) { var twitchId = ''; if (url.indexOf('?') > 0) { - twitchId = twitchApi.getTwitchIdFromParam(url); + twitchId = TwitchApi.getTwitchIdFromParam(url); if (twitchId === '') { - twitchId = twitchApi.getTwitchIdFromUrl(url); + twitchId = TwitchApi.getTwitchIdFromUrl(url); } } else { - twitchId = twitchApi.getTwitchIdFromUrl(url); + twitchId = TwitchApi.getTwitchIdFromUrl(url); } return twitchId; }, - /** - * Get ID from URL with format: - * - https://player.twitch.tv/?channel=monserrat - * - https://player.twitch.tv/?video=40464143 - * - * @param {String} url - * @returns {string} - */ getTwitchIdFromParam: function getTwitchIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { @@ -150,10 +61,10 @@ var twitchApi = { for (var i = 0, total = parameters.length; i < total; i++) { var paramParts = parameters[i].split('='); - if (paramParts[0].includes('channel=')) { + if (~paramParts[0].indexOf('channel=')) { twitchId = paramParts[1]; break; - } else if (paramParts[0].includes('video=')) { + } else if (~paramParts[0].indexOf('video=')) { twitchId = 'v' + paramParts[1]; break; } @@ -162,14 +73,6 @@ var twitchApi = { return twitchId; }, - /** - * Get ID from URL with formats: - * - https://www.twitch.tv/40464143 - * - https://www.twitch.tv/monserrat - * - * @param {String} url - * @return {?String} - */ getTwitchIdFromUrl: function getTwitchIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { @@ -179,18 +82,13 @@ var twitchApi = { var parts = url.split('?'); url = parts[0]; var id = url.substring(url.lastIndexOf('/') + 1); - return id.match(/^\d+$/i) !== null ? 'v' + id : id; + return (/^\d+$/i.test(id) !== null ? 'v' + id : id + ); }, - /** - * Determine whether media is channel or video based on Twitch ID - * - * @see getTwitchId() - * @param {String} id - * @returns {String} - */ getTwitchType: function getTwitchType(id) { - return id.match(/^v\d+/i) !== null ? 'video' : 'channel'; + return (/^v\d+/i.test(id) !== null ? 'video' : 'channel' + ); } }; @@ -201,31 +99,15 @@ var TwitchIframeRenderer = { prefix: 'twitch_iframe' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ canPlayType: function canPlayType(type) { - return ['video/twitch', 'video/x-twitch'].includes(type); + return ~['video/twitch', 'video/x-twitch'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { - - // API objects var twitch = {}, apiStack = [], readyState = 4, - twitchId = twitchApi.getTwitchId(mediaFiles[0].src); + twitchId = TwitchApi.getTwitchId(mediaFiles[0].src); var twitchPlayer = null, paused = true, @@ -239,19 +121,15 @@ var TwitchIframeRenderer = { twitch.id = mediaElement.id + '_' + options.prefix; twitch.mediaElement = mediaElement; - // wrappers for get/set var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { - // add to flash state that we will store - var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); twitch['get' + capName] = function () { if (twitchPlayer !== null) { var value = null; - // figure out how to get Twitch dta here switch (propName) { case 'currentTime': time = twitchPlayer.getCurrentTime(); @@ -288,7 +166,7 @@ var TwitchIframeRenderer = { }; case 'src': - return twitchApi.getTwitchType(twitchId) === 'channel' ? twitchPlayer.getChannel() : twitchPlayer.getVideo(); + return TwitchApi.getTwitchType(twitchId) === 'channel' ? twitchPlayer.getChannel() : twitchPlayer.getVideo(); case 'readyState': return readyState; @@ -303,15 +181,13 @@ var TwitchIframeRenderer = { twitch['set' + capName] = function (value) { if (twitchPlayer !== null) { - - // do something switch (propName) { case 'src': var url = typeof value === 'string' ? value : value[0].src, - videoId = twitchApi.getTwitchId(url); + videoId = TwitchApi.getTwitchId(url); - if (twitchApi.getTwitchType(twitchId) === 'channel') { + if (TwitchApi.getTwitchType(twitchId) === 'channel') { twitchPlayer.setChannel(videoId); } else { twitchPlayer.setVideo(videoId); @@ -352,7 +228,6 @@ var TwitchIframeRenderer = { break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -362,16 +237,11 @@ var TwitchIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { - - // run the method on the native HTMLMediaElement twitch[methodName] = function () { if (twitchPlayer !== null) { - - // DO method switch (methodName) { case 'play': paused = false; @@ -393,12 +263,6 @@ var TwitchIframeRenderer = { assignMethods(methods[_i]); } - /** - * Dispatch a list of events - * - * @private - * @param {Array} events - */ function sendEvents(events) { for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) { var event = mejs.Utils.createEvent(events[_i2], twitch); @@ -406,12 +270,10 @@ var TwitchIframeRenderer = { } } - // Initial method to register all Twitch events when initializing <iframe> window['__ready__' + twitch.id] = function (_twitchPlayer) { mediaElement.twitchPlayer = twitchPlayer = _twitchPlayer; - // do call stack if (apiStack.length) { for (var _i3 = 0, _total3 = apiStack.length; _i3 < _total3; _i3++) { @@ -432,7 +294,6 @@ var TwitchIframeRenderer = { twitchIframe.style.width = '100%'; twitchIframe.style.height = '100%'; - // a few more events var events = ['mouseover', 'mouseout']; var assignEvents = function assignEvents(e) { @@ -446,7 +307,6 @@ var TwitchIframeRenderer = { var timer = void 0; - // Twitch events twitchPlayer.addEventListener('ready', function () { paused = false; ended = false; @@ -460,7 +320,6 @@ var TwitchIframeRenderer = { ended = false; sendEvents(['play', 'playing', 'progress']); - // Workaround to update progress bar timer = setInterval(function () { twitchPlayer.getCurrentTime(); sendEvents(['timeupdate']); @@ -483,11 +342,10 @@ var TwitchIframeRenderer = { }); }; - // CREATE Twitch var height = mediaElement.originalNode.height, width = mediaElement.originalNode.width, twitchContainer = document.createElement('div'), - type = twitchApi.getTwitchType(twitchId), + type = TwitchApi.getTwitchType(twitchId), twitchSettings = { id: twitch.id, width: width, @@ -505,11 +363,10 @@ var TwitchIframeRenderer = { mediaElement.originalNode.style.display = 'none'; mediaElement.originalNode.autoplay = false; - // send it off for async loading and creation - twitchApi.enqueueIframe(twitchSettings); + TwitchApi.load(twitchSettings); twitch.setSize = function (width, height) { - if (twitchApi !== null && !isNaN(width) && !isNaN(height)) { + if (TwitchApi !== null && !isNaN(width) && !isNaN(height)) { twitchContainer.setAttribute('width', width); twitchContainer.setAttribute('height', height); } @@ -528,8 +385,8 @@ var TwitchIframeRenderer = { }; mejs.Utils.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//www.twitch.tv') || url.includes('//player.twitch.tv') ? 'video/x-twitch' : null; + return (/\/\/(www|player).twitch.tv/i.test(url) ? 'video/x-twitch' : null + ); }); mejs.Renderers.add(TwitchIframeRenderer); diff --git a/lib/mejs/renderers/twitch.min.js b/lib/mejs/renderers/twitch.min.js index 3d58460350e37c480040cdb7063ff3bc1f49d68e..1035c87901744e75b175a0240689ce4ddb4d02ed 100644 --- a/lib/mejs/renderers/twitch.min.js +++ b/lib/mejs/renderers/twitch.min.js @@ -1,14 +1,4 @@ /*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - *//*! * MediaElement.js * http://www.mediaelementjs.com/ * @@ -19,4 +9,4 @@ * License: MIT * */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded="undefined"!=typeof Twitch,d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isIframeStarted){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0],c=!1;a.src="//player.twitch.tv/js/embed/v1.js",a.onload=a.onreadystatechange=function(){c||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(c=!0,d.iFrameReady(),a.onload=a.onreadystatechange=null)},b.parentNode.insertBefore(a,b),d.isIframeStarted=!0}},iFrameReady:function(){for(d.isLoaded=!0,d.isIframeLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=new Twitch.Player(a.id,a);window["__ready__"+a.id](b)},getTwitchId:function(a){var b="";return a.indexOf("?")>0?(b=d.getTwitchIdFromParam(a),""===b&&(b=d.getTwitchIdFromUrl(a))):b=d.getTwitchIdFromUrl(a),b},getTwitchIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if(g[0].includes("channel=")){d=g[1];break}if(g[0].includes("video=")){d="v"+g[1];break}}return d},getTwitchIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");a=b[0];var c=a.substring(a.lastIndexOf("/")+1);return null!==c.match(/^\d+$/i)?"v"+c:c},getTwitchType:function(a){return null!==a.match(/^v\d+/i)?"video":"channel"}},e={name:"twitch_iframe",options:{prefix:"twitch_iframe"},canPlayType:function(a){return["video/twitch","video/x-twitch"].includes(a)},create:function(a,b,c){function e(b){for(var c=0,d=b.length;d>c;c++){var e=mejs.Utils.createEvent(b[c],f);a.dispatchEvent(e)}}var f={},g=[],h=4,i=d.getTwitchId(c[0].src),j=null,k=!0,l=!1,m=!1,n=1,o=1/0,p=0;f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=mejs.html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);f["get"+c]=function(){if(null!==j){var a=null;switch(b){case"currentTime":return p=j.getCurrentTime();case"duration":return o=j.getDuration();case"volume":return n=j.getVolume();case"paused":return k=j.isPaused();case"ended":return l=j.getEnded();case"muted":return j.getMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return"channel"===d.getTwitchType(i)?j.getChannel():j.getVideo();case"readyState":return h}return a}return null},f["set"+c]=function(c){if(null!==j)switch(b){case"src":var e="string"==typeof c?c:c[0].src,h=d.getTwitchId(e);"channel"===d.getTwitchType(i)?j.setChannel(h):j.setVideo(h);break;case"currentTime":j.seek(c),setTimeout(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},50);break;case"muted":j.setMuted(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"volume":n=c,j.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"readyState":var k=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(k)}else g.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=mejs.html5media.methods,v=function(a){f[a]=function(){if(null!==j)switch(a){case"play":return k=!1,j.play();case"pause":return k=!0,j.pause();case"load":return null}else g.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);window["__ready__"+f.id]=function(b){if(a.twitchPlayer=j=b,g.length)for(var c=0,d=g.length;d>c;c++){var h=g[c];if("set"===h.type){var i=h.propName,n=""+i.substring(0,1).toUpperCase()+i.substring(1);f["set"+n](h.value)}else"call"===h.type&&f[h.methodName]()}var o=document.getElementById(f.id).firstChild;o.style.width="100%",o.style.height="100%";for(var p=["mouseover","mouseout"],q=function(b){var c=createEvent(b.type,f);a.dispatchEvent(c)},r=0,s=p.length;s>r;r++)o.addEventListener(p[r],q,!1);var t=void 0;j.addEventListener("ready",function(){k=!1,l=!1,e(["rendererready","loadedmetadata","loadeddata","canplay"])}),j.addEventListener("play",function(){m||(m=!0),k=!1,l=!1,e(["play","playing","progress"]),t=setInterval(function(){j.getCurrentTime(),e(["timeupdate"])},250)}),j.addEventListener("pause",function(){k=!0,l=!1,j.getEnded()||e(["pause"])}),j.addEventListener("ended",function(){k=!0,l=!0,e(["ended"]),clearInterval(t),m=!1,t=null})};var y=a.originalNode.height,z=a.originalNode.width,A=document.createElement("div"),B=d.getTwitchType(i),C={id:f.id,width:z,height:y,playsinline:!1,autoplay:a.originalNode.autoplay};return C[B]=i,A.id=f.id,A.style.width="100%",A.style.height="100%",a.originalNode.parentNode.insertBefore(A,a.originalNode),a.originalNode.style.display="none",a.originalNode.autoplay=!1,d.enqueueIframe(C),f.setSize=function(a,b){null===d||isNaN(a)||isNaN(b)||(A.setAttribute("width",a),A.setAttribute("height",b))},f.hide=function(){f.pause(),A.style.display="none"},f.show=function(){A.style.display=""},f.destroy=function(){},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.twitch.tv")||a.includes("//player.twitch.tv")?"video/x-twitch":null}),mejs.Renderers.add(e)},{}]},{},[1]); \ No newline at end of file +!function e(t,n,r){function i(s,u){if(!n[s]){if(!t[s]){var o="function"==typeof require&&require;if(!u&&o)return o(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return i(n||e)},d,d.exports,e,t,n,r)}return n[s].exports}for(var a="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof Twitch?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://player.twitch.tv/js/embed/v1.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=new Twitch.Player(e.id,e);window["__ready__"+e.id](t)},getTwitchId:function(e){var t="";return e.indexOf("?")>0?""===(t=r.getTwitchIdFromParam(e))&&(t=r.getTwitchIdFromUrl(e)):t=r.getTwitchIdFromUrl(e),t},getTwitchIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",r=0,i=t.length;r<i;r++){var a=t[r].split("=");if(~a[0].indexOf("channel=")){n=a[1];break}if(~a[0].indexOf("video=")){n="v"+a[1];break}}return n},getTwitchIdFromUrl:function(e){if(void 0===e||null===e||!e.trim().length)return null;var t=(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1);return null!==/^\d+$/i.test(t)?"v"+t:t},getTwitchType:function(e){return null!==/^v\d+/i.test(e)?"video":"channel"}},i={name:"twitch_iframe",options:{prefix:"twitch_iframe"},canPlayType:function(e){return~["video/twitch","video/x-twitch"].indexOf(e.toLowerCase())},create:function(e,t,n){function i(t){for(var n=0,r=t.length;n<r;n++){var i=mejs.Utils.createEvent(t[n],a);e.dispatchEvent(i)}}var a={},s=[],u=r.getTwitchId(n[0].src),o=null,l=!0,d=!1,c=!1,h=1,p=1/0,f=0;a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var v=mejs.html5media.properties,m=0,g=v.length;m<g;m++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==o){switch(t){case"currentTime":return f=o.getCurrentTime();case"duration":return p=o.getDuration();case"volume":return h=o.getVolume();case"paused":return l=o.isPaused();case"ended":return d=o.getEnded();case"muted":return o.getMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return"channel"===r.getTwitchType(u)?o.getChannel():o.getVideo();case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==o)switch(t){case"src":var i="string"==typeof n?n:n[0].src,l=r.getTwitchId(i);"channel"===r.getTwitchType(u)?o.setChannel(l):o.setVideo(l);break;case"currentTime":o.seek(n),setTimeout(function(){var t=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(t)},50);break;case"muted":o.setMuted(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"volume":h=n,o.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"readyState":var d=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(d)}else s.push({type:"set",propName:t,value:n})}}(v[m]);for(var y=mejs.html5media.methods,w=0,T=y.length;w<T;w++)!function(e){a[e]=function(){if(null!==o)switch(e){case"play":return l=!1,o.play();case"pause":return l=!0,o.pause();case"load":return null}else s.push({type:"call",methodName:e})}}(y[w]);window["__ready__"+a.id]=function(t){if(e.twitchPlayer=o=t,s.length)for(var n=0,r=s.length;n<r;n++){var u=s[n];if("set"===u.type){var h=u.propName,p=""+h.substring(0,1).toUpperCase()+h.substring(1);a["set"+p](u.value)}else"call"===u.type&&a[u.methodName]()}var f=document.getElementById(a.id).firstChild;f.style.width="100%",f.style.height="100%";for(var v=["mouseover","mouseout"],m=function(t){var n=createEvent(t.type,a);e.dispatchEvent(n)},g=0,y=v.length;g<y;g++)f.addEventListener(v[g],m,!1);var w=void 0;o.addEventListener("ready",function(){l=!1,d=!1,i(["rendererready","loadedmetadata","loadeddata","canplay"])}),o.addEventListener("play",function(){c||(c=!0),l=!1,d=!1,i(["play","playing","progress"]),w=setInterval(function(){o.getCurrentTime(),i(["timeupdate"])},250)}),o.addEventListener("pause",function(){l=!0,d=!1,o.getEnded()||i(["pause"])}),o.addEventListener("ended",function(){l=!0,d=!0,i(["ended"]),clearInterval(w),c=!1,w=null})};var E=e.originalNode.height,N=e.originalNode.width,_=document.createElement("div"),b=r.getTwitchType(u),U={id:a.id,width:N,height:E,playsinline:!1,autoplay:e.originalNode.autoplay};return U[b]=u,_.id=a.id,_.style.width="100%",_.style.height="100%",e.originalNode.parentNode.insertBefore(_,e.originalNode),e.originalNode.style.display="none",e.originalNode.autoplay=!1,r.load(U),a.setSize=function(e,t){null===r||isNaN(e)||isNaN(t)||(_.setAttribute("width",e),_.setAttribute("height",t))},a.hide=function(){a.pause(),_.style.display="none"},a.show=function(){_.style.display=""},a.destroy=function(){},a}};mejs.Utils.typeChecks.push(function(e){return/\/\/(www|player).twitch.tv/i.test(e)?"video/x-twitch":null}),mejs.Renderers.add(i)},{}]},{},[1]); \ No newline at end of file diff --git a/lib/mejs/renderers/vimeo.js b/lib/mejs/renderers/vimeo.js index 14ab889dc10087e1d778523d98a5bb496df4da00..4a07de895343f128753b269a0a5e75255a2c1c4d 100644 --- a/lib/mejs/renderers/vimeo.js +++ b/lib/mejs/renderers/vimeo.js @@ -11,119 +11,34 @@ */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; -/** - * Vimeo renderer - * - * Uses <iframe> approach and uses Vimeo API to manipulate it. - * All Vimeo calls return a Promise so this renderer accounts for that - * to update all the necessary values to interact with MediaElement player. - * Note: IE8 implements ECMAScript 3 that does not allow bare keywords in dot notation; - * that's why instead of using .catch ['catch'] is being used. - * @see https://github.com/vimeo/player.js - * - */ - -var vimeoApi = { - - /** - * @type {Boolean} - */ - isIframeStarted: false, - /** - * @type {Boolean} - */ - isIframeLoaded: false, - /** - * @type {Array} - */ - iframeQueue: [], - - /** - * Create a queue to prepare the creation of <iframe> - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - enqueueIframe: function enqueueIframe(settings) { - - if (vimeoApi.isLoaded) { - vimeoApi.createIframe(settings); - } else { - vimeoApi.loadIframeApi(); - vimeoApi.iframeQueue.push(settings); - } - }, - - /** - * Load Vimeo API script on the header of the document - * - */ - loadIframeApi: function loadIframeApi() { - - if (!vimeoApi.isIframeStarted) { - - var script = document.createElement('script'), - firstScriptTag = document.getElementsByTagName('script')[0]; - - var done = false; - - script.src = '//player.vimeo.com/api/player.js'; +var VimeoApi = { - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function () { - if (!done && (!undefined.readyState || undefined.readyState === undefined || undefined.readyState === 'loaded' || undefined.readyState === 'complete')) { - done = true; - vimeoApi.iFrameReady(); - script.onload = script.onreadystatechange = null; - } - }; - firstScriptTag.parentNode.insertBefore(script, firstScriptTag); - vimeoApi.isIframeStarted = true; - } - }, - - /** - * Process queue of Vimeo <iframe> element creation - * - */ - iFrameReady: function iFrameReady() { + promise: null, - vimeoApi.isLoaded = true; - vimeoApi.isIframeLoaded = true; + load: function load(settings) { - while (vimeoApi.iframeQueue.length > 0) { - var settings = vimeoApi.iframeQueue.pop(); - vimeoApi.createIframe(settings); + if (typeof Vimeo !== 'undefined') { + VimeoApi._createPlayer(settings); + } else { + VimeoApi.promise = VimeoApi.promise || mejs.Utils.loadScript('https://player.vimeo.com/api/player.js'); + VimeoApi.promise.then(function () { + VimeoApi._createPlayer(settings); + }); } }, - /** - * Create a new instance of Vimeo API player and trigger a custom event to initialize it - * - * @param {Object} settings - an object with settings needed to create <iframe> - */ - createIframe: function createIframe(settings) { + _createPlayer: function _createPlayer(settings) { var player = new Vimeo.Player(settings.iframe); window['__ready__' + settings.id](player); }, - /** - * Extract numeric value from Vimeo to be loaded through API - * Valid URL format(s): - * - https://player.vimeo.com/video/59777392 - * - https://vimeo.com/59777392 - * - * @param {String} url - Vimeo full URL to grab the number Id of the source - * @return {int} - */ getVimeoId: function getVimeoId(url) { if (url === undefined || url === null) { return null; } var parts = url.split('?'); - url = parts[0]; - return parseInt(url.substring(url.lastIndexOf('/') + 1)); } }; @@ -131,31 +46,15 @@ var vimeoApi = { var vimeoIframeRenderer = { name: 'vimeo_iframe', - options: { prefix: 'vimeo_iframe' }, - /** - * Determine if a specific element type can be played with this render - * - * @param {String} type - * @return {Boolean} - */ + canPlayType: function canPlayType(type) { - return ['video/vimeo', 'video/x-vimeo'].includes(type); + return ~['video/vimeo', 'video/x-vimeo'].indexOf(type.toLowerCase()); }, - /** - * Create the player instance and add all native events/methods/properties as possible - * - * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created - * @param {Object} options All the player configuration options passed through constructor - * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z} - * @return {Object} - */ create: function create(mediaElement, options, mediaFiles) { - - // exposed object var apiStack = [], vimeo = {}, readyState = 4; @@ -174,20 +73,12 @@ var vimeoIframeRenderer = { vimeo.id = mediaElement.id + '_' + options.prefix; vimeo.mediaElement = mediaElement; - /** - * Generate custom errors for Vimeo based on the API specifications - * - * @see https://github.com/vimeo/player.js#error - * @param {Object} error - * @param {Object} target - */ var errorHandler = function errorHandler(error, target) { var event = mejs.Utils.createEvent('error', target); event.message = error.name + ': ' + error.message; mediaElement.dispatchEvent(event); }; - // wrappers for get/set var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { @@ -232,7 +123,6 @@ var vimeoIframeRenderer = { case 'readyState': return readyState; } - return value; } else { return null; @@ -240,25 +130,20 @@ var vimeoIframeRenderer = { }; vimeo['set' + capName] = function (value) { - if (vimeoPlayer !== null) { - - // do something switch (propName) { - case 'src': var _url2 = typeof value === 'string' ? value : value[0].src, - videoId = vimeoApi.getVimeoId(_url2); + videoId = VimeoApi.getVimeoId(_url2); vimeoPlayer.loadVideo(videoId).then(function () { if (mediaElement.originalNode.autoplay) { vimeoPlayer.play(); } - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); break; - case 'currentTime': vimeoPlayer.setCurrentTime(value).then(function () { currentTime = value; @@ -266,11 +151,10 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('timeupdate', vimeo); mediaElement.dispatchEvent(event); }, 50); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); break; - case 'volume': vimeoPlayer.setVolume(value).then(function () { volume = value; @@ -279,13 +163,12 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); break; - case 'loop': - vimeoPlayer.setLoop(value)['catch'](function (error) { + vimeoPlayer.setLoop(value).catch(function (error) { errorHandler(error, vimeo); }); break; @@ -297,7 +180,7 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); } else { @@ -307,7 +190,7 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); } @@ -321,7 +204,6 @@ var vimeoIframeRenderer = { break; } } else { - // store for after "READY" event fires apiStack.push({ type: 'set', propName: propName, value: value }); } }; @@ -331,14 +213,10 @@ var vimeoIframeRenderer = { assignGettersSetters(props[i]); } - // add wrappers for native methods var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { vimeo[methodName] = function () { - if (vimeoPlayer !== null) { - - // DO method switch (methodName) { case 'play': paused = false; @@ -348,7 +226,6 @@ var vimeoIframeRenderer = { return vimeoPlayer.pause(); case 'load': return null; - } } else { apiStack.push({ type: 'call', methodName: methodName }); @@ -360,15 +237,12 @@ var vimeoIframeRenderer = { assignMethods(methods[_i]); } - // Initial method to register all Vimeo events when initializing <iframe> window['__ready__' + vimeo.id] = function (_vimeoPlayer) { mediaElement.vimeoPlayer = vimeoPlayer = _vimeoPlayer; - // do call stack if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { - var stackItem = apiStack[_i2]; if (stackItem.type === 'set') { @@ -385,7 +259,6 @@ var vimeoIframeRenderer = { var vimeoIframe = document.getElementById(vimeo.id); var events = void 0; - // a few more events events = ['mouseover', 'mouseout']; var assignEvents = function assignEvents(e) { @@ -397,11 +270,8 @@ var vimeoIframeRenderer = { vimeoIframe.addEventListener(events[_i3], assignEvents, false); } - // Vimeo events vimeoPlayer.on('loaded', function () { - vimeoPlayer.getDuration().then(function (loadProgress) { - duration = loadProgress; if (duration > 0) { @@ -410,14 +280,12 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('loadedmetadata', vimeo); mediaElement.dispatchEvent(event); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); }); - vimeoPlayer.on('progress', function () { vimeoPlayer.getDuration().then(function (loadProgress) { - duration = loadProgress; if (duration > 0) { @@ -426,7 +294,7 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('progress', vimeo); mediaElement.dispatchEvent(event); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); }); @@ -436,7 +304,7 @@ var vimeoIframeRenderer = { var event = mejs.Utils.createEvent('timeupdate', vimeo); mediaElement.dispatchEvent(event); - })['catch'](function (error) { + }).catch(function (error) { errorHandler(error, vimeo); }); }); @@ -461,7 +329,6 @@ var vimeoIframeRenderer = { mediaElement.dispatchEvent(event); }); - // give initial events events = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay']; for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) { @@ -473,10 +340,9 @@ var vimeoIframeRenderer = { var height = mediaElement.originalNode.height, width = mediaElement.originalNode.width, vimeoContainer = document.createElement('iframe'), - standardUrl = '//player.vimeo.com/video/' + vimeoApi.getVimeoId(mediaFiles[0].src), - queryArgs = mediaFiles[0].src.includes('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : ''; + standardUrl = '//player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src), + queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : ''; - // Create Vimeo <iframe> markup vimeoContainer.setAttribute('id', vimeo.id); vimeoContainer.setAttribute('width', width); vimeoContainer.setAttribute('height', height); @@ -489,7 +355,7 @@ var vimeoIframeRenderer = { mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; - vimeoApi.enqueueIframe({ + VimeoApi.load({ iframe: vimeoContainer, id: vimeo.id }); @@ -512,16 +378,11 @@ var vimeoIframeRenderer = { return vimeo; } - }; -/** - * Register Vimeo type based on URL structure - * - */ mejs.Utils.typeChecks.push(function (url) { - url = url.toLowerCase(); - return url.includes('//player.vimeo') || url.includes('vimeo.com') ? 'video/x-vimeo' : null; + return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url) ? 'video/x-vimeo' : null + ); }); mejs.Renderers.add(vimeoIframeRenderer); diff --git a/lib/mejs/renderers/vimeo.min.js b/lib/mejs/renderers/vimeo.min.js index c8f11b5e44fc376a73629e9110be7334e5acb7bf..0ea08aaec7bd46771394e30a4b43f936c3981cae 100644 --- a/lib/mejs/renderers/vimeo.min.js +++ b/lib/mejs/renderers/vimeo.min.js @@ -1,14 +1,4 @@ /*! - * MediaElement.js - * http://www.mediaelementjs.com/ - * - * Wrapper that mimics native HTML5 MediaElement (audio and video) - * using a variety of technologies (pure JavaScript, Flash, iframe) - * - * Copyright 2010-2017, John Dyer (http://j.hn/) - * License: MIT - * - *//*! * MediaElement.js * http://www.mediaelementjs.com/ * @@ -19,4 +9,4 @@ * License: MIT * */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isIframeStarted){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0],c=!1;a.src="//player.vimeo.com/api/player.js",a.onload=a.onreadystatechange=function(){c||(void 0).readyState&&void 0!==(void 0).readyState&&"loaded"!==(void 0).readyState&&"complete"!==(void 0).readyState||(c=!0,d.iFrameReady(),a.onload=a.onreadystatechange=null)},b.parentNode.insertBefore(a,b),d.isIframeStarted=!0}},iFrameReady:function(){for(d.isLoaded=!0,d.isIframeLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=new Vimeo.Player(a.iframe);window["__ready__"+a.id](b)},getVimeoId:function(a){if(void 0===a||null===a)return null;var b=a.split("?");return a=b[0],parseInt(a.substring(a.lastIndexOf("/")+1))}},e={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(a){return["video/vimeo","video/x-vimeo"].includes(a)},create:function(a,b,c){var e=[],f={},g=4,h=!0,i=1,j=i,k=0,l=0,m=!1,n=0,o=null,p="";f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=function(b,c){var d=mejs.Utils.createEvent("error",c);d.message=b.name+": "+b.message,a.dispatchEvent(d)},r=mejs.html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);f["get"+c]=function(){if(null!==o){var a=null;switch(b){case"currentTime":return k;case"duration":return n;case"volume":return i;case"muted":return 0===i;case"paused":return h;case"ended":return m;case"src":return o.getVideoUrl().then(function(a){p=a}),p;case"buffered":return{start:function(){return 0},end:function(){return l*n},length:1};case"readyState":return g}return a}return null},f["set"+c]=function(c){if(null!==o)switch(b){case"src":var g="string"==typeof c?c:c[0].src,h=d.getVimeoId(g);o.loadVideo(h).then(function(){a.originalNode.autoplay&&o.play()})["catch"](function(a){q(a,f)});break;case"currentTime":o.setCurrentTime(c).then(function(){k=c,setTimeout(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"volume":o.setVolume(c).then(function(){i=c,j=i,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"loop":o.setLoop(c)["catch"](function(a){q(a,f)});break;case"muted":c?o.setVolume(0).then(function(){i=0,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)}):o.setVolume(j).then(function(){i=j,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"readyState":var l=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(l)}else e.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=mejs.html5media.methods,w=function(a){f[a]=function(){if(null!==o)switch(a){case"play":return h=!1,o.play();case"pause":return h=!0,o.pause();case"load":return null}else e.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);window["__ready__"+f.id]=function(b){if(a.vimeoPlayer=o=b,e.length)for(var c=0,d=e.length;d>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);f["set"+j](g.value)}else"call"===g.type&&f[g.methodName]()}var p=document.getElementById(f.id),r=void 0;r=["mouseover","mouseout"];for(var s=function(b){var c=mejs.Utils.createEvent(b.type,f);a.dispatchEvent(c)},t=0,u=r.length;u>t;t++)p.addEventListener(r[t],s,!1);o.on("loaded",function(){o.getDuration().then(function(b){n=b,n>0&&(l=n*b);var c=mejs.Utils.createEvent("loadedmetadata",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("progress",function(){o.getDuration().then(function(b){n=b,n>0&&(l=n*b);var c=mejs.Utils.createEvent("progress",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("timeupdate",function(){o.getCurrentTime().then(function(b){k=b;var c=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("play",function(){h=!1,m=!1;var b=mejs.Utils.createEvent("play",f);a.dispatchEvent(b)}),o.on("pause",function(){h=!0,m=!1;var b=mejs.Utils.createEvent("pause",f);a.dispatchEvent(b)}),o.on("ended",function(){h=!1,m=!0;var b=mejs.Utils.createEvent("ended",f);a.dispatchEvent(b)}),r=["rendererready","loadeddata","loadedmetadata","canplay"];for(var v=0,w=r.length;w>v;v++){var x=mejs.Utils.createEvent(r[v],f);a.dispatchEvent(x)}};var z=a.originalNode.height,A=a.originalNode.width,B=document.createElement("iframe"),C="//player.vimeo.com/video/"+d.getVimeoId(c[0].src),D=c[0].src.includes("?")?"?"+c[0].src.slice(c[0].src.indexOf("?")+1):"";return B.setAttribute("id",f.id),B.setAttribute("width",A),B.setAttribute("height",z),B.setAttribute("frameBorder","0"),B.setAttribute("src",""+C+D),B.setAttribute("webkitallowfullscreen",""),B.setAttribute("mozallowfullscreen",""),B.setAttribute("allowfullscreen",""),a.originalNode.parentNode.insertBefore(B,a.originalNode),a.originalNode.style.display="none",d.enqueueIframe({iframe:B,id:f.id}),f.hide=function(){f.pause(),o&&(B.style.display="none")},f.setSize=function(a,b){B.setAttribute("width",a),B.setAttribute("height",b)},f.show=function(){o&&(B.style.display="")},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//player.vimeo")||a.includes("vimeo.com")?"video/x-vimeo":null}),mejs.Renderers.add(e)},{}]},{},[1]); \ No newline at end of file +!function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(a)return a(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return i(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof Vimeo?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://player.vimeo.com/api/player.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=new Vimeo.Player(e.iframe);window["__ready__"+e.id](t)},getVimeoId:function(e){return void 0===e||null===e?null:(e=e.split("?")[0],parseInt(e.substring(e.lastIndexOf("/")+1)))}},i={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(e){return~["video/vimeo","video/x-vimeo"].indexOf(e.toLowerCase())},create:function(e,t,n){var i=[],a={},o=!0,s=1,c=s,u=0,l=0,d=!1,m=0,f=null,v="";a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var p=function(t,n){var r=mejs.Utils.createEvent("error",n);r.message=t.name+": "+t.message,e.dispatchEvent(r)},h=mejs.html5media.properties,y=0,g=h.length;y<g;y++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==f){switch(t){case"currentTime":return u;case"duration":return m;case"volume":return s;case"muted":return 0===s;case"paused":return o;case"ended":return d;case"src":return f.getVideoUrl().then(function(e){v=e}),v;case"buffered":return{start:function(){return 0},end:function(){return l*m},length:1};case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==f)switch(t){case"src":var o="string"==typeof n?n:n[0].src,l=r.getVimeoId(o);f.loadVideo(l).then(function(){e.originalNode.autoplay&&f.play()}).catch(function(e){p(e,a)});break;case"currentTime":f.setCurrentTime(n).then(function(){u=n,setTimeout(function(){var t=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"volume":f.setVolume(n).then(function(){c=s=n,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"loop":f.setLoop(n).catch(function(e){p(e,a)});break;case"muted":n?f.setVolume(0).then(function(){s=0,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)}):f.setVolume(c).then(function(){s=c,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"readyState":var d=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(d)}else i.push({type:"set",propName:t,value:n})}}(h[y]);for(var E=mejs.html5media.methods,b=0,U=E.length;b<U;b++)!function(e){a[e]=function(){if(null!==f)switch(e){case"play":return o=!1,f.play();case"pause":return o=!0,f.pause();case"load":return null}else i.push({type:"call",methodName:e})}}(E[b]);window["__ready__"+a.id]=function(t){if(e.vimeoPlayer=f=t,i.length)for(var n=0,r=i.length;n<r;n++){var s=i[n];if("set"===s.type){var c=s.propName,v=""+c.substring(0,1).toUpperCase()+c.substring(1);a["set"+v](s.value)}else"call"===s.type&&a[s.methodName]()}for(var h=document.getElementById(a.id),y=void 0,g=function(t){var n=mejs.Utils.createEvent(t.type,a);e.dispatchEvent(n)},E=0,b=(y=["mouseover","mouseout"]).length;E<b;E++)h.addEventListener(y[E],g,!1);f.on("loaded",function(){f.getDuration().then(function(t){(m=t)>0&&(l=m*t);var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("progress",function(){f.getDuration().then(function(t){(m=t)>0&&(l=m*t);var n=mejs.Utils.createEvent("progress",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("timeupdate",function(){f.getCurrentTime().then(function(t){u=t;var n=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("play",function(){o=!1,d=!1;var t=mejs.Utils.createEvent("play",a);e.dispatchEvent(t)}),f.on("pause",function(){o=!0,d=!1;var t=mejs.Utils.createEvent("pause",a);e.dispatchEvent(t)}),f.on("ended",function(){o=!1,d=!0;var t=mejs.Utils.createEvent("ended",a);e.dispatchEvent(t)});for(var U=0,j=(y=["rendererready","loadeddata","loadedmetadata","canplay"]).length;U<j;U++){var w=mejs.Utils.createEvent(y[U],a);e.dispatchEvent(w)}};var j=e.originalNode.height,w=e.originalNode.width,_=document.createElement("iframe"),N="//player.vimeo.com/video/"+r.getVimeoId(n[0].src),x=~n[0].src.indexOf("?")?"?"+n[0].src.slice(n[0].src.indexOf("?")+1):"";return _.setAttribute("id",a.id),_.setAttribute("width",w),_.setAttribute("height",j),_.setAttribute("frameBorder","0"),_.setAttribute("src",""+N+x),_.setAttribute("webkitallowfullscreen",""),_.setAttribute("mozallowfullscreen",""),_.setAttribute("allowfullscreen",""),e.originalNode.parentNode.insertBefore(_,e.originalNode),e.originalNode.style.display="none",r.load({iframe:_,id:a.id}),a.hide=function(){a.pause(),f&&(_.style.display="none")},a.setSize=function(e,t){_.setAttribute("width",e),_.setAttribute("height",t)},a.show=function(){f&&(_.style.display="")},a}};mejs.Utils.typeChecks.push(function(e){return/(\/\/player\.vimeo|vimeo\.com)/i.test(e)?"video/x-vimeo":null}),mejs.Renderers.add(i)},{}]},{},[1]); \ No newline at end of file diff --git a/paquet.xml b/paquet.xml index 47681695b68b78f0f91c37beead15a045980d0c0..844ab76147067e492000cc9e8f57db9188edc62d 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="medias" categorie="multimedia" - version="2.20.3" + version="2.20.4" etat="stable" compatibilite="[3.2.0-dev;3.2.*]" logo="prive/themes/spip/images/portfolio-32.png"