42f5afd44af3406a150fdaf9c940f6707deac944
[lhc/web/www.git] / www / plugins-dist / medias / lib / mejs / mediaelement.js
1 /*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(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){
12
13 },{}],2:[function(_dereq_,module,exports){
14 (function (global){
15 var topLevel = typeof global !== 'undefined' ? global :
16 typeof window !== 'undefined' ? window : {}
17 var minDoc = _dereq_(1);
18
19 var doccy;
20
21 if (typeof document !== 'undefined') {
22 doccy = document;
23 } else {
24 doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
25
26 if (!doccy) {
27 doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
28 }
29 }
30
31 module.exports = doccy;
32
33 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
34 },{"1":1}],3:[function(_dereq_,module,exports){
35 (function (global){
36 var win;
37
38 if (typeof window !== "undefined") {
39 win = window;
40 } else if (typeof global !== "undefined") {
41 win = global;
42 } else if (typeof self !== "undefined"){
43 win = self;
44 } else {
45 win = {};
46 }
47
48 module.exports = win;
49
50 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
51 },{}],4:[function(_dereq_,module,exports){
52 (function (root) {
53
54 // Store setTimeout reference so promise-polyfill will be unaffected by
55 // other code modifying setTimeout (like sinon.useFakeTimers())
56 var setTimeoutFunc = setTimeout;
57
58 function noop() {}
59
60 // Polyfill for Function.prototype.bind
61 function bind(fn, thisArg) {
62 return function () {
63 fn.apply(thisArg, arguments);
64 };
65 }
66
67 function Promise(fn) {
68 if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
69 if (typeof fn !== 'function') throw new TypeError('not a function');
70 this._state = 0;
71 this._handled = false;
72 this._value = undefined;
73 this._deferreds = [];
74
75 doResolve(fn, this);
76 }
77
78 function handle(self, deferred) {
79 while (self._state === 3) {
80 self = self._value;
81 }
82 if (self._state === 0) {
83 self._deferreds.push(deferred);
84 return;
85 }
86 self._handled = true;
87 Promise._immediateFn(function () {
88 var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
89 if (cb === null) {
90 (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
91 return;
92 }
93 var ret;
94 try {
95 ret = cb(self._value);
96 } catch (e) {
97 reject(deferred.promise, e);
98 return;
99 }
100 resolve(deferred.promise, ret);
101 });
102 }
103
104 function resolve(self, newValue) {
105 try {
106 // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
107 if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
108 if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
109 var then = newValue.then;
110 if (newValue instanceof Promise) {
111 self._state = 3;
112 self._value = newValue;
113 finale(self);
114 return;
115 } else if (typeof then === 'function') {
116 doResolve(bind(then, newValue), self);
117 return;
118 }
119 }
120 self._state = 1;
121 self._value = newValue;
122 finale(self);
123 } catch (e) {
124 reject(self, e);
125 }
126 }
127
128 function reject(self, newValue) {
129 self._state = 2;
130 self._value = newValue;
131 finale(self);
132 }
133
134 function finale(self) {
135 if (self._state === 2 && self._deferreds.length === 0) {
136 Promise._immediateFn(function() {
137 if (!self._handled) {
138 Promise._unhandledRejectionFn(self._value);
139 }
140 });
141 }
142
143 for (var i = 0, len = self._deferreds.length; i < len; i++) {
144 handle(self, self._deferreds[i]);
145 }
146 self._deferreds = null;
147 }
148
149 function Handler(onFulfilled, onRejected, promise) {
150 this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
151 this.onRejected = typeof onRejected === 'function' ? onRejected : null;
152 this.promise = promise;
153 }
154
155 /**
156 * Take a potentially misbehaving resolver function and make sure
157 * onFulfilled and onRejected are only called once.
158 *
159 * Makes no guarantees about asynchrony.
160 */
161 function doResolve(fn, self) {
162 var done = false;
163 try {
164 fn(function (value) {
165 if (done) return;
166 done = true;
167 resolve(self, value);
168 }, function (reason) {
169 if (done) return;
170 done = true;
171 reject(self, reason);
172 });
173 } catch (ex) {
174 if (done) return;
175 done = true;
176 reject(self, ex);
177 }
178 }
179
180 Promise.prototype['catch'] = function (onRejected) {
181 return this.then(null, onRejected);
182 };
183
184 Promise.prototype.then = function (onFulfilled, onRejected) {
185 var prom = new (this.constructor)(noop);
186
187 handle(this, new Handler(onFulfilled, onRejected, prom));
188 return prom;
189 };
190
191 Promise.all = function (arr) {
192 var args = Array.prototype.slice.call(arr);
193
194 return new Promise(function (resolve, reject) {
195 if (args.length === 0) return resolve([]);
196 var remaining = args.length;
197
198 function res(i, val) {
199 try {
200 if (val && (typeof val === 'object' || typeof val === 'function')) {
201 var then = val.then;
202 if (typeof then === 'function') {
203 then.call(val, function (val) {
204 res(i, val);
205 }, reject);
206 return;
207 }
208 }
209 args[i] = val;
210 if (--remaining === 0) {
211 resolve(args);
212 }
213 } catch (ex) {
214 reject(ex);
215 }
216 }
217
218 for (var i = 0; i < args.length; i++) {
219 res(i, args[i]);
220 }
221 });
222 };
223
224 Promise.resolve = function (value) {
225 if (value && typeof value === 'object' && value.constructor === Promise) {
226 return value;
227 }
228
229 return new Promise(function (resolve) {
230 resolve(value);
231 });
232 };
233
234 Promise.reject = function (value) {
235 return new Promise(function (resolve, reject) {
236 reject(value);
237 });
238 };
239
240 Promise.race = function (values) {
241 return new Promise(function (resolve, reject) {
242 for (var i = 0, len = values.length; i < len; i++) {
243 values[i].then(resolve, reject);
244 }
245 });
246 };
247
248 // Use polyfill for setImmediate for performance gains
249 Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
250 function (fn) {
251 setTimeoutFunc(fn, 0);
252 };
253
254 Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
255 if (typeof console !== 'undefined' && console) {
256 console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
257 }
258 };
259
260 /**
261 * Set the immediate function to execute callbacks
262 * @param fn {function} Function to execute
263 * @deprecated
264 */
265 Promise._setImmediateFn = function _setImmediateFn(fn) {
266 Promise._immediateFn = fn;
267 };
268
269 /**
270 * Change the function to execute on unhandled rejection
271 * @param {function} fn Function to execute on unhandled rejection
272 * @deprecated
273 */
274 Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
275 Promise._unhandledRejectionFn = fn;
276 };
277
278 if (typeof module !== 'undefined' && module.exports) {
279 module.exports = Promise;
280 } else if (!root.Promise) {
281 root.Promise = Promise;
282 }
283
284 })(this);
285
286 },{}],5:[function(_dereq_,module,exports){
287 'use strict';
288
289 Object.defineProperty(exports, "__esModule", {
290 value: true
291 });
292
293 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; };
294
295 var _mejs = _dereq_(7);
296
297 var _mejs2 = _interopRequireDefault(_mejs);
298
299 var _en = _dereq_(9);
300
301 var _general = _dereq_(18);
302
303 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
304
305 var i18n = { lang: 'en', en: _en.EN };
306
307 i18n.language = function () {
308 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
309 args[_key] = arguments[_key];
310 }
311
312 if (args !== null && args !== undefined && args.length) {
313
314 if (typeof args[0] !== 'string') {
315 throw new TypeError('Language code must be a string value');
316 }
317
318 if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
319 throw new TypeError('Language code must have format `xx` or `xx-xx`');
320 }
321
322 i18n.lang = args[0];
323
324 if (i18n[args[0]] === undefined) {
325 args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
326 i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
327 } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
328 i18n[args[0]] = args[1];
329 }
330 }
331
332 return i18n.lang;
333 };
334
335 i18n.t = function (message) {
336 var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
338
339 if (typeof message === 'string' && message.length) {
340
341 var str = void 0,
342 pluralForm = void 0;
343
344 var language = i18n.language();
345
346 var _plural = function _plural(input, number, form) {
347
348 if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
349 return input;
350 }
351
352 var _pluralForms = function () {
353 return [function () {
354 return arguments.length <= 1 ? undefined : arguments[1];
355 }, function () {
356 return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
357 }, function () {
358 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];
359 }, function () {
360 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
361 return arguments.length <= 1 ? undefined : arguments[1];
362 } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
363 return arguments.length <= 2 ? undefined : arguments[2];
364 } else {
365 return arguments.length <= 3 ? undefined : arguments[3];
366 }
367 }, function () {
368 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
369 return arguments.length <= 1 ? undefined : arguments[1];
370 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
371 return arguments.length <= 2 ? undefined : arguments[2];
372 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
373 return arguments.length <= 3 ? undefined : arguments[3];
374 } else {
375 return arguments.length <= 4 ? undefined : arguments[4];
376 }
377 }, function () {
378 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
379 return arguments.length <= 1 ? undefined : arguments[1];
380 } 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) {
381 return arguments.length <= 2 ? undefined : arguments[2];
382 } else {
383 return arguments.length <= 3 ? undefined : arguments[3];
384 }
385 }, function () {
386 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
387 return arguments.length <= 1 ? undefined : arguments[1];
388 } 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)) {
389 return arguments.length <= 2 ? undefined : arguments[2];
390 } else {
391 return [3];
392 }
393 }, function () {
394 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
395 return arguments.length <= 1 ? undefined : arguments[1];
396 } 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)) {
397 return arguments.length <= 2 ? undefined : arguments[2];
398 } else {
399 return arguments.length <= 3 ? undefined : arguments[3];
400 }
401 }, function () {
402 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
403 return arguments.length <= 1 ? undefined : arguments[1];
404 } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
405 return arguments.length <= 2 ? undefined : arguments[2];
406 } else {
407 return arguments.length <= 3 ? undefined : arguments[3];
408 }
409 }, function () {
410 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
411 return arguments.length <= 1 ? undefined : arguments[1];
412 } 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)) {
413 return arguments.length <= 2 ? undefined : arguments[2];
414 } else {
415 return arguments.length <= 3 ? undefined : arguments[3];
416 }
417 }, function () {
418 if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
419 return arguments.length <= 2 ? undefined : arguments[2];
420 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
421 return arguments.length <= 3 ? undefined : arguments[3];
422 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
423 return arguments.length <= 4 ? undefined : arguments[4];
424 } else {
425 return arguments.length <= 1 ? undefined : arguments[1];
426 }
427 }, function () {
428 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
429 return arguments.length <= 1 ? undefined : arguments[1];
430 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
431 return arguments.length <= 2 ? undefined : arguments[2];
432 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
433 return arguments.length <= 3 ? undefined : arguments[3];
434 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
435 return arguments.length <= 4 ? undefined : arguments[4];
436 } else {
437 return arguments.length <= 5 ? undefined : arguments[5];
438 }
439 }, function () {
440 if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
441 return arguments.length <= 1 ? undefined : arguments[1];
442 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
443 return arguments.length <= 2 ? undefined : arguments[2];
444 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
445 return arguments.length <= 3 ? undefined : arguments[3];
446 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
447 return arguments.length <= 4 ? undefined : arguments[4];
448 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
449 return arguments.length <= 5 ? undefined : arguments[5];
450 } else {
451 return arguments.length <= 6 ? undefined : arguments[6];
452 }
453 }, function () {
454 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
455 return arguments.length <= 1 ? undefined : arguments[1];
456 } 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) {
457 return arguments.length <= 2 ? undefined : arguments[2];
458 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
459 return arguments.length <= 3 ? undefined : arguments[3];
460 } else {
461 return arguments.length <= 4 ? undefined : arguments[4];
462 }
463 }, function () {
464 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
465 return arguments.length <= 1 ? undefined : arguments[1];
466 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
467 return arguments.length <= 2 ? undefined : arguments[2];
468 } else {
469 return arguments.length <= 3 ? undefined : arguments[3];
470 }
471 }, function () {
472 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];
473 }, function () {
474 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
475 return arguments.length <= 1 ? undefined : arguments[1];
476 } 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)) {
477 return arguments.length <= 2 ? undefined : arguments[2];
478 } else {
479 return arguments.length <= 3 ? undefined : arguments[3];
480 }
481 }, function () {
482 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
483 return arguments.length <= 1 ? undefined : arguments[1];
484 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
485 return arguments.length <= 2 ? undefined : arguments[2];
486 } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
487 return arguments.length <= 3 ? undefined : arguments[3];
488 } else {
489 return arguments.length <= 4 ? undefined : arguments[4];
490 }
491 }, function () {
492 return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
493 }, function () {
494 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
495 return arguments.length <= 1 ? undefined : arguments[1];
496 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
497 return arguments.length <= 2 ? undefined : arguments[2];
498 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
499 return arguments.length <= 3 ? undefined : arguments[3];
500 } else {
501 return arguments.length <= 4 ? undefined : arguments[4];
502 }
503 }, function () {
504 if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
505 return arguments.length <= 1 ? undefined : arguments[1];
506 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
507 return arguments.length <= 2 ? undefined : arguments[2];
508 } else {
509 return arguments.length <= 3 ? undefined : arguments[3];
510 }
511 }];
512 }();
513
514 return _pluralForms[form].apply(null, [number].concat(input));
515 };
516
517 if (i18n[language] !== undefined) {
518 str = i18n[language][message];
519 if (pluralParam !== null && typeof pluralParam === 'number') {
520 pluralForm = i18n[language]['mejs.plural-form'];
521 str = _plural.apply(null, [str, pluralParam, pluralForm]);
522 }
523 }
524
525 if (!str && i18n.en) {
526 str = i18n.en[message];
527 if (pluralParam !== null && typeof pluralParam === 'number') {
528 pluralForm = i18n.en['mejs.plural-form'];
529 str = _plural.apply(null, [str, pluralParam, pluralForm]);
530 }
531 }
532
533 str = str || message;
534
535 if (pluralParam !== null && typeof pluralParam === 'number') {
536 str = str.replace('%1', pluralParam);
537 }
538
539 return (0, _general.escapeHTML)(str);
540 }
541
542 return message;
543 };
544
545 _mejs2.default.i18n = i18n;
546
547 if (typeof mejsL10n !== 'undefined') {
548 _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
549 }
550
551 exports.default = i18n;
552
553 },{"18":18,"7":7,"9":9}],6:[function(_dereq_,module,exports){
554 'use strict';
555
556 Object.defineProperty(exports, "__esModule", {
557 value: true
558 });
559
560 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; };
561
562 var _window = _dereq_(3);
563
564 var _window2 = _interopRequireDefault(_window);
565
566 var _document = _dereq_(2);
567
568 var _document2 = _interopRequireDefault(_document);
569
570 var _mejs = _dereq_(7);
571
572 var _mejs2 = _interopRequireDefault(_mejs);
573
574 var _general = _dereq_(18);
575
576 var _media2 = _dereq_(19);
577
578 var _renderer = _dereq_(8);
579
580 var _constants = _dereq_(16);
581
582 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
583
584 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
585
586 var MediaElement = function MediaElement(idOrNode, options, sources) {
587 var _this = this;
588
589 _classCallCheck(this, MediaElement);
590
591 var t = this;
592
593 sources = Array.isArray(sources) ? sources : null;
594
595 t.defaults = {
596 renderers: [],
597
598 fakeNodeName: 'mediaelementwrapper',
599
600 pluginPath: 'build/',
601
602 shimScriptAccess: 'sameDomain'
603 };
604
605 options = Object.assign(t.defaults, options);
606
607 t.mediaElement = _document2.default.createElement(options.fakeNodeName);
608
609 var id = idOrNode,
610 error = false;
611
612 if (typeof idOrNode === 'string') {
613 t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
614 } else {
615 t.mediaElement.originalNode = idOrNode;
616 id = idOrNode.id;
617 }
618
619 if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
620 return null;
621 }
622
623 t.mediaElement.options = options;
624 id = id || 'mejs_' + Math.random().toString().slice(2);
625
626 t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
627
628 var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
629 if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
630 t.mediaElement.originalNode.setAttribute('preload', 'none');
631 }
632
633 t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
634
635 t.mediaElement.appendChild(t.mediaElement.originalNode);
636
637 var processURL = function processURL(url, type) {
638 if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
639 var xhr = new XMLHttpRequest();
640 xhr.onreadystatechange = function () {
641 if (this.readyState === 4 && this.status === 200) {
642 var _url = _window2.default.URL || _window2.default.webkitURL,
643 blobUrl = _url.createObjectURL(this.response);
644 t.mediaElement.originalNode.setAttribute('src', blobUrl);
645 return blobUrl;
646 }
647 return url;
648 };
649 xhr.open('GET', url);
650 xhr.responseType = 'blob';
651 xhr.send();
652 }
653
654 return url;
655 };
656
657 var mediaFiles = void 0;
658
659 if (sources !== null) {
660 mediaFiles = sources;
661 } else if (t.mediaElement.originalNode !== null) {
662
663 mediaFiles = [];
664
665 switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
666 case 'iframe':
667 mediaFiles.push({
668 type: '',
669 src: t.mediaElement.originalNode.getAttribute('src')
670 });
671 break;
672 case 'audio':
673 case 'video':
674 var _sources = t.mediaElement.originalNode.children.length,
675 nodeSource = t.mediaElement.originalNode.getAttribute('src');
676
677 if (nodeSource) {
678 var node = t.mediaElement.originalNode,
679 type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
680 mediaFiles.push({
681 type: type,
682 src: processURL(nodeSource, type)
683 });
684 }
685
686 for (var i = 0; i < _sources; i++) {
687 var n = t.mediaElement.originalNode.children[i];
688 if (n.tagName.toLowerCase() === 'source') {
689 var src = n.getAttribute('src'),
690 _type = (0, _media2.formatType)(src, n.getAttribute('type'));
691 mediaFiles.push({ type: _type, src: processURL(src, _type) });
692 }
693 }
694 break;
695 }
696 }
697
698 t.mediaElement.id = id;
699 t.mediaElement.renderers = {};
700 t.mediaElement.events = {};
701 t.mediaElement.promises = [];
702 t.mediaElement.renderer = null;
703 t.mediaElement.rendererName = null;
704
705 t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
706
707 var t = _this,
708 media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
709
710 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
711 t.mediaElement.renderer.pause();
712 if (t.mediaElement.renderer.stop) {
713 t.mediaElement.renderer.stop();
714 }
715 t.mediaElement.renderer.show();
716 t.mediaElement.renderer.setSrc(media);
717 return true;
718 }
719
720 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
721 t.mediaElement.renderer.pause();
722 if (t.mediaElement.renderer.stop) {
723 t.mediaElement.renderer.stop();
724 }
725 t.mediaElement.renderer.hide();
726 }
727
728 var newRenderer = t.mediaElement.renderers[rendererName],
729 newRendererType = null;
730
731 if (newRenderer !== undefined && newRenderer !== null) {
732 newRenderer.show();
733 newRenderer.setSrc(media);
734 t.mediaElement.renderer = newRenderer;
735 t.mediaElement.rendererName = rendererName;
736 return true;
737 }
738
739 var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
740
741 for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
742 var index = rendererArray[_i];
743
744 if (index === rendererName) {
745 var rendererList = _renderer.renderer.renderers;
746 newRendererType = rendererList[index];
747
748 var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
749 newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
750 newRenderer.name = rendererName;
751
752 t.mediaElement.renderers[newRendererType.name] = newRenderer;
753 t.mediaElement.renderer = newRenderer;
754 t.mediaElement.rendererName = rendererName;
755 newRenderer.show();
756 return true;
757 }
758 }
759
760 return false;
761 };
762
763 t.mediaElement.setSize = function (width, height) {
764 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
765 t.mediaElement.renderer.setSize(width, height);
766 }
767 };
768
769 t.mediaElement.generateError = function (message, urlList) {
770 message = message || '';
771 urlList = Array.isArray(urlList) ? urlList : [];
772 var event = (0, _general.createEvent)('error', t.mediaElement);
773 event.message = message;
774 event.urls = urlList;
775 t.mediaElement.dispatchEvent(event);
776 error = true;
777 };
778
779 var props = _mejs2.default.html5media.properties,
780 methods = _mejs2.default.html5media.methods,
781 addProperty = function addProperty(obj, name, onGet, onSet) {
782 var oldValue = obj[name];
783 var getFn = function getFn() {
784 return onGet.apply(obj, [oldValue]);
785 },
786 setFn = function setFn(newValue) {
787 oldValue = onSet.apply(obj, [newValue]);
788 return oldValue;
789 };
790
791 Object.defineProperty(obj, name, {
792 get: getFn,
793 set: setFn
794 });
795 },
796 assignGettersSetters = function assignGettersSetters(propName) {
797 if (propName !== 'src') {
798
799 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
800 getFn = function getFn() {
801 return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
802 },
803 setFn = function setFn(value) {
804 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
805 t.mediaElement.renderer['set' + capName](value);
806 }
807 };
808
809 addProperty(t.mediaElement, propName, getFn, setFn);
810 t.mediaElement['get' + capName] = getFn;
811 t.mediaElement['set' + capName] = setFn;
812 }
813 },
814 getSrc = function getSrc() {
815 return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
816 },
817 setSrc = function setSrc(value) {
818 var mediaFiles = [];
819
820 if (typeof value === 'string') {
821 mediaFiles.push({
822 src: value,
823 type: value ? (0, _media2.getTypeFromFile)(value) : ''
824 });
825 } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
826 var _src = (0, _media2.absolutizeUrl)(value.src),
827 _type2 = value.type,
828 media = Object.assign(value, {
829 src: _src,
830 type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
831 });
832 mediaFiles.push(media);
833 } else if (Array.isArray(value)) {
834 for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
835
836 var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
837 _type3 = value[_i2].type,
838 _media = Object.assign(value[_i2], {
839 src: _src2,
840 type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
841 });
842
843 mediaFiles.push(_media);
844 }
845 }
846
847 var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
848 event = void 0;
849
850 if (!t.mediaElement.paused) {
851 t.mediaElement.pause();
852 event = (0, _general.createEvent)('pause', t.mediaElement);
853 t.mediaElement.dispatchEvent(event);
854 }
855 t.mediaElement.originalNode.src = mediaFiles[0].src || '';
856
857 if (renderInfo === null && mediaFiles[0].src) {
858 t.mediaElement.generateError('No renderer found', mediaFiles);
859 return;
860 }
861
862 return mediaFiles[0].src ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
863 },
864 triggerAction = function triggerAction(methodName, args) {
865 try {
866 if (methodName === 'play' && t.mediaElement.rendererName === 'native_dash') {
867 setTimeout(function () {
868 t.mediaElement.renderer[methodName](args);
869 }, 100);
870 } else {
871 t.mediaElement.renderer[methodName](args);
872 }
873 } catch (e) {
874 t.mediaElement.generateError(e, mediaFiles);
875 }
876 },
877 assignMethods = function assignMethods(methodName) {
878 t.mediaElement[methodName] = function () {
879 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
880 args[_key] = arguments[_key];
881 }
882
883 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
884 if (t.mediaElement.promises.length) {
885 Promise.all(t.mediaElement.promises).then(function () {
886 triggerAction(methodName, args);
887 }).catch(function (e) {
888 t.mediaElement.generateError(e, mediaFiles);
889 });
890 } else {
891 triggerAction(methodName, args);
892 }
893 }
894 return null;
895 };
896 };
897
898 addProperty(t.mediaElement, 'src', getSrc, setSrc);
899 t.mediaElement.getSrc = getSrc;
900 t.mediaElement.setSrc = setSrc;
901
902 for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
903 assignGettersSetters(props[_i3]);
904 }
905
906 for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
907 assignMethods(methods[_i4]);
908 }
909
910 t.mediaElement.addEventListener = function (eventName, callback) {
911 t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
912
913 t.mediaElement.events[eventName].push(callback);
914 };
915 t.mediaElement.removeEventListener = function (eventName, callback) {
916 if (!eventName) {
917 t.mediaElement.events = {};
918 return true;
919 }
920
921 var callbacks = t.mediaElement.events[eventName];
922
923 if (!callbacks) {
924 return true;
925 }
926
927 if (!callback) {
928 t.mediaElement.events[eventName] = [];
929 return true;
930 }
931
932 for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
933 if (callbacks[_i5] === callback) {
934 t.mediaElement.events[eventName].splice(_i5, 1);
935 return true;
936 }
937 }
938 return false;
939 };
940
941 t.mediaElement.dispatchEvent = function (event) {
942 var callbacks = t.mediaElement.events[event.type];
943 if (callbacks) {
944 for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
945 callbacks[_i6].apply(null, [event]);
946 }
947 }
948 };
949
950 if (mediaFiles.length) {
951 t.mediaElement.src = mediaFiles;
952 }
953
954 if (t.mediaElement.promises.length) {
955 Promise.all(t.mediaElement.promises).then(function () {
956 if (t.mediaElement.options.success) {
957 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
958 }
959 }).catch(function () {
960 if (error && t.mediaElement.options.error) {
961 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
962 }
963 });
964 } else {
965 if (t.mediaElement.options.success) {
966 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
967 }
968
969 if (error && t.mediaElement.options.error) {
970 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
971 }
972 }
973
974 return t.mediaElement;
975 };
976
977 _window2.default.MediaElement = MediaElement;
978
979 exports.default = MediaElement;
980
981 },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
982 'use strict';
983
984 Object.defineProperty(exports, "__esModule", {
985 value: true
986 });
987
988 var _window = _dereq_(3);
989
990 var _window2 = _interopRequireDefault(_window);
991
992 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
993
994 var mejs = {};
995
996 mejs.version = '4.2.5';
997
998 mejs.html5media = {
999 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'],
1000 readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1001
1002 methods: ['load', 'play', 'pause', 'canPlayType'],
1003
1004 events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1005
1006 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']
1007 };
1008
1009 _window2.default.mejs = mejs;
1010
1011 exports.default = mejs;
1012
1013 },{"3":3}],8:[function(_dereq_,module,exports){
1014 'use strict';
1015
1016 Object.defineProperty(exports, "__esModule", {
1017 value: true
1018 });
1019 exports.renderer = undefined;
1020
1021 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; };
1022
1023 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1024
1025 var _mejs = _dereq_(7);
1026
1027 var _mejs2 = _interopRequireDefault(_mejs);
1028
1029 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1030
1031 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1032
1033 var Renderer = function () {
1034 function Renderer() {
1035 _classCallCheck(this, Renderer);
1036
1037 this.renderers = {};
1038 this.order = [];
1039 }
1040
1041 _createClass(Renderer, [{
1042 key: 'add',
1043 value: function add(renderer) {
1044 if (renderer.name === undefined) {
1045 throw new TypeError('renderer must contain at least `name` property');
1046 }
1047
1048 this.renderers[renderer.name] = renderer;
1049 this.order.push(renderer.name);
1050 }
1051 }, {
1052 key: 'select',
1053 value: function select(mediaFiles) {
1054 var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1055
1056 var renderersLength = renderers.length;
1057
1058 renderers = renderers.length ? renderers : this.order;
1059
1060 if (!renderersLength) {
1061 var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1062 rendererRanking = function rendererRanking(renderer) {
1063 for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1064 if (rendererIndicator[i].test(renderer)) {
1065 return i;
1066 }
1067 }
1068 return rendererIndicator.length;
1069 };
1070
1071 renderers.sort(function (a, b) {
1072 return rendererRanking(a) - rendererRanking(b);
1073 });
1074 }
1075
1076 for (var i = 0, total = renderers.length; i < total; i++) {
1077 var key = renderers[i],
1078 _renderer = this.renderers[key];
1079
1080 if (_renderer !== null && _renderer !== undefined) {
1081 for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1082 if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1083 return {
1084 rendererName: _renderer.name,
1085 src: mediaFiles[j].src
1086 };
1087 }
1088 }
1089 }
1090 }
1091
1092 return null;
1093 }
1094 }, {
1095 key: 'order',
1096 set: function set(order) {
1097 if (!Array.isArray(order)) {
1098 throw new TypeError('order must be an array of strings.');
1099 }
1100
1101 this._order = order;
1102 },
1103 get: function get() {
1104 return this._order;
1105 }
1106 }, {
1107 key: 'renderers',
1108 set: function set(renderers) {
1109 if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1110 throw new TypeError('renderers must be an array of objects.');
1111 }
1112
1113 this._renderers = renderers;
1114 },
1115 get: function get() {
1116 return this._renderers;
1117 }
1118 }]);
1119
1120 return Renderer;
1121 }();
1122
1123 var renderer = exports.renderer = new Renderer();
1124
1125 _mejs2.default.Renderers = renderer;
1126
1127 },{"7":7}],9:[function(_dereq_,module,exports){
1128 'use strict';
1129
1130 Object.defineProperty(exports, "__esModule", {
1131 value: true
1132 });
1133 var EN = exports.EN = {
1134 'mejs.plural-form': 1,
1135
1136 'mejs.download-file': 'Download File',
1137
1138 '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/',
1139
1140 'mejs.fullscreen': 'Fullscreen',
1141
1142 'mejs.play': 'Play',
1143 'mejs.pause': 'Pause',
1144
1145 'mejs.time-slider': 'Time Slider',
1146 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
1147 'mejs.live-broadcast': 'Live Broadcast',
1148
1149 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
1150 'mejs.unmute': 'Unmute',
1151 'mejs.mute': 'Mute',
1152 'mejs.volume-slider': 'Volume Slider',
1153
1154 'mejs.video-player': 'Video Player',
1155 'mejs.audio-player': 'Audio Player',
1156
1157 'mejs.captions-subtitles': 'Captions/Subtitles',
1158 'mejs.captions-chapters': 'Chapters',
1159 'mejs.none': 'None',
1160 'mejs.afrikaans': 'Afrikaans',
1161 'mejs.albanian': 'Albanian',
1162 'mejs.arabic': 'Arabic',
1163 'mejs.belarusian': 'Belarusian',
1164 'mejs.bulgarian': 'Bulgarian',
1165 'mejs.catalan': 'Catalan',
1166 'mejs.chinese': 'Chinese',
1167 'mejs.chinese-simplified': 'Chinese (Simplified)',
1168 'mejs.chinese-traditional': 'Chinese (Traditional)',
1169 'mejs.croatian': 'Croatian',
1170 'mejs.czech': 'Czech',
1171 'mejs.danish': 'Danish',
1172 'mejs.dutch': 'Dutch',
1173 'mejs.english': 'English',
1174 'mejs.estonian': 'Estonian',
1175 'mejs.filipino': 'Filipino',
1176 'mejs.finnish': 'Finnish',
1177 'mejs.french': 'French',
1178 'mejs.galician': 'Galician',
1179 'mejs.german': 'German',
1180 'mejs.greek': 'Greek',
1181 'mejs.haitian-creole': 'Haitian Creole',
1182 'mejs.hebrew': 'Hebrew',
1183 'mejs.hindi': 'Hindi',
1184 'mejs.hungarian': 'Hungarian',
1185 'mejs.icelandic': 'Icelandic',
1186 'mejs.indonesian': 'Indonesian',
1187 'mejs.irish': 'Irish',
1188 'mejs.italian': 'Italian',
1189 'mejs.japanese': 'Japanese',
1190 'mejs.korean': 'Korean',
1191 'mejs.latvian': 'Latvian',
1192 'mejs.lithuanian': 'Lithuanian',
1193 'mejs.macedonian': 'Macedonian',
1194 'mejs.malay': 'Malay',
1195 'mejs.maltese': 'Maltese',
1196 'mejs.norwegian': 'Norwegian',
1197 'mejs.persian': 'Persian',
1198 'mejs.polish': 'Polish',
1199 'mejs.portuguese': 'Portuguese',
1200 'mejs.romanian': 'Romanian',
1201 'mejs.russian': 'Russian',
1202 'mejs.serbian': 'Serbian',
1203 'mejs.slovak': 'Slovak',
1204 'mejs.slovenian': 'Slovenian',
1205 'mejs.spanish': 'Spanish',
1206 'mejs.swahili': 'Swahili',
1207 'mejs.swedish': 'Swedish',
1208 'mejs.tagalog': 'Tagalog',
1209 'mejs.thai': 'Thai',
1210 'mejs.turkish': 'Turkish',
1211 'mejs.ukrainian': 'Ukrainian',
1212 'mejs.vietnamese': 'Vietnamese',
1213 'mejs.welsh': 'Welsh',
1214 'mejs.yiddish': 'Yiddish'
1215 };
1216
1217 },{}],10:[function(_dereq_,module,exports){
1218 'use strict';
1219
1220 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; };
1221
1222 var _window = _dereq_(3);
1223
1224 var _window2 = _interopRequireDefault(_window);
1225
1226 var _mejs = _dereq_(7);
1227
1228 var _mejs2 = _interopRequireDefault(_mejs);
1229
1230 var _renderer = _dereq_(8);
1231
1232 var _general = _dereq_(18);
1233
1234 var _media = _dereq_(19);
1235
1236 var _constants = _dereq_(16);
1237
1238 var _dom = _dereq_(17);
1239
1240 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1241
1242 var NativeDash = {
1243
1244 promise: null,
1245
1246 load: function load(settings) {
1247 if (typeof dashjs !== 'undefined') {
1248 NativeDash.promise = new Promise(function (resolve) {
1249 resolve();
1250 }).then(function () {
1251 NativeDash._createPlayer(settings);
1252 });
1253 } else {
1254 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
1255
1256 NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
1257 NativeDash.promise.then(function () {
1258 NativeDash._createPlayer(settings);
1259 });
1260 }
1261
1262 return NativeDash.promise;
1263 },
1264
1265 _createPlayer: function _createPlayer(settings) {
1266 var player = dashjs.MediaPlayer().create();
1267 _window2.default['__ready__' + settings.id](player);
1268 return player;
1269 }
1270 };
1271
1272 var DashNativeRenderer = {
1273 name: 'native_dash',
1274 options: {
1275 prefix: 'native_dash',
1276 dash: {
1277 path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
1278 debug: false,
1279 drm: {},
1280
1281 robustnessLevel: ''
1282 }
1283 },
1284
1285 canPlayType: function canPlayType(type) {
1286 return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
1287 },
1288
1289 create: function create(mediaElement, options, mediaFiles) {
1290
1291 var originalNode = mediaElement.originalNode,
1292 id = mediaElement.id + '_' + options.prefix,
1293 autoplay = originalNode.autoplay,
1294 children = originalNode.children;
1295
1296 var node = null,
1297 dashPlayer = null;
1298
1299 originalNode.removeAttribute('type');
1300 for (var i = 0, total = children.length; i < total; i++) {
1301 children[i].removeAttribute('type');
1302 }
1303
1304 node = originalNode.cloneNode(true);
1305 options = Object.assign(options, mediaElement.options);
1306
1307 var props = _mejs2.default.html5media.properties,
1308 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
1309 attachNativeEvents = function attachNativeEvents(e) {
1310 if (e.type !== 'error') {
1311 var _event = (0, _general.createEvent)(e.type, mediaElement);
1312 mediaElement.dispatchEvent(_event);
1313 }
1314 },
1315 assignGettersSetters = function assignGettersSetters(propName) {
1316 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1317
1318 node['get' + capName] = function () {
1319 return dashPlayer !== null ? node[propName] : null;
1320 };
1321
1322 node['set' + capName] = function (value) {
1323 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
1324 if (propName === 'src') {
1325 var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
1326 node[propName] = source;
1327 if (dashPlayer !== null) {
1328 dashPlayer.reset();
1329 for (var _i = 0, _total = events.length; _i < _total; _i++) {
1330 node.removeEventListener(events[_i], attachNativeEvents);
1331 }
1332 dashPlayer = NativeDash._createPlayer({
1333 options: options.dash,
1334 id: id
1335 });
1336
1337 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
1338 dashPlayer.setProtectionData(value.drm);
1339 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1340 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1341 }
1342 }
1343 dashPlayer.attachSource(source);
1344 if (autoplay) {
1345 dashPlayer.play();
1346 }
1347 }
1348 } else {
1349 node[propName] = value;
1350 }
1351 }
1352 };
1353 };
1354
1355 for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
1356 assignGettersSetters(props[_i2]);
1357 }
1358
1359 _window2.default['__ready__' + id] = function (_dashPlayer) {
1360 mediaElement.dashPlayer = dashPlayer = _dashPlayer;
1361
1362 var dashEvents = dashjs.MediaPlayer.events,
1363 assignEvents = function assignEvents(eventName) {
1364 if (eventName === 'loadedmetadata') {
1365 dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
1366 dashPlayer.initialize();
1367 dashPlayer.setScheduleWhilePaused(false);
1368 dashPlayer.setFastSwitchEnabled(true);
1369 dashPlayer.attachView(node);
1370 dashPlayer.setAutoPlay(false);
1371
1372 if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
1373 dashPlayer.setProtectionData(options.dash.drm);
1374 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1375 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1376 }
1377 }
1378 dashPlayer.attachSource(node.getSrc());
1379 }
1380
1381 node.addEventListener(eventName, attachNativeEvents);
1382 };
1383
1384 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
1385 assignEvents(events[_i3]);
1386 }
1387
1388 var assignMdashEvents = function assignMdashEvents(name, data) {
1389 if (name.toLowerCase() === 'error') {
1390 mediaElement.generateError(data.message, node.src);
1391 console.error(data);
1392 } else {
1393 var _event2 = (0, _general.createEvent)(name, mediaElement);
1394 _event2.data = data;
1395 mediaElement.dispatchEvent(_event2);
1396 }
1397 };
1398
1399 for (var eventType in dashEvents) {
1400 if (dashEvents.hasOwnProperty(eventType)) {
1401 dashPlayer.on(dashEvents[eventType], function (e) {
1402 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1403 args[_key - 1] = arguments[_key];
1404 }
1405
1406 return assignMdashEvents(e.type, args);
1407 });
1408 }
1409 }
1410 };
1411
1412 if (mediaFiles && mediaFiles.length > 0) {
1413 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1414 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1415 node.setAttribute('src', mediaFiles[_i4].src);
1416 if (typeof mediaFiles[_i4].drm !== 'undefined') {
1417 options.dash.drm = mediaFiles[_i4].drm;
1418 }
1419 break;
1420 }
1421 }
1422 }
1423
1424 node.setAttribute('id', id);
1425
1426 originalNode.parentNode.insertBefore(node, originalNode);
1427 originalNode.autoplay = false;
1428 originalNode.style.display = 'none';
1429
1430 node.setSize = function (width, height) {
1431 node.style.width = width + 'px';
1432 node.style.height = height + 'px';
1433 return node;
1434 };
1435
1436 node.hide = function () {
1437 node.pause();
1438 node.style.display = 'none';
1439 return node;
1440 };
1441
1442 node.show = function () {
1443 node.style.display = '';
1444 return node;
1445 };
1446
1447 node.destroy = function () {
1448 if (dashPlayer !== null) {
1449 dashPlayer.reset();
1450 }
1451 };
1452
1453 var event = (0, _general.createEvent)('rendererready', node);
1454 mediaElement.dispatchEvent(event);
1455
1456 mediaElement.promises.push(NativeDash.load({
1457 options: options.dash,
1458 id: id
1459 }));
1460
1461 return node;
1462 }
1463 };
1464
1465 _media.typeChecks.push(function (url) {
1466 return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
1467 });
1468
1469 _renderer.renderer.add(DashNativeRenderer);
1470
1471 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_,module,exports){
1472 'use strict';
1473
1474 Object.defineProperty(exports, "__esModule", {
1475 value: true
1476 });
1477 exports.PluginDetector = undefined;
1478
1479 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; };
1480
1481 var _window = _dereq_(3);
1482
1483 var _window2 = _interopRequireDefault(_window);
1484
1485 var _document = _dereq_(2);
1486
1487 var _document2 = _interopRequireDefault(_document);
1488
1489 var _mejs = _dereq_(7);
1490
1491 var _mejs2 = _interopRequireDefault(_mejs);
1492
1493 var _i18n = _dereq_(5);
1494
1495 var _i18n2 = _interopRequireDefault(_i18n);
1496
1497 var _renderer = _dereq_(8);
1498
1499 var _general = _dereq_(18);
1500
1501 var _constants = _dereq_(16);
1502
1503 var _media = _dereq_(19);
1504
1505 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1506
1507 var PluginDetector = exports.PluginDetector = {
1508 plugins: [],
1509
1510 hasPluginVersion: function hasPluginVersion(plugin, v) {
1511 var pv = PluginDetector.plugins[plugin];
1512 v[1] = v[1] || 0;
1513 v[2] = v[2] || 0;
1514 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];
1515 },
1516
1517 addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
1518 PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
1519 },
1520
1521 detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
1522
1523 var version = [0, 0, 0],
1524 description = void 0,
1525 ax = void 0;
1526
1527 if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
1528 description = _constants.NAV.plugins[pluginName].description;
1529 if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
1530 version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
1531 for (var i = 0, total = version.length; i < total; i++) {
1532 version[i] = parseInt(version[i].match(/\d+/), 10);
1533 }
1534 }
1535 } else if (_window2.default.ActiveXObject !== undefined) {
1536 try {
1537 ax = new ActiveXObject(activeX);
1538 if (ax) {
1539 version = axDetect(ax);
1540 }
1541 } catch (e) {
1542
1543 }
1544 }
1545 return version;
1546 }
1547 };
1548
1549 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
1550 var version = [],
1551 d = ax.GetVariable("$version");
1552
1553 if (d) {
1554 d = d.split(" ")[1].split(",");
1555 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
1556 }
1557 return version;
1558 });
1559
1560 var FlashMediaElementRenderer = {
1561 create: function create(mediaElement, options, mediaFiles) {
1562
1563 var flash = {};
1564
1565 flash.options = options;
1566 flash.id = mediaElement.id + '_' + flash.options.prefix;
1567 flash.mediaElement = mediaElement;
1568 flash.flashState = {};
1569 flash.flashApi = null;
1570 flash.flashApiStack = [];
1571
1572 var props = _mejs2.default.html5media.properties,
1573 assignGettersSetters = function assignGettersSetters(propName) {
1574 flash.flashState[propName] = null;
1575
1576 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1577
1578 flash['get' + capName] = function () {
1579 if (flash.flashApi !== null) {
1580 if (typeof flash.flashApi['get_' + propName] === 'function') {
1581 var value = flash.flashApi['get_' + propName]();
1582
1583 if (propName === 'buffered') {
1584 return {
1585 start: function start() {
1586 return 0;
1587 },
1588 end: function end() {
1589 return value;
1590 },
1591 length: 1
1592 };
1593 }
1594 return value;
1595 } else {
1596 return null;
1597 }
1598 } else {
1599 return null;
1600 }
1601 };
1602
1603 flash['set' + capName] = function (value) {
1604 if (propName === 'src') {
1605 value = (0, _media.absolutizeUrl)(value);
1606 }
1607
1608 if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
1609 try {
1610 flash.flashApi['set_' + propName](value);
1611 } catch (e) {
1612
1613 }
1614 } else {
1615 flash.flashApiStack.push({
1616 type: 'set',
1617 propName: propName,
1618 value: value
1619 });
1620 }
1621 };
1622 };
1623
1624 for (var i = 0, total = props.length; i < total; i++) {
1625 assignGettersSetters(props[i]);
1626 }
1627
1628 var methods = _mejs2.default.html5media.methods,
1629 assignMethods = function assignMethods(methodName) {
1630 flash[methodName] = function () {
1631 if (flash.flashApi !== null) {
1632 if (flash.flashApi['fire_' + methodName]) {
1633 try {
1634 flash.flashApi['fire_' + methodName]();
1635 } catch (e) {
1636
1637 }
1638 } else {
1639
1640 }
1641 } else {
1642 flash.flashApiStack.push({
1643 type: 'call',
1644 methodName: methodName
1645 });
1646 }
1647 };
1648 };
1649 methods.push('stop');
1650 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
1651 assignMethods(methods[_i]);
1652 }
1653
1654 var initEvents = ['rendererready'];
1655
1656 for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
1657 var event = (0, _general.createEvent)(initEvents[_i2], flash);
1658 mediaElement.dispatchEvent(event);
1659 }
1660
1661 _window2.default['__ready__' + flash.id] = function () {
1662
1663 flash.flashReady = true;
1664 flash.flashApi = _document2.default.getElementById('__' + flash.id);
1665
1666 if (flash.flashApiStack.length) {
1667 for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
1668 var stackItem = flash.flashApiStack[_i3];
1669
1670 if (stackItem.type === 'set') {
1671 var propName = stackItem.propName,
1672 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1673
1674 flash['set' + capName](stackItem.value);
1675 } else if (stackItem.type === 'call') {
1676 flash[stackItem.methodName]();
1677 }
1678 }
1679 }
1680 };
1681
1682 _window2.default['__event__' + flash.id] = function (eventName, message) {
1683 var event = (0, _general.createEvent)(eventName, flash);
1684 if (message) {
1685 try {
1686 event.data = JSON.parse(message);
1687 event.details.data = JSON.parse(message);
1688 } catch (e) {
1689 event.message = message;
1690 }
1691 }
1692
1693 flash.mediaElement.dispatchEvent(event);
1694 };
1695
1696 flash.flashWrapper = _document2.default.createElement('div');
1697
1698 if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
1699 flash.options.shimScriptAccess = 'sameDomain';
1700 }
1701
1702 var autoplay = mediaElement.originalNode.autoplay,
1703 flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
1704 isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
1705 flashHeight = isVideo ? mediaElement.originalNode.height : 1,
1706 flashWidth = isVideo ? mediaElement.originalNode.width : 1;
1707
1708 if (mediaElement.originalNode.getAttribute('src')) {
1709 flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
1710 }
1711
1712 if (flash.options.enablePseudoStreaming === true) {
1713 flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
1714 flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
1715 }
1716
1717 mediaElement.appendChild(flash.flashWrapper);
1718 mediaElement.originalNode.style.display = 'none';
1719
1720 var settings = [];
1721
1722 if (_constants.IS_IE) {
1723 var specialIEContainer = _document2.default.createElement('div');
1724 flash.flashWrapper.appendChild(specialIEContainer);
1725
1726 settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
1727
1728 if (!isVideo) {
1729 settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
1730 }
1731
1732 specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
1733 } else {
1734
1735 settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
1736
1737 if (!isVideo) {
1738 settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
1739 }
1740
1741 flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
1742 }
1743
1744 flash.flashNode = flash.flashWrapper.lastChild;
1745
1746 flash.hide = function () {
1747 if (isVideo) {
1748 flash.flashNode.style.display = 'none';
1749 }
1750 };
1751 flash.show = function () {
1752 if (isVideo) {
1753 flash.flashNode.style.display = '';
1754 }
1755 };
1756 flash.setSize = function (width, height) {
1757 flash.flashNode.style.width = width + 'px';
1758 flash.flashNode.style.height = height + 'px';
1759
1760 if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
1761 flash.flashApi.fire_setSize(width, height);
1762 }
1763 };
1764
1765 flash.destroy = function () {
1766 flash.flashNode.remove();
1767 };
1768
1769 if (mediaFiles && mediaFiles.length > 0) {
1770 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1771 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1772 flash.setSrc(mediaFiles[_i4].src);
1773 break;
1774 }
1775 }
1776 }
1777
1778 return flash;
1779 }
1780 };
1781
1782 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
1783
1784 if (hasFlash) {
1785 _media.typeChecks.push(function (url) {
1786 url = url.toLowerCase();
1787
1788 if (url.startsWith('rtmp')) {
1789 if (~url.indexOf('.mp3')) {
1790 return 'audio/rtmp';
1791 } else {
1792 return 'video/rtmp';
1793 }
1794 } else if (/\.og(a|g)/i.test(url)) {
1795 return 'audio/ogg';
1796 } else if (~url.indexOf('.m3u8')) {
1797 return 'application/x-mpegURL';
1798 } else if (~url.indexOf('.mpd')) {
1799 return 'application/dash+xml';
1800 } else if (~url.indexOf('.flv')) {
1801 return 'video/flv';
1802 } else {
1803 return null;
1804 }
1805 });
1806
1807 var FlashMediaElementVideoRenderer = {
1808 name: 'flash_video',
1809 options: {
1810 prefix: 'flash_video',
1811 filename: 'mediaelement-flash-video.swf',
1812 enablePseudoStreaming: false,
1813
1814 pseudoStreamingStartQueryParam: 'start',
1815
1816 pseudoStreamingType: 'byte'
1817 },
1818
1819 canPlayType: function canPlayType(type) {
1820 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
1821 },
1822
1823 create: FlashMediaElementRenderer.create
1824
1825 };
1826 _renderer.renderer.add(FlashMediaElementVideoRenderer);
1827
1828 var FlashMediaElementHlsVideoRenderer = {
1829 name: 'flash_hls',
1830 options: {
1831 prefix: 'flash_hls',
1832 filename: 'mediaelement-flash-video-hls.swf'
1833 },
1834
1835 canPlayType: function canPlayType(type) {
1836 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
1837 },
1838
1839 create: FlashMediaElementRenderer.create
1840 };
1841 _renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
1842
1843 var FlashMediaElementMdashVideoRenderer = {
1844 name: 'flash_dash',
1845 options: {
1846 prefix: 'flash_dash',
1847 filename: 'mediaelement-flash-video-mdash.swf'
1848 },
1849
1850 canPlayType: function canPlayType(type) {
1851 return ~['application/dash+xml'].indexOf(type.toLowerCase());
1852 },
1853
1854 create: FlashMediaElementRenderer.create
1855 };
1856 _renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
1857
1858 var FlashMediaElementAudioRenderer = {
1859 name: 'flash_audio',
1860 options: {
1861 prefix: 'flash_audio',
1862 filename: 'mediaelement-flash-audio.swf'
1863 },
1864
1865 canPlayType: function canPlayType(type) {
1866 return ~['audio/mp3'].indexOf(type.toLowerCase());
1867 },
1868
1869 create: FlashMediaElementRenderer.create
1870 };
1871 _renderer.renderer.add(FlashMediaElementAudioRenderer);
1872
1873 var FlashMediaElementAudioOggRenderer = {
1874 name: 'flash_audio_ogg',
1875 options: {
1876 prefix: 'flash_audio_ogg',
1877 filename: 'mediaelement-flash-audio-ogg.swf'
1878 },
1879
1880 canPlayType: function canPlayType(type) {
1881 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
1882 },
1883
1884 create: FlashMediaElementRenderer.create
1885 };
1886 _renderer.renderer.add(FlashMediaElementAudioOggRenderer);
1887 }
1888
1889 },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_,module,exports){
1890 'use strict';
1891
1892 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; };
1893
1894 var _window = _dereq_(3);
1895
1896 var _window2 = _interopRequireDefault(_window);
1897
1898 var _mejs = _dereq_(7);
1899
1900 var _mejs2 = _interopRequireDefault(_mejs);
1901
1902 var _renderer = _dereq_(8);
1903
1904 var _general = _dereq_(18);
1905
1906 var _constants = _dereq_(16);
1907
1908 var _media = _dereq_(19);
1909
1910 var _dom = _dereq_(17);
1911
1912 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1913
1914 var NativeFlv = {
1915
1916 promise: null,
1917
1918 load: function load(settings) {
1919 if (typeof flvjs !== 'undefined') {
1920 NativeFlv.promise = new Promise(function (resolve) {
1921 resolve();
1922 }).then(function () {
1923 NativeFlv._createPlayer(settings);
1924 });
1925 } else {
1926 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js';
1927
1928 NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
1929 NativeFlv.promise.then(function () {
1930 NativeFlv._createPlayer(settings);
1931 });
1932 }
1933
1934 return NativeFlv.promise;
1935 },
1936
1937 _createPlayer: function _createPlayer(settings) {
1938 flvjs.LoggingControl.enableDebug = settings.options.debug;
1939 flvjs.LoggingControl.enableVerbose = settings.options.debug;
1940 var player = flvjs.createPlayer(settings.options);
1941 _window2.default['__ready__' + settings.id](player);
1942 return player;
1943 }
1944 };
1945
1946 var FlvNativeRenderer = {
1947 name: 'native_flv',
1948 options: {
1949 prefix: 'native_flv',
1950 flv: {
1951 path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js',
1952
1953 cors: true,
1954 debug: false
1955 }
1956 },
1957
1958 canPlayType: function canPlayType(type) {
1959 return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
1960 },
1961
1962 create: function create(mediaElement, options, mediaFiles) {
1963
1964 var originalNode = mediaElement.originalNode,
1965 id = mediaElement.id + '_' + options.prefix;
1966
1967 var node = null,
1968 flvPlayer = null;
1969
1970 node = originalNode.cloneNode(true);
1971 options = Object.assign(options, mediaElement.options);
1972
1973 var props = _mejs2.default.html5media.properties,
1974 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
1975 attachNativeEvents = function attachNativeEvents(e) {
1976 if (e.type !== 'error') {
1977 var _event = (0, _general.createEvent)(e.type, mediaElement);
1978 mediaElement.dispatchEvent(_event);
1979 }
1980 },
1981 assignGettersSetters = function assignGettersSetters(propName) {
1982 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1983
1984 node['get' + capName] = function () {
1985 return flvPlayer !== null ? node[propName] : null;
1986 };
1987
1988 node['set' + capName] = function (value) {
1989 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
1990 if (propName === 'src') {
1991 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
1992 if (flvPlayer !== null) {
1993 var _flvOptions = {};
1994 _flvOptions.type = 'flv';
1995 _flvOptions.url = value;
1996 _flvOptions.cors = options.flv.cors;
1997 _flvOptions.debug = options.flv.debug;
1998 _flvOptions.path = options.flv.path;
1999
2000 flvPlayer.destroy();
2001 for (var i = 0, total = events.length; i < total; i++) {
2002 node.removeEventListener(events[i], attachNativeEvents);
2003 }
2004 flvPlayer = NativeFlv._createPlayer({
2005 options: _flvOptions,
2006 id: id
2007 });
2008 flvPlayer.attachMediaElement(node);
2009 flvPlayer.load();
2010 }
2011 } else {
2012 node[propName] = value;
2013 }
2014 }
2015 };
2016 };
2017
2018 for (var i = 0, total = props.length; i < total; i++) {
2019 assignGettersSetters(props[i]);
2020 }
2021
2022 _window2.default['__ready__' + id] = function (_flvPlayer) {
2023 mediaElement.flvPlayer = flvPlayer = _flvPlayer;
2024
2025 var flvEvents = flvjs.Events,
2026 assignEvents = function assignEvents(eventName) {
2027 if (eventName === 'loadedmetadata') {
2028 flvPlayer.unload();
2029 flvPlayer.detachMediaElement();
2030 flvPlayer.attachMediaElement(node);
2031 flvPlayer.load();
2032 }
2033
2034 node.addEventListener(eventName, attachNativeEvents);
2035 };
2036
2037 for (var _i = 0, _total = events.length; _i < _total; _i++) {
2038 assignEvents(events[_i]);
2039 }
2040
2041 var assignFlvEvents = function assignFlvEvents(name, data) {
2042 if (name === 'error') {
2043 var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
2044 mediaElement.generateError(message, node.src);
2045 } else {
2046 var _event2 = (0, _general.createEvent)(name, mediaElement);
2047 _event2.data = data;
2048 mediaElement.dispatchEvent(_event2);
2049 }
2050 };
2051
2052 var _loop = function _loop(eventType) {
2053 if (flvEvents.hasOwnProperty(eventType)) {
2054 flvPlayer.on(flvEvents[eventType], function () {
2055 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2056 args[_key] = arguments[_key];
2057 }
2058
2059 return assignFlvEvents(flvEvents[eventType], args);
2060 });
2061 }
2062 };
2063
2064 for (var eventType in flvEvents) {
2065 _loop(eventType);
2066 }
2067 };
2068
2069 if (mediaFiles && mediaFiles.length > 0) {
2070 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
2071 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
2072 node.setAttribute('src', mediaFiles[_i2].src);
2073 break;
2074 }
2075 }
2076 }
2077
2078 node.setAttribute('id', id);
2079
2080 originalNode.parentNode.insertBefore(node, originalNode);
2081 originalNode.autoplay = false;
2082 originalNode.style.display = 'none';
2083
2084 var flvOptions = {};
2085 flvOptions.type = 'flv';
2086 flvOptions.url = node.src;
2087 flvOptions.cors = options.flv.cors;
2088 flvOptions.debug = options.flv.debug;
2089 flvOptions.path = options.flv.path;
2090
2091 node.setSize = function (width, height) {
2092 node.style.width = width + 'px';
2093 node.style.height = height + 'px';
2094 return node;
2095 };
2096
2097 node.hide = function () {
2098 if (flvPlayer !== null) {
2099 flvPlayer.pause();
2100 }
2101 node.style.display = 'none';
2102 return node;
2103 };
2104
2105 node.show = function () {
2106 node.style.display = '';
2107 return node;
2108 };
2109
2110 node.destroy = function () {
2111 if (flvPlayer !== null) {
2112 flvPlayer.destroy();
2113 }
2114 };
2115
2116 var event = (0, _general.createEvent)('rendererready', node);
2117 mediaElement.dispatchEvent(event);
2118
2119 mediaElement.promises.push(NativeFlv.load({
2120 options: flvOptions,
2121 id: id
2122 }));
2123
2124 return node;
2125 }
2126 };
2127
2128 _media.typeChecks.push(function (url) {
2129 return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
2130 });
2131
2132 _renderer.renderer.add(FlvNativeRenderer);
2133
2134 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){
2135 'use strict';
2136
2137 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; };
2138
2139 var _window = _dereq_(3);
2140
2141 var _window2 = _interopRequireDefault(_window);
2142
2143 var _mejs = _dereq_(7);
2144
2145 var _mejs2 = _interopRequireDefault(_mejs);
2146
2147 var _renderer = _dereq_(8);
2148
2149 var _general = _dereq_(18);
2150
2151 var _constants = _dereq_(16);
2152
2153 var _media = _dereq_(19);
2154
2155 var _dom = _dereq_(17);
2156
2157 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2158
2159 var NativeHls = {
2160
2161 promise: null,
2162
2163 load: function load(settings) {
2164 if (typeof Hls !== 'undefined') {
2165 NativeHls.promise = new Promise(function (resolve) {
2166 resolve();
2167 }).then(function () {
2168 NativeHls._createPlayer(settings);
2169 });
2170 } else {
2171 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js';
2172
2173 NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
2174 NativeHls.promise.then(function () {
2175 NativeHls._createPlayer(settings);
2176 });
2177 }
2178
2179 return NativeHls.promise;
2180 },
2181
2182 _createPlayer: function _createPlayer(settings) {
2183 var player = new Hls(settings.options);
2184 _window2.default['__ready__' + settings.id](player);
2185 return player;
2186 }
2187 };
2188
2189 var HlsNativeRenderer = {
2190 name: 'native_hls',
2191 options: {
2192 prefix: 'native_hls',
2193 hls: {
2194 path: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js',
2195
2196 autoStartLoad: false,
2197 debug: false
2198 }
2199 },
2200
2201 canPlayType: function canPlayType(type) {
2202 return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
2203 },
2204
2205 create: function create(mediaElement, options, mediaFiles) {
2206
2207 var originalNode = mediaElement.originalNode,
2208 id = mediaElement.id + '_' + options.prefix,
2209 preload = originalNode.getAttribute('preload'),
2210 autoplay = originalNode.autoplay;
2211
2212 var hlsPlayer = null,
2213 node = null;
2214
2215 node = originalNode.cloneNode(true);
2216 options = Object.assign(options, mediaElement.options);
2217 options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
2218
2219 var props = _mejs2.default.html5media.properties,
2220 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
2221 attachNativeEvents = function attachNativeEvents(e) {
2222 if (e.type !== 'error') {
2223 var _event = (0, _general.createEvent)(e.type, mediaElement);
2224 mediaElement.dispatchEvent(_event);
2225 }
2226 },
2227 assignGettersSetters = function assignGettersSetters(propName) {
2228 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2229
2230 node['get' + capName] = function () {
2231 return hlsPlayer !== null ? node[propName] : null;
2232 };
2233
2234 node['set' + capName] = function (value) {
2235 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2236 if (propName === 'src') {
2237 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
2238 if (hlsPlayer !== null) {
2239 hlsPlayer.destroy();
2240 for (var i = 0, total = events.length; i < total; i++) {
2241 node.removeEventListener(events[i], attachNativeEvents);
2242 }
2243 hlsPlayer = NativeHls._createPlayer({
2244 options: options.hls,
2245 id: id
2246 });
2247 hlsPlayer.loadSource(value);
2248 hlsPlayer.attachMedia(node);
2249 }
2250 } else {
2251 node[propName] = value;
2252 }
2253 }
2254 };
2255 };
2256
2257 for (var i = 0, total = props.length; i < total; i++) {
2258 assignGettersSetters(props[i]);
2259 }
2260
2261 _window2.default['__ready__' + id] = function (_hlsPlayer) {
2262 mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
2263 var hlsEvents = Hls.Events,
2264 assignEvents = function assignEvents(eventName) {
2265 if (eventName === 'loadedmetadata') {
2266 var url = mediaElement.originalNode.src;
2267 hlsPlayer.detachMedia();
2268 hlsPlayer.loadSource(url);
2269 hlsPlayer.attachMedia(node);
2270 }
2271
2272 node.addEventListener(eventName, attachNativeEvents);
2273 };
2274
2275 for (var _i = 0, _total = events.length; _i < _total; _i++) {
2276 assignEvents(events[_i]);
2277 }
2278
2279 var recoverDecodingErrorDate = void 0,
2280 recoverSwapAudioCodecDate = void 0;
2281 var assignHlsEvents = function assignHlsEvents(name, data) {
2282 if (name === 'hlsError') {
2283 console.warn(name, data);
2284
2285 if (data.fatal) {
2286 switch (data.type) {
2287 case 'mediaError':
2288 var now = new Date().getTime();
2289 if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
2290 recoverDecodingErrorDate = new Date().getTime();
2291 hlsPlayer.recoverMediaError();
2292 } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
2293 recoverSwapAudioCodecDate = new Date().getTime();
2294 console.warn('Attempting to swap Audio Codec and recover from media error');
2295 hlsPlayer.swapAudioCodec();
2296 hlsPlayer.recoverMediaError();
2297 } else {
2298 var _message = 'Cannot recover, last media error recovery failed';
2299 mediaElement.generateError(_message, node.src);
2300 console.error(_message);
2301 }
2302 break;
2303 case 'networkError':
2304 var message = 'Network error';
2305 mediaElement.generateError(message, node.src);
2306 console.error(message);
2307 break;
2308 default:
2309 hlsPlayer.destroy();
2310 break;
2311 }
2312 }
2313 } else {
2314 var _event2 = (0, _general.createEvent)(name, mediaElement);
2315 _event2.data = data;
2316 mediaElement.dispatchEvent(_event2);
2317 }
2318 };
2319
2320 var _loop = function _loop(eventType) {
2321 if (hlsEvents.hasOwnProperty(eventType)) {
2322 hlsPlayer.on(hlsEvents[eventType], function () {
2323 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2324 args[_key] = arguments[_key];
2325 }
2326
2327 return assignHlsEvents(hlsEvents[eventType], args);
2328 });
2329 }
2330 };
2331
2332 for (var eventType in hlsEvents) {
2333 _loop(eventType);
2334 }
2335 };
2336
2337 if (mediaFiles && mediaFiles.length > 0) {
2338 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
2339 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
2340 node.setAttribute('src', mediaFiles[_i2].src);
2341 break;
2342 }
2343 }
2344 }
2345
2346 if (preload !== 'auto' && !autoplay) {
2347 node.addEventListener('play', function () {
2348 if (hlsPlayer !== null) {
2349 hlsPlayer.startLoad();
2350 }
2351 });
2352
2353 node.addEventListener('pause', function () {
2354 if (hlsPlayer !== null) {
2355 hlsPlayer.stopLoad();
2356 }
2357 });
2358 }
2359
2360 node.setAttribute('id', id);
2361
2362 originalNode.parentNode.insertBefore(node, originalNode);
2363 originalNode.autoplay = false;
2364 originalNode.style.display = 'none';
2365
2366 node.setSize = function (width, height) {
2367 node.style.width = width + 'px';
2368 node.style.height = height + 'px';
2369 return node;
2370 };
2371
2372 node.hide = function () {
2373 node.pause();
2374 node.style.display = 'none';
2375 return node;
2376 };
2377
2378 node.show = function () {
2379 node.style.display = '';
2380 return node;
2381 };
2382
2383 node.destroy = function () {
2384 if (hlsPlayer !== null) {
2385 hlsPlayer.stopLoad();
2386 hlsPlayer.destroy();
2387 }
2388 };
2389
2390 var event = (0, _general.createEvent)('rendererready', node);
2391 mediaElement.dispatchEvent(event);
2392
2393 mediaElement.promises.push(NativeHls.load({
2394 options: options.hls,
2395 id: id
2396 }));
2397
2398 return node;
2399 }
2400 };
2401
2402 _media.typeChecks.push(function (url) {
2403 return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
2404 });
2405
2406 _renderer.renderer.add(HlsNativeRenderer);
2407
2408 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){
2409 'use strict';
2410
2411 var _window = _dereq_(3);
2412
2413 var _window2 = _interopRequireDefault(_window);
2414
2415 var _document = _dereq_(2);
2416
2417 var _document2 = _interopRequireDefault(_document);
2418
2419 var _mejs = _dereq_(7);
2420
2421 var _mejs2 = _interopRequireDefault(_mejs);
2422
2423 var _renderer = _dereq_(8);
2424
2425 var _general = _dereq_(18);
2426
2427 var _constants = _dereq_(16);
2428
2429 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2430
2431 var HtmlMediaElement = {
2432 name: 'html5',
2433 options: {
2434 prefix: 'html5'
2435 },
2436
2437 canPlayType: function canPlayType(type) {
2438
2439 var mediaElement = _document2.default.createElement('video');
2440
2441 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) {
2442 return 'yes';
2443 } else if (mediaElement.canPlayType) {
2444 return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
2445 } else {
2446 return '';
2447 }
2448 },
2449
2450 create: function create(mediaElement, options, mediaFiles) {
2451
2452 var id = mediaElement.id + '_' + options.prefix;
2453
2454 var node = null;
2455
2456 if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
2457 node = _document2.default.createElement('audio');
2458 mediaElement.appendChild(node);
2459 } else {
2460 node = mediaElement.originalNode;
2461 }
2462
2463 node.setAttribute('id', id);
2464
2465 var props = _mejs2.default.html5media.properties,
2466 assignGettersSetters = function assignGettersSetters(propName) {
2467 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2468
2469 node['get' + capName] = function () {
2470 return node[propName];
2471 };
2472
2473 node['set' + capName] = function (value) {
2474 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2475 node[propName] = value;
2476 }
2477 };
2478 };
2479
2480 for (var i = 0, total = props.length; i < total; i++) {
2481 assignGettersSetters(props[i]);
2482 }
2483
2484 var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
2485 assignEvents = function assignEvents(eventName) {
2486 node.addEventListener(eventName, function (e) {
2487 var event = (0, _general.createEvent)(e.type, mediaElement);
2488 mediaElement.dispatchEvent(event);
2489 });
2490 };
2491
2492 for (var _i = 0, _total = events.length; _i < _total; _i++) {
2493 assignEvents(events[_i]);
2494 }
2495
2496 node.setSize = function (width, height) {
2497 node.style.width = width + 'px';
2498 node.style.height = height + 'px';
2499 return node;
2500 };
2501
2502 node.hide = function () {
2503 node.style.display = 'none';
2504
2505 return node;
2506 };
2507
2508 node.show = function () {
2509 node.style.display = '';
2510
2511 return node;
2512 };
2513
2514 if (mediaFiles && mediaFiles.length > 0) {
2515 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
2516 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
2517 node.setAttribute('src', mediaFiles[_i2].src);
2518 break;
2519 }
2520 }
2521 }
2522
2523 var event = (0, _general.createEvent)('rendererready', node);
2524 mediaElement.dispatchEvent(event);
2525
2526 return node;
2527 }
2528 };
2529
2530 _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
2531
2532 _renderer.renderer.add(HtmlMediaElement);
2533
2534 },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){
2535 'use strict';
2536
2537 var _window = _dereq_(3);
2538
2539 var _window2 = _interopRequireDefault(_window);
2540
2541 var _document = _dereq_(2);
2542
2543 var _document2 = _interopRequireDefault(_document);
2544
2545 var _mejs = _dereq_(7);
2546
2547 var _mejs2 = _interopRequireDefault(_mejs);
2548
2549 var _renderer = _dereq_(8);
2550
2551 var _general = _dereq_(18);
2552
2553 var _media = _dereq_(19);
2554
2555 var _dom = _dereq_(17);
2556
2557 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2558
2559 var YouTubeApi = {
2560 isIframeStarted: false,
2561
2562 isIframeLoaded: false,
2563
2564 iframeQueue: [],
2565
2566 enqueueIframe: function enqueueIframe(settings) {
2567 YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
2568
2569 if (YouTubeApi.isLoaded) {
2570 YouTubeApi.createIframe(settings);
2571 } else {
2572 YouTubeApi.loadIframeApi();
2573 YouTubeApi.iframeQueue.push(settings);
2574 }
2575 },
2576
2577 loadIframeApi: function loadIframeApi() {
2578 if (!YouTubeApi.isIframeStarted) {
2579 (0, _dom.loadScript)('https://www.youtube.com/player_api');
2580 YouTubeApi.isIframeStarted = true;
2581 }
2582 },
2583
2584 iFrameReady: function iFrameReady() {
2585
2586 YouTubeApi.isLoaded = true;
2587 YouTubeApi.isIframeLoaded = true;
2588
2589 while (YouTubeApi.iframeQueue.length > 0) {
2590 var settings = YouTubeApi.iframeQueue.pop();
2591 YouTubeApi.createIframe(settings);
2592 }
2593 },
2594
2595 createIframe: function createIframe(settings) {
2596 return new YT.Player(settings.containerId, settings);
2597 },
2598
2599 getYouTubeId: function getYouTubeId(url) {
2600
2601 var youTubeId = '';
2602
2603 if (url.indexOf('?') > 0) {
2604 youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
2605
2606 if (youTubeId === '') {
2607 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2608 }
2609 } else {
2610 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2611 }
2612
2613 var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
2614 youTubeId = id.split('?');
2615 return youTubeId[0];
2616 },
2617
2618 getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
2619
2620 if (url === undefined || url === null || !url.trim().length) {
2621 return null;
2622 }
2623
2624 var parts = url.split('?'),
2625 parameters = parts[1].split('&');
2626
2627 var youTubeId = '';
2628
2629 for (var i = 0, total = parameters.length; i < total; i++) {
2630 var paramParts = parameters[i].split('=');
2631 if (paramParts[0] === 'v') {
2632 youTubeId = paramParts[1];
2633 break;
2634 }
2635 }
2636
2637 return youTubeId;
2638 },
2639
2640 getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
2641
2642 if (url === undefined || url === null || !url.trim().length) {
2643 return null;
2644 }
2645
2646 var parts = url.split('?');
2647 url = parts[0];
2648 return url.substring(url.lastIndexOf('/') + 1);
2649 },
2650
2651 getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
2652 if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
2653 return url;
2654 }
2655
2656 var parts = url.split('/');
2657 parts[2] = parts[2].replace('.com', '-nocookie.com');
2658 return parts.join('/');
2659 }
2660 };
2661
2662 var YouTubeIframeRenderer = {
2663 name: 'youtube_iframe',
2664
2665 options: {
2666 prefix: 'youtube_iframe',
2667
2668 youtube: {
2669 autoplay: 0,
2670 controls: 0,
2671 disablekb: 1,
2672 end: 0,
2673 loop: 0,
2674 modestbranding: 0,
2675 playsinline: 0,
2676 rel: 0,
2677 showinfo: 0,
2678 start: 0,
2679 iv_load_policy: 3,
2680
2681 nocookie: false,
2682
2683 imageQuality: null
2684 }
2685 },
2686
2687 canPlayType: function canPlayType(type) {
2688 return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
2689 },
2690
2691 create: function create(mediaElement, options, mediaFiles) {
2692
2693 var youtube = {},
2694 apiStack = [],
2695 readyState = 4;
2696
2697 var youTubeApi = null,
2698 paused = true,
2699 ended = false,
2700 youTubeIframe = null,
2701 volume = 1;
2702
2703 youtube.options = options;
2704 youtube.id = mediaElement.id + '_' + options.prefix;
2705 youtube.mediaElement = mediaElement;
2706
2707 var props = _mejs2.default.html5media.properties,
2708 assignGettersSetters = function assignGettersSetters(propName) {
2709
2710 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2711
2712 youtube['get' + capName] = function () {
2713 if (youTubeApi !== null) {
2714 var value = null;
2715
2716 switch (propName) {
2717 case 'currentTime':
2718 return youTubeApi.getCurrentTime();
2719 case 'duration':
2720 return youTubeApi.getDuration();
2721 case 'volume':
2722 volume = youTubeApi.getVolume() / 100;
2723 return volume;
2724 case 'paused':
2725 return paused;
2726 case 'ended':
2727 return ended;
2728 case 'muted':
2729 return youTubeApi.isMuted();
2730 case 'buffered':
2731 var percentLoaded = youTubeApi.getVideoLoadedFraction(),
2732 duration = youTubeApi.getDuration();
2733 return {
2734 start: function start() {
2735 return 0;
2736 },
2737 end: function end() {
2738 return percentLoaded * duration;
2739 },
2740 length: 1
2741 };
2742 case 'src':
2743 return youTubeApi.getVideoUrl();
2744 case 'readyState':
2745 return readyState;
2746 }
2747
2748 return value;
2749 } else {
2750 return null;
2751 }
2752 };
2753
2754 youtube['set' + capName] = function (value) {
2755 if (youTubeApi !== null) {
2756 switch (propName) {
2757 case 'src':
2758 var url = typeof value === 'string' ? value : value[0].src,
2759 _videoId = YouTubeApi.getYouTubeId(url);
2760
2761 if (mediaElement.originalNode.autoplay) {
2762 youTubeApi.loadVideoById(_videoId);
2763 } else {
2764 youTubeApi.cueVideoById(_videoId);
2765 }
2766 break;
2767 case 'currentTime':
2768 youTubeApi.seekTo(value);
2769 break;
2770 case 'muted':
2771 if (value) {
2772 youTubeApi.mute();
2773 } else {
2774 youTubeApi.unMute();
2775 }
2776 setTimeout(function () {
2777 var event = (0, _general.createEvent)('volumechange', youtube);
2778 mediaElement.dispatchEvent(event);
2779 }, 50);
2780 break;
2781 case 'volume':
2782 volume = value;
2783 youTubeApi.setVolume(value * 100);
2784 setTimeout(function () {
2785 var event = (0, _general.createEvent)('volumechange', youtube);
2786 mediaElement.dispatchEvent(event);
2787 }, 50);
2788 break;
2789 case 'readyState':
2790 var event = (0, _general.createEvent)('canplay', youtube);
2791 mediaElement.dispatchEvent(event);
2792 break;
2793 default:
2794
2795 break;
2796 }
2797 } else {
2798 apiStack.push({ type: 'set', propName: propName, value: value });
2799 }
2800 };
2801 };
2802
2803 for (var i = 0, total = props.length; i < total; i++) {
2804 assignGettersSetters(props[i]);
2805 }
2806
2807 var methods = _mejs2.default.html5media.methods,
2808 assignMethods = function assignMethods(methodName) {
2809 youtube[methodName] = function () {
2810 if (youTubeApi !== null) {
2811 switch (methodName) {
2812 case 'play':
2813 paused = false;
2814 return youTubeApi.playVideo();
2815 case 'pause':
2816 paused = true;
2817 return youTubeApi.pauseVideo();
2818 case 'load':
2819 return null;
2820 }
2821 } else {
2822 apiStack.push({ type: 'call', methodName: methodName });
2823 }
2824 };
2825 };
2826
2827 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
2828 assignMethods(methods[_i]);
2829 }
2830
2831 var youtubeContainer = _document2.default.createElement('div');
2832 youtubeContainer.id = youtube.id;
2833
2834 if (youtube.options.youtube.nocookie) {
2835 mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
2836 }
2837
2838 mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
2839 mediaElement.originalNode.style.display = 'none';
2840
2841 var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
2842 height = isAudio ? '1' : mediaElement.originalNode.height,
2843 width = isAudio ? '1' : mediaElement.originalNode.width,
2844 videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
2845 youtubeSettings = {
2846 id: youtube.id,
2847 containerId: youtubeContainer.id,
2848 videoId: videoId,
2849 height: height,
2850 width: width,
2851 playerVars: Object.assign({
2852 controls: 0,
2853 rel: 0,
2854 disablekb: 1,
2855 showinfo: 0,
2856 modestbranding: 0,
2857 html5: 1,
2858 playsinline: 0,
2859 start: 0,
2860 end: 0,
2861 iv_load_policy: 3
2862 }, youtube.options.youtube),
2863 origin: _window2.default.location.host,
2864 events: {
2865 onReady: function onReady(e) {
2866 mediaElement.youTubeApi = youTubeApi = e.target;
2867 mediaElement.youTubeState = {
2868 paused: true,
2869 ended: false
2870 };
2871
2872 if (apiStack.length) {
2873 for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
2874
2875 var stackItem = apiStack[_i2];
2876
2877 if (stackItem.type === 'set') {
2878 var propName = stackItem.propName,
2879 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2880
2881 youtube['set' + capName](stackItem.value);
2882 } else if (stackItem.type === 'call') {
2883 youtube[stackItem.methodName]();
2884 }
2885 }
2886 }
2887
2888 youTubeIframe = youTubeApi.getIframe();
2889
2890 if (mediaElement.originalNode.getAttribute('muted')) {
2891 youTubeApi.mute();
2892 }
2893
2894 var events = ['mouseover', 'mouseout'],
2895 assignEvents = function assignEvents(e) {
2896 var newEvent = (0, _general.createEvent)(e.type, youtube);
2897 mediaElement.dispatchEvent(newEvent);
2898 };
2899
2900 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
2901 youTubeIframe.addEventListener(events[_i3], assignEvents, false);
2902 }
2903
2904 var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
2905
2906 for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
2907 var event = (0, _general.createEvent)(initEvents[_i4], youtube);
2908 mediaElement.dispatchEvent(event);
2909 }
2910 },
2911 onStateChange: function onStateChange(e) {
2912 var events = [];
2913
2914 switch (e.data) {
2915 case -1:
2916 events = ['loadedmetadata'];
2917 paused = true;
2918 ended = false;
2919 break;
2920 case 0:
2921 events = ['ended'];
2922 paused = false;
2923 ended = !youtube.options.youtube.loop;
2924 if (!youtube.options.youtube.loop) {
2925 youtube.stopInterval();
2926 }
2927 break;
2928 case 1:
2929 events = ['play', 'playing'];
2930 paused = false;
2931 ended = false;
2932 youtube.startInterval();
2933 break;
2934 case 2:
2935 events = ['pause'];
2936 paused = true;
2937 ended = false;
2938 youtube.stopInterval();
2939 break;
2940 case 3:
2941 events = ['progress'];
2942 ended = false;
2943 break;
2944 case 5:
2945 events = ['loadeddata', 'loadedmetadata', 'canplay'];
2946 paused = true;
2947 ended = false;
2948 break;
2949 }
2950
2951 for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
2952 var event = (0, _general.createEvent)(events[_i5], youtube);
2953 mediaElement.dispatchEvent(event);
2954 }
2955 },
2956 onError: function onError(e) {
2957 var event = (0, _general.createEvent)('error', youtube);
2958 event.data = e.data;
2959 mediaElement.dispatchEvent(event);
2960 }
2961 }
2962 };
2963
2964 if (isAudio) {
2965 youtubeSettings.playerVars.playsinline = 1;
2966 }
2967
2968 if (mediaElement.originalNode.autoplay) {
2969 youtubeSettings.playerVars.autoplay = 1;
2970 }
2971
2972 if (mediaElement.originalNode.loop) {
2973 youtubeSettings.playerVars.loop = 1;
2974 }
2975
2976 YouTubeApi.enqueueIframe(youtubeSettings);
2977
2978 youtube.onEvent = function (eventName, player, _youTubeState) {
2979 if (_youTubeState !== null && _youTubeState !== undefined) {
2980 mediaElement.youTubeState = _youTubeState;
2981 }
2982 };
2983
2984 youtube.setSize = function (width, height) {
2985 if (youTubeApi !== null) {
2986 youTubeApi.setSize(width, height);
2987 }
2988 };
2989 youtube.hide = function () {
2990 youtube.stopInterval();
2991 youtube.pause();
2992 if (youTubeIframe) {
2993 youTubeIframe.style.display = 'none';
2994 }
2995 };
2996 youtube.show = function () {
2997 if (youTubeIframe) {
2998 youTubeIframe.style.display = '';
2999 }
3000 };
3001 youtube.destroy = function () {
3002 youTubeApi.destroy();
3003 };
3004 youtube.interval = null;
3005
3006 youtube.startInterval = function () {
3007 youtube.interval = setInterval(function () {
3008 var event = (0, _general.createEvent)('timeupdate', youtube);
3009 mediaElement.dispatchEvent(event);
3010 }, 250);
3011 };
3012 youtube.stopInterval = function () {
3013 if (youtube.interval) {
3014 clearInterval(youtube.interval);
3015 }
3016 };
3017 youtube.getPosterUrl = function () {
3018 var quality = options.youtube.imageQuality,
3019 resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
3020 id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
3021 return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
3022 };
3023
3024 return youtube;
3025 }
3026 };
3027
3028 _window2.default.onYouTubePlayerAPIReady = function () {
3029 YouTubeApi.iFrameReady();
3030 };
3031
3032 _media.typeChecks.push(function (url) {
3033 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
3034 );
3035 });
3036
3037 _renderer.renderer.add(YouTubeIframeRenderer);
3038
3039 },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_,module,exports){
3040 'use strict';
3041
3042 Object.defineProperty(exports, "__esModule", {
3043 value: true
3044 });
3045 exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
3046
3047 var _window = _dereq_(3);
3048
3049 var _window2 = _interopRequireDefault(_window);
3050
3051 var _document = _dereq_(2);
3052
3053 var _document2 = _interopRequireDefault(_document);
3054
3055 var _mejs = _dereq_(7);
3056
3057 var _mejs2 = _interopRequireDefault(_mejs);
3058
3059 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3060
3061 var NAV = exports.NAV = _window2.default.navigator;
3062 var UA = exports.UA = NAV.userAgent.toLowerCase();
3063 var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
3064 var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
3065 var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
3066 var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
3067 var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
3068 var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
3069 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
3070 var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
3071 var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
3072 var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
3073 var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
3074 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
3075 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
3076 var element = _document2.default.createElement('x'),
3077 documentElement = _document2.default.documentElement,
3078 getComputedStyle = _window2.default.getComputedStyle;
3079
3080 if (!('pointerEvents' in element.style)) {
3081 return false;
3082 }
3083
3084 element.style.pointerEvents = 'auto';
3085 element.style.pointerEvents = 'x';
3086 documentElement.appendChild(element);
3087 var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
3088 element.remove();
3089 return !!supports;
3090 }();
3091
3092 var html5Elements = ['source', 'track', 'audio', 'video'];
3093 var video = void 0;
3094
3095 for (var i = 0, total = html5Elements.length; i < total; i++) {
3096 video = _document2.default.createElement(html5Elements[i]);
3097 }
3098
3099 var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
3100
3101 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
3102
3103 var hasNativeFullscreen = video.requestFullscreen !== undefined;
3104
3105 if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
3106 hasNativeFullscreen = false;
3107 hasiOSFullScreen = false;
3108 }
3109
3110 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
3111 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
3112 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
3113 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
3114 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
3115 var fullScreenEventName = '';
3116 var isFullScreen = void 0,
3117 requestFullScreen = void 0,
3118 cancelFullScreen = void 0;
3119
3120 if (hasMozNativeFullScreen) {
3121 nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
3122 } else if (hasMsNativeFullScreen) {
3123 nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
3124 }
3125
3126 if (IS_CHROME) {
3127 hasiOSFullScreen = false;
3128 }
3129
3130 if (hasTrueNativeFullScreen) {
3131 if (hasWebkitNativeFullScreen) {
3132 fullScreenEventName = 'webkitfullscreenchange';
3133 } else if (hasMozNativeFullScreen) {
3134 fullScreenEventName = 'mozfullscreenchange';
3135 } else if (hasMsNativeFullScreen) {
3136 fullScreenEventName = 'MSFullscreenChange';
3137 }
3138
3139 exports.isFullScreen = isFullScreen = function isFullScreen() {
3140 if (hasMozNativeFullScreen) {
3141 return _document2.default.mozFullScreen;
3142 } else if (hasWebkitNativeFullScreen) {
3143 return _document2.default.webkitIsFullScreen;
3144 } else if (hasMsNativeFullScreen) {
3145 return _document2.default.msFullscreenElement !== null;
3146 }
3147 };
3148
3149 exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
3150 if (hasWebkitNativeFullScreen) {
3151 el.webkitRequestFullScreen();
3152 } else if (hasMozNativeFullScreen) {
3153 el.mozRequestFullScreen();
3154 } else if (hasMsNativeFullScreen) {
3155 el.msRequestFullscreen();
3156 }
3157 };
3158
3159 exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
3160 if (hasWebkitNativeFullScreen) {
3161 _document2.default.webkitCancelFullScreen();
3162 } else if (hasMozNativeFullScreen) {
3163 _document2.default.mozCancelFullScreen();
3164 } else if (hasMsNativeFullScreen) {
3165 _document2.default.msExitFullscreen();
3166 }
3167 };
3168 }
3169
3170 var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
3171 var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
3172 var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
3173 var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
3174 var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
3175 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
3176 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
3177 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
3178 exports.isFullScreen = isFullScreen;
3179 exports.requestFullScreen = requestFullScreen;
3180 exports.cancelFullScreen = cancelFullScreen;
3181
3182
3183 _mejs2.default.Features = _mejs2.default.Features || {};
3184 _mejs2.default.Features.isiPad = IS_IPAD;
3185 _mejs2.default.Features.isiPod = IS_IPOD;
3186 _mejs2.default.Features.isiPhone = IS_IPHONE;
3187 _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
3188 _mejs2.default.Features.isAndroid = IS_ANDROID;
3189 _mejs2.default.Features.isIE = IS_IE;
3190 _mejs2.default.Features.isEdge = IS_EDGE;
3191 _mejs2.default.Features.isChrome = IS_CHROME;
3192 _mejs2.default.Features.isFirefox = IS_FIREFOX;
3193 _mejs2.default.Features.isSafari = IS_SAFARI;
3194 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
3195 _mejs2.default.Features.hasMSE = HAS_MSE;
3196 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
3197 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
3198 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
3199 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
3200 _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
3201 _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
3202 _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
3203 _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
3204 _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
3205 _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
3206 _mejs2.default.Features.isFullScreen = isFullScreen;
3207 _mejs2.default.Features.requestFullScreen = requestFullScreen;
3208 _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
3209
3210 },{"2":2,"3":3,"7":7}],17:[function(_dereq_,module,exports){
3211 'use strict';
3212
3213 Object.defineProperty(exports, "__esModule", {
3214 value: true
3215 });
3216 exports.removeClass = exports.addClass = exports.hasClass = undefined;
3217 exports.loadScript = loadScript;
3218 exports.offset = offset;
3219 exports.toggleClass = toggleClass;
3220 exports.fadeOut = fadeOut;
3221 exports.fadeIn = fadeIn;
3222 exports.siblings = siblings;
3223 exports.visible = visible;
3224 exports.ajax = ajax;
3225
3226 var _window = _dereq_(3);
3227
3228 var _window2 = _interopRequireDefault(_window);
3229
3230 var _document = _dereq_(2);
3231
3232 var _document2 = _interopRequireDefault(_document);
3233
3234 var _mejs = _dereq_(7);
3235
3236 var _mejs2 = _interopRequireDefault(_mejs);
3237
3238 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3239
3240 function loadScript(url) {
3241 return new Promise(function (resolve, reject) {
3242 var script = _document2.default.createElement('script');
3243 script.src = url;
3244 script.async = true;
3245 script.onload = function () {
3246 script.remove();
3247 resolve();
3248 };
3249 script.onerror = function () {
3250 script.remove();
3251 reject();
3252 };
3253 _document2.default.head.appendChild(script);
3254 });
3255 }
3256
3257 function offset(el) {
3258 var rect = el.getBoundingClientRect(),
3259 scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
3260 scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
3261 return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
3262 }
3263
3264 var hasClassMethod = void 0,
3265 addClassMethod = void 0,
3266 removeClassMethod = void 0;
3267
3268 if ('classList' in _document2.default.documentElement) {
3269 hasClassMethod = function hasClassMethod(el, className) {
3270 return el.classList !== undefined && el.classList.contains(className);
3271 };
3272 addClassMethod = function addClassMethod(el, className) {
3273 return el.classList.add(className);
3274 };
3275 removeClassMethod = function removeClassMethod(el, className) {
3276 return el.classList.remove(className);
3277 };
3278 } else {
3279 hasClassMethod = function hasClassMethod(el, className) {
3280 return new RegExp('\\b' + className + '\\b').test(el.className);
3281 };
3282 addClassMethod = function addClassMethod(el, className) {
3283 if (!hasClass(el, className)) {
3284 el.className += ' ' + className;
3285 }
3286 };
3287 removeClassMethod = function removeClassMethod(el, className) {
3288 el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
3289 };
3290 }
3291
3292 var hasClass = exports.hasClass = hasClassMethod;
3293 var addClass = exports.addClass = addClassMethod;
3294 var removeClass = exports.removeClass = removeClassMethod;
3295
3296 function toggleClass(el, className) {
3297 hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
3298 }
3299
3300 function fadeOut(el) {
3301 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3302 var callback = arguments[2];
3303
3304 if (!el.style.opacity) {
3305 el.style.opacity = 1;
3306 }
3307
3308 var start = null;
3309 _window2.default.requestAnimationFrame(function animate(timestamp) {
3310 start = start || timestamp;
3311 var progress = timestamp - start;
3312 var opacity = parseFloat(1 - progress / duration, 2);
3313 el.style.opacity = opacity < 0 ? 0 : opacity;
3314 if (progress > duration) {
3315 if (callback && typeof callback === 'function') {
3316 callback();
3317 }
3318 } else {
3319 _window2.default.requestAnimationFrame(animate);
3320 }
3321 });
3322 }
3323
3324 function fadeIn(el) {
3325 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3326 var callback = arguments[2];
3327
3328 if (!el.style.opacity) {
3329 el.style.opacity = 0;
3330 }
3331
3332 var start = null;
3333 _window2.default.requestAnimationFrame(function animate(timestamp) {
3334 start = start || timestamp;
3335 var progress = timestamp - start;
3336 var opacity = parseFloat(progress / duration, 2);
3337 el.style.opacity = opacity > 1 ? 1 : opacity;
3338 if (progress > duration) {
3339 if (callback && typeof callback === 'function') {
3340 callback();
3341 }
3342 } else {
3343 _window2.default.requestAnimationFrame(animate);
3344 }
3345 });
3346 }
3347
3348 function siblings(el, filter) {
3349 var siblings = [];
3350 el = el.parentNode.firstChild;
3351 do {
3352 if (!filter || filter(el)) {
3353 siblings.push(el);
3354 }
3355 } while (el = el.nextSibling);
3356 return siblings;
3357 }
3358
3359 function visible(elem) {
3360 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
3361 }
3362
3363 function ajax(url, dataType, success, error) {
3364 var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
3365
3366 var type = 'application/x-www-form-urlencoded; charset=UTF-8',
3367 completed = false,
3368 accept = '*/'.concat('*');
3369
3370 switch (dataType) {
3371 case 'text':
3372 type = 'text/plain';
3373 break;
3374 case 'json':
3375 type = 'application/json, text/javascript';
3376 break;
3377 case 'html':
3378 type = 'text/html';
3379 break;
3380 case 'xml':
3381 type = 'application/xml, text/xml';
3382 break;
3383 }
3384
3385 if (type !== 'application/x-www-form-urlencoded') {
3386 accept = type + ', */*; q=0.01';
3387 }
3388
3389 if (xhr) {
3390 xhr.open('GET', url, true);
3391 xhr.setRequestHeader('Accept', accept);
3392 xhr.onreadystatechange = function () {
3393 if (completed) {
3394 return;
3395 }
3396
3397 if (xhr.readyState === 4) {
3398 if (xhr.status === 200) {
3399 completed = true;
3400 var data = void 0;
3401 switch (dataType) {
3402 case 'json':
3403 data = JSON.parse(xhr.responseText);
3404 break;
3405 case 'xml':
3406 data = xhr.responseXML;
3407 break;
3408 default:
3409 data = xhr.responseText;
3410 break;
3411 }
3412 success(data);
3413 } else if (typeof error === 'function') {
3414 error(xhr.status);
3415 }
3416 }
3417 };
3418
3419 xhr.send();
3420 }
3421 }
3422
3423 _mejs2.default.Utils = _mejs2.default.Utils || {};
3424 _mejs2.default.Utils.offset = offset;
3425 _mejs2.default.Utils.hasClass = hasClass;
3426 _mejs2.default.Utils.addClass = addClass;
3427 _mejs2.default.Utils.removeClass = removeClass;
3428 _mejs2.default.Utils.toggleClass = toggleClass;
3429 _mejs2.default.Utils.fadeIn = fadeIn;
3430 _mejs2.default.Utils.fadeOut = fadeOut;
3431 _mejs2.default.Utils.siblings = siblings;
3432 _mejs2.default.Utils.visible = visible;
3433 _mejs2.default.Utils.ajax = ajax;
3434 _mejs2.default.Utils.loadScript = loadScript;
3435
3436 },{"2":2,"3":3,"7":7}],18:[function(_dereq_,module,exports){
3437 'use strict';
3438
3439 Object.defineProperty(exports, "__esModule", {
3440 value: true
3441 });
3442 exports.escapeHTML = escapeHTML;
3443 exports.debounce = debounce;
3444 exports.isObjectEmpty = isObjectEmpty;
3445 exports.splitEvents = splitEvents;
3446 exports.createEvent = createEvent;
3447 exports.isNodeAfter = isNodeAfter;
3448 exports.isString = isString;
3449
3450 var _mejs = _dereq_(7);
3451
3452 var _mejs2 = _interopRequireDefault(_mejs);
3453
3454 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3455
3456 function escapeHTML(input) {
3457
3458 if (typeof input !== 'string') {
3459 throw new Error('Argument passed must be a string');
3460 }
3461
3462 var map = {
3463 '&': '&amp;',
3464 '<': '&lt;',
3465 '>': '&gt;',
3466 '"': '&quot;'
3467 };
3468
3469 return input.replace(/[&<>"]/g, function (c) {
3470 return map[c];
3471 });
3472 }
3473
3474 function debounce(func, wait) {
3475 var _this = this,
3476 _arguments = arguments;
3477
3478 var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3479
3480
3481 if (typeof func !== 'function') {
3482 throw new Error('First argument must be a function');
3483 }
3484
3485 if (typeof wait !== 'number') {
3486 throw new Error('Second argument must be a numeric value');
3487 }
3488
3489 var timeout = void 0;
3490 return function () {
3491 var context = _this,
3492 args = _arguments;
3493 var later = function later() {
3494 timeout = null;
3495 if (!immediate) {
3496 func.apply(context, args);
3497 }
3498 };
3499 var callNow = immediate && !timeout;
3500 clearTimeout(timeout);
3501 timeout = setTimeout(later, wait);
3502
3503 if (callNow) {
3504 func.apply(context, args);
3505 }
3506 };
3507 }
3508
3509 function isObjectEmpty(instance) {
3510 return Object.getOwnPropertyNames(instance).length <= 0;
3511 }
3512
3513 function splitEvents(events, id) {
3514 var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
3515
3516 var ret = { d: [], w: [] };
3517 (events || '').split(' ').forEach(function (v) {
3518 var eventName = '' + v + (id ? '.' + id : '');
3519
3520 if (eventName.startsWith('.')) {
3521 ret.d.push(eventName);
3522 ret.w.push(eventName);
3523 } else {
3524 ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
3525 }
3526 });
3527
3528 ret.d = ret.d.join(' ');
3529 ret.w = ret.w.join(' ');
3530 return ret;
3531 }
3532
3533 function createEvent(eventName, target) {
3534
3535 if (typeof eventName !== 'string') {
3536 throw new Error('Event name must be a string');
3537 }
3538
3539 var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
3540 detail = {
3541 target: target
3542 };
3543
3544 if (eventFrags !== null) {
3545 eventName = eventFrags[1];
3546 detail.namespace = eventFrags[2];
3547 }
3548
3549 return new window.CustomEvent(eventName, {
3550 detail: detail
3551 });
3552 }
3553
3554 function isNodeAfter(sourceNode, targetNode) {
3555
3556 return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
3557 }
3558
3559 function isString(value) {
3560 return typeof value === 'string';
3561 }
3562
3563 _mejs2.default.Utils = _mejs2.default.Utils || {};
3564 _mejs2.default.Utils.escapeHTML = escapeHTML;
3565 _mejs2.default.Utils.debounce = debounce;
3566 _mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
3567 _mejs2.default.Utils.splitEvents = splitEvents;
3568 _mejs2.default.Utils.createEvent = createEvent;
3569 _mejs2.default.Utils.isNodeAfter = isNodeAfter;
3570 _mejs2.default.Utils.isString = isString;
3571
3572 },{"7":7}],19:[function(_dereq_,module,exports){
3573 'use strict';
3574
3575 Object.defineProperty(exports, "__esModule", {
3576 value: true
3577 });
3578 exports.typeChecks = undefined;
3579 exports.absolutizeUrl = absolutizeUrl;
3580 exports.formatType = formatType;
3581 exports.getMimeFromType = getMimeFromType;
3582 exports.getTypeFromFile = getTypeFromFile;
3583 exports.getExtension = getExtension;
3584 exports.normalizeExtension = normalizeExtension;
3585
3586 var _mejs = _dereq_(7);
3587
3588 var _mejs2 = _interopRequireDefault(_mejs);
3589
3590 var _general = _dereq_(18);
3591
3592 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3593
3594 var typeChecks = exports.typeChecks = [];
3595
3596 function absolutizeUrl(url) {
3597
3598 if (typeof url !== 'string') {
3599 throw new Error('`url` argument must be a string');
3600 }
3601
3602 var el = document.createElement('div');
3603 el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
3604 return el.firstChild.href;
3605 }
3606
3607 function formatType(url) {
3608 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
3609
3610 return url && !type ? getTypeFromFile(url) : type;
3611 }
3612
3613 function getMimeFromType(type) {
3614
3615 if (typeof type !== 'string') {
3616 throw new Error('`type` argument must be a string');
3617 }
3618
3619 return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
3620 }
3621
3622 function getTypeFromFile(url) {
3623
3624 if (typeof url !== 'string') {
3625 throw new Error('`url` argument must be a string');
3626 }
3627
3628 for (var i = 0, total = typeChecks.length; i < total; i++) {
3629 var type = typeChecks[i](url);
3630
3631 if (type) {
3632 return type;
3633 }
3634 }
3635
3636 var ext = getExtension(url),
3637 normalizedExt = normalizeExtension(ext);
3638
3639 var mime = 'video/mp4';
3640
3641 if (normalizedExt) {
3642 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
3643 mime = 'video/' + normalizedExt;
3644 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
3645 mime = 'audio/' + normalizedExt;
3646 }
3647 }
3648
3649 return mime;
3650 }
3651
3652 function getExtension(url) {
3653
3654 if (typeof url !== 'string') {
3655 throw new Error('`url` argument must be a string');
3656 }
3657
3658 var baseUrl = url.split('?')[0],
3659 baseName = baseUrl.split('\\').pop().split('/').pop();
3660 return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
3661 }
3662
3663 function normalizeExtension(extension) {
3664
3665 if (typeof extension !== 'string') {
3666 throw new Error('`extension` argument must be a string');
3667 }
3668
3669 switch (extension) {
3670 case 'mp4':
3671 case 'm4v':
3672 return 'mp4';
3673 case 'webm':
3674 case 'webma':
3675 case 'webmv':
3676 return 'webm';
3677 case 'ogg':
3678 case 'oga':
3679 case 'ogv':
3680 return 'ogg';
3681 default:
3682 return extension;
3683 }
3684 }
3685
3686 _mejs2.default.Utils = _mejs2.default.Utils || {};
3687 _mejs2.default.Utils.typeChecks = typeChecks;
3688 _mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
3689 _mejs2.default.Utils.formatType = formatType;
3690 _mejs2.default.Utils.getMimeFromType = getMimeFromType;
3691 _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
3692 _mejs2.default.Utils.getExtension = getExtension;
3693 _mejs2.default.Utils.normalizeExtension = normalizeExtension;
3694
3695 },{"18":18,"7":7}],20:[function(_dereq_,module,exports){
3696 'use strict';
3697
3698 var _document = _dereq_(2);
3699
3700 var _document2 = _interopRequireDefault(_document);
3701
3702 var _promisePolyfill = _dereq_(4);
3703
3704 var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
3705
3706 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3707
3708 (function (arr) {
3709 arr.forEach(function (item) {
3710 if (item.hasOwnProperty('remove')) {
3711 return;
3712 }
3713 Object.defineProperty(item, 'remove', {
3714 configurable: true,
3715 enumerable: true,
3716 writable: true,
3717 value: function remove() {
3718 this.parentNode.removeChild(this);
3719 }
3720 });
3721 });
3722 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
3723
3724 (function () {
3725
3726 if (typeof window.CustomEvent === 'function') {
3727 return false;
3728 }
3729
3730 function CustomEvent(event, params) {
3731 params = params || { bubbles: false, cancelable: false, detail: undefined };
3732 var evt = _document2.default.createEvent('CustomEvent');
3733 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
3734 return evt;
3735 }
3736
3737 CustomEvent.prototype = window.Event.prototype;
3738 window.CustomEvent = CustomEvent;
3739 })();
3740
3741 if (typeof Object.assign !== 'function') {
3742 Object.assign = function (target) {
3743
3744 if (target === null || target === undefined) {
3745 throw new TypeError('Cannot convert undefined or null to object');
3746 }
3747
3748 var to = Object(target);
3749
3750 for (var index = 1, total = arguments.length; index < total; index++) {
3751 var nextSource = arguments[index];
3752
3753 if (nextSource !== null) {
3754 for (var nextKey in nextSource) {
3755 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
3756 to[nextKey] = nextSource[nextKey];
3757 }
3758 }
3759 }
3760 }
3761 return to;
3762 };
3763 }
3764
3765 if (!String.prototype.startsWith) {
3766 String.prototype.startsWith = function (searchString, position) {
3767 position = position || 0;
3768 return this.substr(position, searchString.length) === searchString;
3769 };
3770 }
3771
3772 if (!Element.prototype.matches) {
3773 Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
3774 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
3775 i = matches.length - 1;
3776 while (--i >= 0 && matches.item(i) !== this) {}
3777 return i > -1;
3778 };
3779 }
3780
3781 if (window.Element && !Element.prototype.closest) {
3782 Element.prototype.closest = function (s) {
3783 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
3784 i = void 0,
3785 el = this;
3786 do {
3787 i = matches.length;
3788 while (--i >= 0 && matches.item(i) !== el) {}
3789 } while (i < 0 && (el = el.parentElement));
3790 return el;
3791 };
3792 }
3793
3794 (function () {
3795 var lastTime = 0;
3796 var vendors = ['ms', 'moz', 'webkit', 'o'];
3797 for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
3798 window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
3799 window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
3800 }
3801
3802 if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
3803 var currTime = new Date().getTime();
3804 var timeToCall = Math.max(0, 16 - (currTime - lastTime));
3805 var id = window.setTimeout(function () {
3806 callback(currTime + timeToCall);
3807 }, timeToCall);
3808 lastTime = currTime + timeToCall;
3809 return id;
3810 };
3811
3812 if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
3813 clearTimeout(id);
3814 };
3815 })();
3816
3817 if (/firefox/i.test(navigator.userAgent)) {
3818 window.mediaElementJsOldGetComputedStyle = window.getComputedStyle;
3819 window.getComputedStyle = function (el, pseudoEl) {
3820 var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl);
3821 return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
3822 };
3823 }
3824
3825 if (!window.Promise) {
3826 window.Promise = _promisePolyfill2.default;
3827 }
3828
3829 (function (constructor) {
3830 if (constructor && constructor.prototype && constructor.prototype.children === null) {
3831 Object.defineProperty(constructor.prototype, 'children', {
3832 get: function get() {
3833 var i = 0,
3834 node = void 0,
3835 nodes = this.childNodes,
3836 children = [];
3837 while (node = nodes[i++]) {
3838 if (node.nodeType === 1) {
3839 children.push(node);
3840 }
3841 }
3842 return children;
3843 }
3844 });
3845 }
3846 })(window.Node || window.Element);
3847
3848 },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]);