[SPIP] ~spip v3.2.0-->v3.2.1
[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,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
319 throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
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 var response = t.mediaElement.renderer[methodName](args);
868 if (response && typeof response.then === 'function') {
869 response.catch(function () {
870 if (t.mediaElement.paused) {
871 setTimeout(function () {
872 var tmpResponse = t.mediaElement.renderer.play();
873 if (tmpResponse !== undefined) {
874 tmpResponse.catch(function () {
875 if (!t.mediaElement.renderer.paused) {
876 t.mediaElement.renderer.pause();
877 }
878 });
879 }
880 }, 150);
881 }
882 });
883 }
884 } else {
885 t.mediaElement.renderer[methodName](args);
886 }
887 } catch (e) {
888 t.mediaElement.generateError(e, mediaFiles);
889 }
890 },
891 assignMethods = function assignMethods(methodName) {
892 t.mediaElement[methodName] = function () {
893 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
894 args[_key] = arguments[_key];
895 }
896
897 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
898 if (t.mediaElement.promises.length) {
899 Promise.all(t.mediaElement.promises).then(function () {
900 triggerAction(methodName, args);
901 }).catch(function (e) {
902 t.mediaElement.generateError(e, mediaFiles);
903 });
904 } else {
905 triggerAction(methodName, args);
906 }
907 }
908 return null;
909 };
910 };
911
912 addProperty(t.mediaElement, 'src', getSrc, setSrc);
913 t.mediaElement.getSrc = getSrc;
914 t.mediaElement.setSrc = setSrc;
915
916 for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
917 assignGettersSetters(props[_i3]);
918 }
919
920 for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
921 assignMethods(methods[_i4]);
922 }
923
924 t.mediaElement.addEventListener = function (eventName, callback) {
925 t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
926
927 t.mediaElement.events[eventName].push(callback);
928 };
929 t.mediaElement.removeEventListener = function (eventName, callback) {
930 if (!eventName) {
931 t.mediaElement.events = {};
932 return true;
933 }
934
935 var callbacks = t.mediaElement.events[eventName];
936
937 if (!callbacks) {
938 return true;
939 }
940
941 if (!callback) {
942 t.mediaElement.events[eventName] = [];
943 return true;
944 }
945
946 for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
947 if (callbacks[_i5] === callback) {
948 t.mediaElement.events[eventName].splice(_i5, 1);
949 return true;
950 }
951 }
952 return false;
953 };
954
955 t.mediaElement.dispatchEvent = function (event) {
956 var callbacks = t.mediaElement.events[event.type];
957 if (callbacks) {
958 for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
959 callbacks[_i6].apply(null, [event]);
960 }
961 }
962 };
963
964 t.mediaElement.destroy = function () {
965 var mediaElement = t.mediaElement.originalNode.cloneNode(true);
966 var wrapper = t.mediaElement.parentElement;
967 mediaElement.removeAttribute('id');
968 mediaElement.remove();
969 t.mediaElement.remove();
970 wrapper.append(mediaElement);
971 };
972
973 if (mediaFiles.length) {
974 t.mediaElement.src = mediaFiles;
975 }
976
977 if (t.mediaElement.promises.length) {
978 Promise.all(t.mediaElement.promises).then(function () {
979 if (t.mediaElement.options.success) {
980 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
981 }
982 }).catch(function () {
983 if (error && t.mediaElement.options.error) {
984 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
985 }
986 });
987 } else {
988 if (t.mediaElement.options.success) {
989 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
990 }
991
992 if (error && t.mediaElement.options.error) {
993 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
994 }
995 }
996
997 return t.mediaElement;
998 };
999
1000 _window2.default.MediaElement = MediaElement;
1001 _mejs2.default.MediaElement = MediaElement;
1002
1003 exports.default = MediaElement;
1004
1005 },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
1006 'use strict';
1007
1008 Object.defineProperty(exports, "__esModule", {
1009 value: true
1010 });
1011
1012 var _window = _dereq_(3);
1013
1014 var _window2 = _interopRequireDefault(_window);
1015
1016 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1017
1018 var mejs = {};
1019
1020 mejs.version = '4.2.7';
1021
1022 mejs.html5media = {
1023 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'],
1024 readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1025
1026 methods: ['load', 'play', 'pause', 'canPlayType'],
1027
1028 events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1029
1030 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']
1031 };
1032
1033 _window2.default.mejs = mejs;
1034
1035 exports.default = mejs;
1036
1037 },{"3":3}],8:[function(_dereq_,module,exports){
1038 'use strict';
1039
1040 Object.defineProperty(exports, "__esModule", {
1041 value: true
1042 });
1043 exports.renderer = undefined;
1044
1045 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; };
1046
1047 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; }; }();
1048
1049 var _mejs = _dereq_(7);
1050
1051 var _mejs2 = _interopRequireDefault(_mejs);
1052
1053 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1054
1055 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1056
1057 var Renderer = function () {
1058 function Renderer() {
1059 _classCallCheck(this, Renderer);
1060
1061 this.renderers = {};
1062 this.order = [];
1063 }
1064
1065 _createClass(Renderer, [{
1066 key: 'add',
1067 value: function add(renderer) {
1068 if (renderer.name === undefined) {
1069 throw new TypeError('renderer must contain at least `name` property');
1070 }
1071
1072 this.renderers[renderer.name] = renderer;
1073 this.order.push(renderer.name);
1074 }
1075 }, {
1076 key: 'select',
1077 value: function select(mediaFiles) {
1078 var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1079
1080 var renderersLength = renderers.length;
1081
1082 renderers = renderers.length ? renderers : this.order;
1083
1084 if (!renderersLength) {
1085 var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1086 rendererRanking = function rendererRanking(renderer) {
1087 for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1088 if (rendererIndicator[i].test(renderer)) {
1089 return i;
1090 }
1091 }
1092 return rendererIndicator.length;
1093 };
1094
1095 renderers.sort(function (a, b) {
1096 return rendererRanking(a) - rendererRanking(b);
1097 });
1098 }
1099
1100 for (var i = 0, total = renderers.length; i < total; i++) {
1101 var key = renderers[i],
1102 _renderer = this.renderers[key];
1103
1104 if (_renderer !== null && _renderer !== undefined) {
1105 for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1106 if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1107 return {
1108 rendererName: _renderer.name,
1109 src: mediaFiles[j].src
1110 };
1111 }
1112 }
1113 }
1114 }
1115
1116 return null;
1117 }
1118 }, {
1119 key: 'order',
1120 set: function set(order) {
1121 if (!Array.isArray(order)) {
1122 throw new TypeError('order must be an array of strings.');
1123 }
1124
1125 this._order = order;
1126 },
1127 get: function get() {
1128 return this._order;
1129 }
1130 }, {
1131 key: 'renderers',
1132 set: function set(renderers) {
1133 if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1134 throw new TypeError('renderers must be an array of objects.');
1135 }
1136
1137 this._renderers = renderers;
1138 },
1139 get: function get() {
1140 return this._renderers;
1141 }
1142 }]);
1143
1144 return Renderer;
1145 }();
1146
1147 var renderer = exports.renderer = new Renderer();
1148
1149 _mejs2.default.Renderers = renderer;
1150
1151 },{"7":7}],9:[function(_dereq_,module,exports){
1152 'use strict';
1153
1154 Object.defineProperty(exports, "__esModule", {
1155 value: true
1156 });
1157 var EN = exports.EN = {
1158 'mejs.plural-form': 1,
1159
1160 'mejs.download-file': 'Download File',
1161
1162 '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/',
1163
1164 'mejs.fullscreen': 'Fullscreen',
1165
1166 'mejs.play': 'Play',
1167 'mejs.pause': 'Pause',
1168
1169 'mejs.time-slider': 'Time Slider',
1170 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
1171 'mejs.live-broadcast': 'Live Broadcast',
1172
1173 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
1174 'mejs.unmute': 'Unmute',
1175 'mejs.mute': 'Mute',
1176 'mejs.volume-slider': 'Volume Slider',
1177
1178 'mejs.video-player': 'Video Player',
1179 'mejs.audio-player': 'Audio Player',
1180
1181 'mejs.captions-subtitles': 'Captions/Subtitles',
1182 'mejs.captions-chapters': 'Chapters',
1183 'mejs.none': 'None',
1184 'mejs.afrikaans': 'Afrikaans',
1185 'mejs.albanian': 'Albanian',
1186 'mejs.arabic': 'Arabic',
1187 'mejs.belarusian': 'Belarusian',
1188 'mejs.bulgarian': 'Bulgarian',
1189 'mejs.catalan': 'Catalan',
1190 'mejs.chinese': 'Chinese',
1191 'mejs.chinese-simplified': 'Chinese (Simplified)',
1192 'mejs.chinese-traditional': 'Chinese (Traditional)',
1193 'mejs.croatian': 'Croatian',
1194 'mejs.czech': 'Czech',
1195 'mejs.danish': 'Danish',
1196 'mejs.dutch': 'Dutch',
1197 'mejs.english': 'English',
1198 'mejs.estonian': 'Estonian',
1199 'mejs.filipino': 'Filipino',
1200 'mejs.finnish': 'Finnish',
1201 'mejs.french': 'French',
1202 'mejs.galician': 'Galician',
1203 'mejs.german': 'German',
1204 'mejs.greek': 'Greek',
1205 'mejs.haitian-creole': 'Haitian Creole',
1206 'mejs.hebrew': 'Hebrew',
1207 'mejs.hindi': 'Hindi',
1208 'mejs.hungarian': 'Hungarian',
1209 'mejs.icelandic': 'Icelandic',
1210 'mejs.indonesian': 'Indonesian',
1211 'mejs.irish': 'Irish',
1212 'mejs.italian': 'Italian',
1213 'mejs.japanese': 'Japanese',
1214 'mejs.korean': 'Korean',
1215 'mejs.latvian': 'Latvian',
1216 'mejs.lithuanian': 'Lithuanian',
1217 'mejs.macedonian': 'Macedonian',
1218 'mejs.malay': 'Malay',
1219 'mejs.maltese': 'Maltese',
1220 'mejs.norwegian': 'Norwegian',
1221 'mejs.persian': 'Persian',
1222 'mejs.polish': 'Polish',
1223 'mejs.portuguese': 'Portuguese',
1224 'mejs.romanian': 'Romanian',
1225 'mejs.russian': 'Russian',
1226 'mejs.serbian': 'Serbian',
1227 'mejs.slovak': 'Slovak',
1228 'mejs.slovenian': 'Slovenian',
1229 'mejs.spanish': 'Spanish',
1230 'mejs.swahili': 'Swahili',
1231 'mejs.swedish': 'Swedish',
1232 'mejs.tagalog': 'Tagalog',
1233 'mejs.thai': 'Thai',
1234 'mejs.turkish': 'Turkish',
1235 'mejs.ukrainian': 'Ukrainian',
1236 'mejs.vietnamese': 'Vietnamese',
1237 'mejs.welsh': 'Welsh',
1238 'mejs.yiddish': 'Yiddish'
1239 };
1240
1241 },{}],10:[function(_dereq_,module,exports){
1242 'use strict';
1243
1244 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; };
1245
1246 var _window = _dereq_(3);
1247
1248 var _window2 = _interopRequireDefault(_window);
1249
1250 var _mejs = _dereq_(7);
1251
1252 var _mejs2 = _interopRequireDefault(_mejs);
1253
1254 var _renderer = _dereq_(8);
1255
1256 var _general = _dereq_(18);
1257
1258 var _media = _dereq_(19);
1259
1260 var _constants = _dereq_(16);
1261
1262 var _dom = _dereq_(17);
1263
1264 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1265
1266 var NativeDash = {
1267
1268 promise: null,
1269
1270 load: function load(settings) {
1271 if (typeof dashjs !== 'undefined') {
1272 NativeDash.promise = new Promise(function (resolve) {
1273 resolve();
1274 }).then(function () {
1275 NativeDash._createPlayer(settings);
1276 });
1277 } else {
1278 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
1279
1280 NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
1281 NativeDash.promise.then(function () {
1282 NativeDash._createPlayer(settings);
1283 });
1284 }
1285
1286 return NativeDash.promise;
1287 },
1288
1289 _createPlayer: function _createPlayer(settings) {
1290 var player = dashjs.MediaPlayer().create();
1291 _window2.default['__ready__' + settings.id](player);
1292 return player;
1293 }
1294 };
1295
1296 var DashNativeRenderer = {
1297 name: 'native_dash',
1298 options: {
1299 prefix: 'native_dash',
1300 dash: {
1301 path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
1302 debug: false,
1303 drm: {},
1304
1305 robustnessLevel: ''
1306 }
1307 },
1308
1309 canPlayType: function canPlayType(type) {
1310 return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
1311 },
1312
1313 create: function create(mediaElement, options, mediaFiles) {
1314
1315 var originalNode = mediaElement.originalNode,
1316 id = mediaElement.id + '_' + options.prefix,
1317 autoplay = originalNode.autoplay,
1318 children = originalNode.children;
1319
1320 var node = null,
1321 dashPlayer = null;
1322
1323 originalNode.removeAttribute('type');
1324 for (var i = 0, total = children.length; i < total; i++) {
1325 children[i].removeAttribute('type');
1326 }
1327
1328 node = originalNode.cloneNode(true);
1329 options = Object.assign(options, mediaElement.options);
1330
1331 var props = _mejs2.default.html5media.properties,
1332 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
1333 return e !== 'error';
1334 }),
1335 attachNativeEvents = function attachNativeEvents(e) {
1336 var event = (0, _general.createEvent)(e.type, mediaElement);
1337 mediaElement.dispatchEvent(event);
1338 },
1339 assignGettersSetters = function assignGettersSetters(propName) {
1340 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1341
1342 node['get' + capName] = function () {
1343 return dashPlayer !== null ? node[propName] : null;
1344 };
1345
1346 node['set' + capName] = function (value) {
1347 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
1348 if (propName === 'src') {
1349 var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
1350 node[propName] = source;
1351 if (dashPlayer !== null) {
1352 dashPlayer.reset();
1353 for (var _i = 0, _total = events.length; _i < _total; _i++) {
1354 node.removeEventListener(events[_i], attachNativeEvents);
1355 }
1356 dashPlayer = NativeDash._createPlayer({
1357 options: options.dash,
1358 id: id
1359 });
1360
1361 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
1362 dashPlayer.setProtectionData(value.drm);
1363 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1364 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1365 }
1366 }
1367 dashPlayer.attachSource(source);
1368 if (autoplay) {
1369 dashPlayer.play();
1370 }
1371 }
1372 } else {
1373 node[propName] = value;
1374 }
1375 }
1376 };
1377 };
1378
1379 for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
1380 assignGettersSetters(props[_i2]);
1381 }
1382
1383 _window2.default['__ready__' + id] = function (_dashPlayer) {
1384 mediaElement.dashPlayer = dashPlayer = _dashPlayer;
1385
1386 var dashEvents = dashjs.MediaPlayer.events,
1387 assignEvents = function assignEvents(eventName) {
1388 if (eventName === 'loadedmetadata') {
1389 dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
1390 dashPlayer.initialize();
1391 dashPlayer.setScheduleWhilePaused(false);
1392 dashPlayer.setFastSwitchEnabled(true);
1393 dashPlayer.attachView(node);
1394 dashPlayer.setAutoPlay(false);
1395
1396 if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
1397 dashPlayer.setProtectionData(options.dash.drm);
1398 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1399 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1400 }
1401 }
1402 dashPlayer.attachSource(node.getSrc());
1403 }
1404
1405 node.addEventListener(eventName, attachNativeEvents);
1406 };
1407
1408 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
1409 assignEvents(events[_i3]);
1410 }
1411
1412 var assignMdashEvents = function assignMdashEvents(e) {
1413 if (e.type.toLowerCase() === 'error') {
1414 mediaElement.generateError(e.message, node.src);
1415 console.error(e);
1416 } else {
1417 var _event = (0, _general.createEvent)(e.type, mediaElement);
1418 _event.data = e;
1419 mediaElement.dispatchEvent(_event);
1420 }
1421 };
1422
1423 for (var eventType in dashEvents) {
1424 if (dashEvents.hasOwnProperty(eventType)) {
1425 dashPlayer.on(dashEvents[eventType], function (e) {
1426 return assignMdashEvents(e);
1427 });
1428 }
1429 }
1430 };
1431
1432 if (mediaFiles && mediaFiles.length > 0) {
1433 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1434 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1435 node.setAttribute('src', mediaFiles[_i4].src);
1436 if (typeof mediaFiles[_i4].drm !== 'undefined') {
1437 options.dash.drm = mediaFiles[_i4].drm;
1438 }
1439 break;
1440 }
1441 }
1442 }
1443
1444 node.setAttribute('id', id);
1445
1446 originalNode.parentNode.insertBefore(node, originalNode);
1447 originalNode.autoplay = false;
1448 originalNode.style.display = 'none';
1449
1450 node.setSize = function (width, height) {
1451 node.style.width = width + 'px';
1452 node.style.height = height + 'px';
1453 return node;
1454 };
1455
1456 node.hide = function () {
1457 node.pause();
1458 node.style.display = 'none';
1459 return node;
1460 };
1461
1462 node.show = function () {
1463 node.style.display = '';
1464 return node;
1465 };
1466
1467 node.destroy = function () {
1468 if (dashPlayer !== null) {
1469 dashPlayer.reset();
1470 }
1471 };
1472
1473 var event = (0, _general.createEvent)('rendererready', node);
1474 mediaElement.dispatchEvent(event);
1475
1476 mediaElement.promises.push(NativeDash.load({
1477 options: options.dash,
1478 id: id
1479 }));
1480
1481 return node;
1482 }
1483 };
1484
1485 _media.typeChecks.push(function (url) {
1486 return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
1487 });
1488
1489 _renderer.renderer.add(DashNativeRenderer);
1490
1491 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_,module,exports){
1492 'use strict';
1493
1494 Object.defineProperty(exports, "__esModule", {
1495 value: true
1496 });
1497 exports.PluginDetector = undefined;
1498
1499 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; };
1500
1501 var _window = _dereq_(3);
1502
1503 var _window2 = _interopRequireDefault(_window);
1504
1505 var _document = _dereq_(2);
1506
1507 var _document2 = _interopRequireDefault(_document);
1508
1509 var _mejs = _dereq_(7);
1510
1511 var _mejs2 = _interopRequireDefault(_mejs);
1512
1513 var _i18n = _dereq_(5);
1514
1515 var _i18n2 = _interopRequireDefault(_i18n);
1516
1517 var _renderer = _dereq_(8);
1518
1519 var _general = _dereq_(18);
1520
1521 var _constants = _dereq_(16);
1522
1523 var _media = _dereq_(19);
1524
1525 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1526
1527 var PluginDetector = exports.PluginDetector = {
1528 plugins: [],
1529
1530 hasPluginVersion: function hasPluginVersion(plugin, v) {
1531 var pv = PluginDetector.plugins[plugin];
1532 v[1] = v[1] || 0;
1533 v[2] = v[2] || 0;
1534 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];
1535 },
1536
1537 addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
1538 PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
1539 },
1540
1541 detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
1542
1543 var version = [0, 0, 0],
1544 description = void 0,
1545 ax = void 0;
1546
1547 if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
1548 description = _constants.NAV.plugins[pluginName].description;
1549 if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
1550 version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
1551 for (var i = 0, total = version.length; i < total; i++) {
1552 version[i] = parseInt(version[i].match(/\d+/), 10);
1553 }
1554 }
1555 } else if (_window2.default.ActiveXObject !== undefined) {
1556 try {
1557 ax = new ActiveXObject(activeX);
1558 if (ax) {
1559 version = axDetect(ax);
1560 }
1561 } catch (e) {
1562
1563 }
1564 }
1565 return version;
1566 }
1567 };
1568
1569 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
1570 var version = [],
1571 d = ax.GetVariable("$version");
1572
1573 if (d) {
1574 d = d.split(" ")[1].split(",");
1575 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
1576 }
1577 return version;
1578 });
1579
1580 var FlashMediaElementRenderer = {
1581 create: function create(mediaElement, options, mediaFiles) {
1582
1583 var flash = {};
1584 var isActive = false;
1585
1586 flash.options = options;
1587 flash.id = mediaElement.id + '_' + flash.options.prefix;
1588 flash.mediaElement = mediaElement;
1589 flash.flashState = {};
1590 flash.flashApi = null;
1591 flash.flashApiStack = [];
1592
1593 var props = _mejs2.default.html5media.properties,
1594 assignGettersSetters = function assignGettersSetters(propName) {
1595 flash.flashState[propName] = null;
1596
1597 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1598
1599 flash['get' + capName] = function () {
1600 if (flash.flashApi !== null) {
1601 if (typeof flash.flashApi['get_' + propName] === 'function') {
1602 var value = flash.flashApi['get_' + propName]();
1603
1604 if (propName === 'buffered') {
1605 return {
1606 start: function start() {
1607 return 0;
1608 },
1609 end: function end() {
1610 return value;
1611 },
1612 length: 1
1613 };
1614 }
1615 return value;
1616 } else {
1617 return null;
1618 }
1619 } else {
1620 return null;
1621 }
1622 };
1623
1624 flash['set' + capName] = function (value) {
1625 if (propName === 'src') {
1626 value = (0, _media.absolutizeUrl)(value);
1627 }
1628
1629 if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
1630 try {
1631 flash.flashApi['set_' + propName](value);
1632 } catch (e) {
1633
1634 }
1635 } else {
1636 flash.flashApiStack.push({
1637 type: 'set',
1638 propName: propName,
1639 value: value
1640 });
1641 }
1642 };
1643 };
1644
1645 for (var i = 0, total = props.length; i < total; i++) {
1646 assignGettersSetters(props[i]);
1647 }
1648
1649 var methods = _mejs2.default.html5media.methods,
1650 assignMethods = function assignMethods(methodName) {
1651 flash[methodName] = function () {
1652 if (isActive) {
1653 if (flash.flashApi !== null) {
1654 if (flash.flashApi['fire_' + methodName]) {
1655 try {
1656 flash.flashApi['fire_' + methodName]();
1657 } catch (e) {
1658
1659 }
1660 } else {
1661
1662 }
1663 } else {
1664 flash.flashApiStack.push({
1665 type: 'call',
1666 methodName: methodName
1667 });
1668 }
1669 }
1670 };
1671 };
1672 methods.push('stop');
1673 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
1674 assignMethods(methods[_i]);
1675 }
1676
1677 var initEvents = ['rendererready'];
1678
1679 for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
1680 var event = (0, _general.createEvent)(initEvents[_i2], flash);
1681 mediaElement.dispatchEvent(event);
1682 }
1683
1684 _window2.default['__ready__' + flash.id] = function () {
1685
1686 flash.flashReady = true;
1687 flash.flashApi = _document2.default.getElementById('__' + flash.id);
1688
1689 if (flash.flashApiStack.length) {
1690 for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
1691 var stackItem = flash.flashApiStack[_i3];
1692
1693 if (stackItem.type === 'set') {
1694 var propName = stackItem.propName,
1695 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1696
1697 flash['set' + capName](stackItem.value);
1698 } else if (stackItem.type === 'call') {
1699 flash[stackItem.methodName]();
1700 }
1701 }
1702 }
1703 };
1704
1705 _window2.default['__event__' + flash.id] = function (eventName, message) {
1706 var event = (0, _general.createEvent)(eventName, flash);
1707 if (message) {
1708 try {
1709 event.data = JSON.parse(message);
1710 event.details.data = JSON.parse(message);
1711 } catch (e) {
1712 event.message = message;
1713 }
1714 }
1715
1716 flash.mediaElement.dispatchEvent(event);
1717 };
1718
1719 flash.flashWrapper = _document2.default.createElement('div');
1720
1721 if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
1722 flash.options.shimScriptAccess = 'sameDomain';
1723 }
1724
1725 var autoplay = mediaElement.originalNode.autoplay,
1726 flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
1727 isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
1728 flashHeight = isVideo ? mediaElement.originalNode.height : 1,
1729 flashWidth = isVideo ? mediaElement.originalNode.width : 1;
1730
1731 if (mediaElement.originalNode.getAttribute('src')) {
1732 flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
1733 }
1734
1735 if (flash.options.enablePseudoStreaming === true) {
1736 flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
1737 flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
1738 }
1739
1740 if (flash.options.streamDelimiter) {
1741 flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
1742 }
1743
1744 if (flash.options.proxyType) {
1745 flashVars.push('proxytype=' + flash.options.proxyType);
1746 }
1747
1748 mediaElement.appendChild(flash.flashWrapper);
1749 mediaElement.originalNode.style.display = 'none';
1750
1751 var settings = [];
1752
1753 if (_constants.IS_IE || _constants.IS_EDGE) {
1754 var specialIEContainer = _document2.default.createElement('div');
1755 flash.flashWrapper.appendChild(specialIEContainer);
1756
1757 if (_constants.IS_EDGE) {
1758 settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
1759 } else {
1760 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 + '"'];
1761 }
1762
1763 if (!isVideo) {
1764 settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
1765 }
1766
1767 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>';
1768 } else {
1769
1770 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('&') + '"'];
1771
1772 if (isVideo) {
1773 settings.push('width="' + flashWidth + '"');
1774 settings.push('height="' + flashHeight + '"');
1775 } else {
1776 settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
1777 }
1778
1779 flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
1780 }
1781
1782 flash.flashNode = flash.flashWrapper.lastChild;
1783
1784 flash.hide = function () {
1785 isActive = false;
1786 if (isVideo) {
1787 flash.flashNode.style.display = 'none';
1788 }
1789 };
1790 flash.show = function () {
1791 isActive = true;
1792 if (isVideo) {
1793 flash.flashNode.style.display = '';
1794 }
1795 };
1796 flash.setSize = function (width, height) {
1797 flash.flashNode.style.width = width + 'px';
1798 flash.flashNode.style.height = height + 'px';
1799
1800 if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
1801 flash.flashApi.fire_setSize(width, height);
1802 }
1803 };
1804
1805 flash.destroy = function () {
1806 flash.flashNode.remove();
1807 };
1808
1809 if (mediaFiles && mediaFiles.length > 0) {
1810 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1811 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1812 flash.setSrc(mediaFiles[_i4].src);
1813 break;
1814 }
1815 }
1816 }
1817
1818 return flash;
1819 }
1820 };
1821
1822 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
1823
1824 if (hasFlash) {
1825 _media.typeChecks.push(function (url) {
1826 url = url.toLowerCase();
1827
1828 if (url.startsWith('rtmp')) {
1829 if (~url.indexOf('.mp3')) {
1830 return 'audio/rtmp';
1831 } else {
1832 return 'video/rtmp';
1833 }
1834 } else if (/\.og(a|g)/i.test(url)) {
1835 return 'audio/ogg';
1836 } else if (~url.indexOf('.m3u8')) {
1837 return 'application/x-mpegURL';
1838 } else if (~url.indexOf('.mpd')) {
1839 return 'application/dash+xml';
1840 } else if (~url.indexOf('.flv')) {
1841 return 'video/flv';
1842 } else {
1843 return null;
1844 }
1845 });
1846
1847 var FlashMediaElementVideoRenderer = {
1848 name: 'flash_video',
1849 options: {
1850 prefix: 'flash_video',
1851 filename: 'mediaelement-flash-video.swf',
1852 enablePseudoStreaming: false,
1853
1854 pseudoStreamingStartQueryParam: 'start',
1855
1856 pseudoStreamingType: 'byte',
1857
1858 proxyType: '',
1859
1860 streamDelimiter: ''
1861 },
1862
1863 canPlayType: function canPlayType(type) {
1864 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
1865 },
1866
1867 create: FlashMediaElementRenderer.create
1868
1869 };
1870 _renderer.renderer.add(FlashMediaElementVideoRenderer);
1871
1872 var FlashMediaElementHlsVideoRenderer = {
1873 name: 'flash_hls',
1874 options: {
1875 prefix: 'flash_hls',
1876 filename: 'mediaelement-flash-video-hls.swf'
1877 },
1878
1879 canPlayType: function canPlayType(type) {
1880 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
1881 },
1882
1883 create: FlashMediaElementRenderer.create
1884 };
1885 _renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
1886
1887 var FlashMediaElementMdashVideoRenderer = {
1888 name: 'flash_dash',
1889 options: {
1890 prefix: 'flash_dash',
1891 filename: 'mediaelement-flash-video-mdash.swf'
1892 },
1893
1894 canPlayType: function canPlayType(type) {
1895 return ~['application/dash+xml'].indexOf(type.toLowerCase());
1896 },
1897
1898 create: FlashMediaElementRenderer.create
1899 };
1900 _renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
1901
1902 var FlashMediaElementAudioRenderer = {
1903 name: 'flash_audio',
1904 options: {
1905 prefix: 'flash_audio',
1906 filename: 'mediaelement-flash-audio.swf'
1907 },
1908
1909 canPlayType: function canPlayType(type) {
1910 return ~['audio/mp3'].indexOf(type.toLowerCase());
1911 },
1912
1913 create: FlashMediaElementRenderer.create
1914 };
1915 _renderer.renderer.add(FlashMediaElementAudioRenderer);
1916
1917 var FlashMediaElementAudioOggRenderer = {
1918 name: 'flash_audio_ogg',
1919 options: {
1920 prefix: 'flash_audio_ogg',
1921 filename: 'mediaelement-flash-audio-ogg.swf'
1922 },
1923
1924 canPlayType: function canPlayType(type) {
1925 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
1926 },
1927
1928 create: FlashMediaElementRenderer.create
1929 };
1930 _renderer.renderer.add(FlashMediaElementAudioOggRenderer);
1931 }
1932
1933 },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_,module,exports){
1934 'use strict';
1935
1936 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; };
1937
1938 var _window = _dereq_(3);
1939
1940 var _window2 = _interopRequireDefault(_window);
1941
1942 var _mejs = _dereq_(7);
1943
1944 var _mejs2 = _interopRequireDefault(_mejs);
1945
1946 var _renderer = _dereq_(8);
1947
1948 var _general = _dereq_(18);
1949
1950 var _constants = _dereq_(16);
1951
1952 var _media = _dereq_(19);
1953
1954 var _dom = _dereq_(17);
1955
1956 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1957
1958 var NativeFlv = {
1959
1960 promise: null,
1961
1962 load: function load(settings) {
1963 if (typeof flvjs !== 'undefined') {
1964 NativeFlv.promise = new Promise(function (resolve) {
1965 resolve();
1966 }).then(function () {
1967 NativeFlv._createPlayer(settings);
1968 });
1969 } else {
1970 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
1971
1972 NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
1973 NativeFlv.promise.then(function () {
1974 NativeFlv._createPlayer(settings);
1975 });
1976 }
1977
1978 return NativeFlv.promise;
1979 },
1980
1981 _createPlayer: function _createPlayer(settings) {
1982 flvjs.LoggingControl.enableDebug = settings.options.debug;
1983 flvjs.LoggingControl.enableVerbose = settings.options.debug;
1984 var player = flvjs.createPlayer(settings.options, settings.configs);
1985 _window2.default['__ready__' + settings.id](player);
1986 return player;
1987 }
1988 };
1989
1990 var FlvNativeRenderer = {
1991 name: 'native_flv',
1992 options: {
1993 prefix: 'native_flv',
1994 flv: {
1995 path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
1996
1997 cors: true,
1998 debug: false
1999 }
2000 },
2001
2002 canPlayType: function canPlayType(type) {
2003 return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
2004 },
2005
2006 create: function create(mediaElement, options, mediaFiles) {
2007
2008 var originalNode = mediaElement.originalNode,
2009 id = mediaElement.id + '_' + options.prefix;
2010
2011 var node = null,
2012 flvPlayer = null;
2013
2014 node = originalNode.cloneNode(true);
2015 options = Object.assign(options, mediaElement.options);
2016
2017 var props = _mejs2.default.html5media.properties,
2018 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2019 return e !== 'error';
2020 }),
2021 attachNativeEvents = function attachNativeEvents(e) {
2022 var event = (0, _general.createEvent)(e.type, mediaElement);
2023 mediaElement.dispatchEvent(event);
2024 },
2025 assignGettersSetters = function assignGettersSetters(propName) {
2026 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2027
2028 node['get' + capName] = function () {
2029 return flvPlayer !== null ? node[propName] : null;
2030 };
2031
2032 node['set' + capName] = function (value) {
2033 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2034 if (propName === 'src') {
2035 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
2036 if (flvPlayer !== null) {
2037 var _flvOptions = {};
2038 _flvOptions.type = 'flv';
2039 _flvOptions.url = value;
2040 _flvOptions.cors = options.flv.cors;
2041 _flvOptions.debug = options.flv.debug;
2042 _flvOptions.path = options.flv.path;
2043 var _flvConfigs = options.flv.configs;
2044
2045 flvPlayer.destroy();
2046 for (var i = 0, total = events.length; i < total; i++) {
2047 node.removeEventListener(events[i], attachNativeEvents);
2048 }
2049 flvPlayer = NativeFlv._createPlayer({
2050 options: _flvOptions,
2051 configs: _flvConfigs,
2052 id: id
2053 });
2054 flvPlayer.attachMediaElement(node);
2055 flvPlayer.load();
2056 }
2057 } else {
2058 node[propName] = value;
2059 }
2060 }
2061 };
2062 };
2063
2064 for (var i = 0, total = props.length; i < total; i++) {
2065 assignGettersSetters(props[i]);
2066 }
2067
2068 _window2.default['__ready__' + id] = function (_flvPlayer) {
2069 mediaElement.flvPlayer = flvPlayer = _flvPlayer;
2070
2071 var flvEvents = flvjs.Events,
2072 assignEvents = function assignEvents(eventName) {
2073 if (eventName === 'loadedmetadata') {
2074 flvPlayer.unload();
2075 flvPlayer.detachMediaElement();
2076 flvPlayer.attachMediaElement(node);
2077 flvPlayer.load();
2078 }
2079
2080 node.addEventListener(eventName, attachNativeEvents);
2081 };
2082
2083 for (var _i = 0, _total = events.length; _i < _total; _i++) {
2084 assignEvents(events[_i]);
2085 }
2086
2087 var assignFlvEvents = function assignFlvEvents(name, data) {
2088 if (name === 'error') {
2089 var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
2090 mediaElement.generateError(message, node.src);
2091 } else {
2092 var _event = (0, _general.createEvent)(name, mediaElement);
2093 _event.data = data;
2094 mediaElement.dispatchEvent(_event);
2095 }
2096 };
2097
2098 var _loop = function _loop(eventType) {
2099 if (flvEvents.hasOwnProperty(eventType)) {
2100 flvPlayer.on(flvEvents[eventType], function () {
2101 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2102 args[_key] = arguments[_key];
2103 }
2104
2105 return assignFlvEvents(flvEvents[eventType], args);
2106 });
2107 }
2108 };
2109
2110 for (var eventType in flvEvents) {
2111 _loop(eventType);
2112 }
2113 };
2114
2115 if (mediaFiles && mediaFiles.length > 0) {
2116 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
2117 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
2118 node.setAttribute('src', mediaFiles[_i2].src);
2119 break;
2120 }
2121 }
2122 }
2123
2124 node.setAttribute('id', id);
2125
2126 originalNode.parentNode.insertBefore(node, originalNode);
2127 originalNode.autoplay = false;
2128 originalNode.style.display = 'none';
2129
2130 var flvOptions = {};
2131 flvOptions.type = 'flv';
2132 flvOptions.url = node.src;
2133 flvOptions.cors = options.flv.cors;
2134 flvOptions.debug = options.flv.debug;
2135 flvOptions.path = options.flv.path;
2136 var flvConfigs = options.flv.configs;
2137
2138 node.setSize = function (width, height) {
2139 node.style.width = width + 'px';
2140 node.style.height = height + 'px';
2141 return node;
2142 };
2143
2144 node.hide = function () {
2145 if (flvPlayer !== null) {
2146 flvPlayer.pause();
2147 }
2148 node.style.display = 'none';
2149 return node;
2150 };
2151
2152 node.show = function () {
2153 node.style.display = '';
2154 return node;
2155 };
2156
2157 node.destroy = function () {
2158 if (flvPlayer !== null) {
2159 flvPlayer.destroy();
2160 }
2161 };
2162
2163 var event = (0, _general.createEvent)('rendererready', node);
2164 mediaElement.dispatchEvent(event);
2165
2166 mediaElement.promises.push(NativeFlv.load({
2167 options: flvOptions,
2168 configs: flvConfigs,
2169 id: id
2170 }));
2171
2172 return node;
2173 }
2174 };
2175
2176 _media.typeChecks.push(function (url) {
2177 return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
2178 });
2179
2180 _renderer.renderer.add(FlvNativeRenderer);
2181
2182 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){
2183 'use strict';
2184
2185 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; };
2186
2187 var _window = _dereq_(3);
2188
2189 var _window2 = _interopRequireDefault(_window);
2190
2191 var _mejs = _dereq_(7);
2192
2193 var _mejs2 = _interopRequireDefault(_mejs);
2194
2195 var _renderer = _dereq_(8);
2196
2197 var _general = _dereq_(18);
2198
2199 var _constants = _dereq_(16);
2200
2201 var _media = _dereq_(19);
2202
2203 var _dom = _dereq_(17);
2204
2205 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2206
2207 var NativeHls = {
2208
2209 promise: null,
2210
2211 load: function load(settings) {
2212 if (typeof Hls !== 'undefined') {
2213 NativeHls.promise = new Promise(function (resolve) {
2214 resolve();
2215 }).then(function () {
2216 NativeHls._createPlayer(settings);
2217 });
2218 } else {
2219 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
2220
2221 NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
2222 NativeHls.promise.then(function () {
2223 NativeHls._createPlayer(settings);
2224 });
2225 }
2226
2227 return NativeHls.promise;
2228 },
2229
2230 _createPlayer: function _createPlayer(settings) {
2231 var player = new Hls(settings.options);
2232 _window2.default['__ready__' + settings.id](player);
2233 return player;
2234 }
2235 };
2236
2237 var HlsNativeRenderer = {
2238 name: 'native_hls',
2239 options: {
2240 prefix: 'native_hls',
2241 hls: {
2242 path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
2243
2244 autoStartLoad: false,
2245 debug: false
2246 }
2247 },
2248
2249 canPlayType: function canPlayType(type) {
2250 return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
2251 },
2252
2253 create: function create(mediaElement, options, mediaFiles) {
2254
2255 var originalNode = mediaElement.originalNode,
2256 id = mediaElement.id + '_' + options.prefix,
2257 preload = originalNode.getAttribute('preload'),
2258 autoplay = originalNode.autoplay;
2259
2260 var hlsPlayer = null,
2261 node = null,
2262 index = 0,
2263 total = mediaFiles.length;
2264
2265 node = originalNode.cloneNode(true);
2266 options = Object.assign(options, mediaElement.options);
2267 options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
2268
2269 var props = _mejs2.default.html5media.properties,
2270 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2271 return e !== 'error';
2272 }),
2273 attachNativeEvents = function attachNativeEvents(e) {
2274 var event = (0, _general.createEvent)(e.type, mediaElement);
2275 mediaElement.dispatchEvent(event);
2276 },
2277 assignGettersSetters = function assignGettersSetters(propName) {
2278 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2279
2280 node['get' + capName] = function () {
2281 return hlsPlayer !== null ? node[propName] : null;
2282 };
2283
2284 node['set' + capName] = function (value) {
2285 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2286 if (propName === 'src') {
2287 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
2288 if (hlsPlayer !== null) {
2289 hlsPlayer.destroy();
2290 for (var i = 0, _total = events.length; i < _total; i++) {
2291 node.removeEventListener(events[i], attachNativeEvents);
2292 }
2293 hlsPlayer = NativeHls._createPlayer({
2294 options: options.hls,
2295 id: id
2296 });
2297 hlsPlayer.loadSource(value);
2298 hlsPlayer.attachMedia(node);
2299 }
2300 } else {
2301 node[propName] = value;
2302 }
2303 }
2304 };
2305 };
2306
2307 for (var i = 0, _total2 = props.length; i < _total2; i++) {
2308 assignGettersSetters(props[i]);
2309 }
2310
2311 _window2.default['__ready__' + id] = function (_hlsPlayer) {
2312 mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
2313 var hlsEvents = Hls.Events,
2314 assignEvents = function assignEvents(eventName) {
2315 if (eventName === 'loadedmetadata') {
2316 var url = mediaElement.originalNode.src;
2317 hlsPlayer.detachMedia();
2318 hlsPlayer.loadSource(url);
2319 hlsPlayer.attachMedia(node);
2320 }
2321
2322 node.addEventListener(eventName, attachNativeEvents);
2323 };
2324
2325 for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
2326 assignEvents(events[_i]);
2327 }
2328
2329 var recoverDecodingErrorDate = void 0,
2330 recoverSwapAudioCodecDate = void 0;
2331 var assignHlsEvents = function assignHlsEvents(name, data) {
2332 if (name === 'hlsError') {
2333 console.warn(data);
2334 data = data[1];
2335
2336 if (data.fatal) {
2337 switch (data.type) {
2338 case 'mediaError':
2339 var now = new Date().getTime();
2340 if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
2341 recoverDecodingErrorDate = new Date().getTime();
2342 hlsPlayer.recoverMediaError();
2343 } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
2344 recoverSwapAudioCodecDate = new Date().getTime();
2345 console.warn('Attempting to swap Audio Codec and recover from media error');
2346 hlsPlayer.swapAudioCodec();
2347 hlsPlayer.recoverMediaError();
2348 } else {
2349 var message = 'Cannot recover, last media error recovery failed';
2350 mediaElement.generateError(message, node.src);
2351 console.error(message);
2352 }
2353 break;
2354 case 'networkError':
2355 if (data.details === 'manifestLoadError') {
2356 if (index < total && mediaFiles[index + 1] !== undefined) {
2357 node.setSrc(mediaFiles[index++].src);
2358 node.load();
2359 node.play();
2360 } else {
2361 var _message = 'Network error';
2362 mediaElement.generateError(_message, mediaFiles);
2363 console.error(_message);
2364 }
2365 } else {
2366 var _message2 = 'Network error';
2367 mediaElement.generateError(_message2, mediaFiles);
2368 console.error(_message2);
2369 }
2370 break;
2371 default:
2372 hlsPlayer.destroy();
2373 break;
2374 }
2375 }
2376 } else {
2377 var _event = (0, _general.createEvent)(name, mediaElement);
2378 _event.data = data;
2379 mediaElement.dispatchEvent(_event);
2380 }
2381 };
2382
2383 var _loop = function _loop(eventType) {
2384 if (hlsEvents.hasOwnProperty(eventType)) {
2385 hlsPlayer.on(hlsEvents[eventType], function () {
2386 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2387 args[_key] = arguments[_key];
2388 }
2389
2390 return assignHlsEvents(hlsEvents[eventType], args);
2391 });
2392 }
2393 };
2394
2395 for (var eventType in hlsEvents) {
2396 _loop(eventType);
2397 }
2398 };
2399
2400 if (total > 0) {
2401 for (; index < total; index++) {
2402 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
2403 node.setAttribute('src', mediaFiles[index].src);
2404 break;
2405 }
2406 }
2407 }
2408
2409 if (preload !== 'auto' && !autoplay) {
2410 node.addEventListener('play', function () {
2411 if (hlsPlayer !== null) {
2412 hlsPlayer.startLoad();
2413 }
2414 });
2415
2416 node.addEventListener('pause', function () {
2417 if (hlsPlayer !== null) {
2418 hlsPlayer.stopLoad();
2419 }
2420 });
2421 }
2422
2423 node.setAttribute('id', id);
2424
2425 originalNode.parentNode.insertBefore(node, originalNode);
2426 originalNode.autoplay = false;
2427 originalNode.style.display = 'none';
2428
2429 node.setSize = function (width, height) {
2430 node.style.width = width + 'px';
2431 node.style.height = height + 'px';
2432 return node;
2433 };
2434
2435 node.hide = function () {
2436 node.pause();
2437 node.style.display = 'none';
2438 return node;
2439 };
2440
2441 node.show = function () {
2442 node.style.display = '';
2443 return node;
2444 };
2445
2446 node.destroy = function () {
2447 if (hlsPlayer !== null) {
2448 hlsPlayer.stopLoad();
2449 hlsPlayer.destroy();
2450 }
2451 };
2452
2453 var event = (0, _general.createEvent)('rendererready', node);
2454 mediaElement.dispatchEvent(event);
2455
2456 mediaElement.promises.push(NativeHls.load({
2457 options: options.hls,
2458 id: id
2459 }));
2460
2461 return node;
2462 }
2463 };
2464
2465 _media.typeChecks.push(function (url) {
2466 return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
2467 });
2468
2469 _renderer.renderer.add(HlsNativeRenderer);
2470
2471 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){
2472 'use strict';
2473
2474 var _window = _dereq_(3);
2475
2476 var _window2 = _interopRequireDefault(_window);
2477
2478 var _document = _dereq_(2);
2479
2480 var _document2 = _interopRequireDefault(_document);
2481
2482 var _mejs = _dereq_(7);
2483
2484 var _mejs2 = _interopRequireDefault(_mejs);
2485
2486 var _renderer = _dereq_(8);
2487
2488 var _general = _dereq_(18);
2489
2490 var _constants = _dereq_(16);
2491
2492 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2493
2494 var HtmlMediaElement = {
2495 name: 'html5',
2496 options: {
2497 prefix: 'html5'
2498 },
2499
2500 canPlayType: function canPlayType(type) {
2501
2502 var mediaElement = _document2.default.createElement('video');
2503
2504 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) {
2505 return 'yes';
2506 } else if (mediaElement.canPlayType) {
2507 return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
2508 } else {
2509 return '';
2510 }
2511 },
2512
2513 create: function create(mediaElement, options, mediaFiles) {
2514
2515 var id = mediaElement.id + '_' + options.prefix;
2516 var isActive = false;
2517
2518 var node = null;
2519
2520 if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
2521 node = _document2.default.createElement('audio');
2522 mediaElement.appendChild(node);
2523 } else {
2524 node = mediaElement.originalNode;
2525 }
2526
2527 node.setAttribute('id', id);
2528
2529 var props = _mejs2.default.html5media.properties,
2530 assignGettersSetters = function assignGettersSetters(propName) {
2531 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2532
2533 node['get' + capName] = function () {
2534 return node[propName];
2535 };
2536
2537 node['set' + capName] = function (value) {
2538 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2539 node[propName] = value;
2540 }
2541 };
2542 };
2543
2544 for (var i = 0, _total = props.length; i < _total; i++) {
2545 assignGettersSetters(props[i]);
2546 }
2547
2548 var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2549 return e !== 'error';
2550 }),
2551 assignEvents = function assignEvents(eventName) {
2552 node.addEventListener(eventName, function (e) {
2553 if (isActive) {
2554 var _event = (0, _general.createEvent)(e.type, e.target);
2555 mediaElement.dispatchEvent(_event);
2556 }
2557 });
2558 };
2559
2560 for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
2561 assignEvents(events[_i]);
2562 }
2563
2564 node.setSize = function (width, height) {
2565 node.style.width = width + 'px';
2566 node.style.height = height + 'px';
2567 return node;
2568 };
2569
2570 node.hide = function () {
2571 isActive = false;
2572 node.style.display = 'none';
2573
2574 return node;
2575 };
2576
2577 node.show = function () {
2578 isActive = true;
2579 node.style.display = '';
2580
2581 return node;
2582 };
2583
2584 var index = 0,
2585 total = mediaFiles.length;
2586 if (total > 0) {
2587 for (; index < total; index++) {
2588 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
2589 node.setAttribute('src', mediaFiles[index].src);
2590 break;
2591 }
2592 }
2593 }
2594
2595 node.addEventListener('error', function (e) {
2596 if (e.target.error.code === 4 && isActive) {
2597 if (index < total && mediaFiles[index + 1] !== undefined) {
2598 node.src = mediaFiles[index++].src;
2599 node.load();
2600 node.play();
2601 } else {
2602 mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
2603 }
2604 }
2605 });
2606
2607 var event = (0, _general.createEvent)('rendererready', node);
2608 mediaElement.dispatchEvent(event);
2609
2610 return node;
2611 }
2612 };
2613
2614 _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
2615
2616 _renderer.renderer.add(HtmlMediaElement);
2617
2618 },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){
2619 'use strict';
2620
2621 var _window = _dereq_(3);
2622
2623 var _window2 = _interopRequireDefault(_window);
2624
2625 var _document = _dereq_(2);
2626
2627 var _document2 = _interopRequireDefault(_document);
2628
2629 var _mejs = _dereq_(7);
2630
2631 var _mejs2 = _interopRequireDefault(_mejs);
2632
2633 var _renderer = _dereq_(8);
2634
2635 var _general = _dereq_(18);
2636
2637 var _media = _dereq_(19);
2638
2639 var _dom = _dereq_(17);
2640
2641 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2642
2643 var YouTubeApi = {
2644 isIframeStarted: false,
2645
2646 isIframeLoaded: false,
2647
2648 iframeQueue: [],
2649
2650 enqueueIframe: function enqueueIframe(settings) {
2651 YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
2652
2653 if (YouTubeApi.isLoaded) {
2654 YouTubeApi.createIframe(settings);
2655 } else {
2656 YouTubeApi.loadIframeApi();
2657 YouTubeApi.iframeQueue.push(settings);
2658 }
2659 },
2660
2661 loadIframeApi: function loadIframeApi() {
2662 if (!YouTubeApi.isIframeStarted) {
2663 (0, _dom.loadScript)('https://www.youtube.com/player_api');
2664 YouTubeApi.isIframeStarted = true;
2665 }
2666 },
2667
2668 iFrameReady: function iFrameReady() {
2669
2670 YouTubeApi.isLoaded = true;
2671 YouTubeApi.isIframeLoaded = true;
2672
2673 while (YouTubeApi.iframeQueue.length > 0) {
2674 var settings = YouTubeApi.iframeQueue.pop();
2675 YouTubeApi.createIframe(settings);
2676 }
2677 },
2678
2679 createIframe: function createIframe(settings) {
2680 return new YT.Player(settings.containerId, settings);
2681 },
2682
2683 getYouTubeId: function getYouTubeId(url) {
2684
2685 var youTubeId = '';
2686
2687 if (url.indexOf('?') > 0) {
2688 youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
2689
2690 if (youTubeId === '') {
2691 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2692 }
2693 } else {
2694 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2695 }
2696
2697 var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
2698 youTubeId = id.split('?');
2699 return youTubeId[0];
2700 },
2701
2702 getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
2703
2704 if (url === undefined || url === null || !url.trim().length) {
2705 return null;
2706 }
2707
2708 var parts = url.split('?'),
2709 parameters = parts[1].split('&');
2710
2711 var youTubeId = '';
2712
2713 for (var i = 0, total = parameters.length; i < total; i++) {
2714 var paramParts = parameters[i].split('=');
2715 if (paramParts[0] === 'v') {
2716 youTubeId = paramParts[1];
2717 break;
2718 }
2719 }
2720
2721 return youTubeId;
2722 },
2723
2724 getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
2725
2726 if (url === undefined || url === null || !url.trim().length) {
2727 return null;
2728 }
2729
2730 var parts = url.split('?');
2731 url = parts[0];
2732 return url.substring(url.lastIndexOf('/') + 1);
2733 },
2734
2735 getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
2736 if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
2737 return url;
2738 }
2739
2740 var parts = url.split('/');
2741 parts[2] = parts[2].replace('.com', '-nocookie.com');
2742 return parts.join('/');
2743 }
2744 };
2745
2746 var YouTubeIframeRenderer = {
2747 name: 'youtube_iframe',
2748
2749 options: {
2750 prefix: 'youtube_iframe',
2751
2752 youtube: {
2753 autoplay: 0,
2754 controls: 0,
2755 disablekb: 1,
2756 end: 0,
2757 loop: 0,
2758 modestbranding: 0,
2759 playsinline: 0,
2760 rel: 0,
2761 showinfo: 0,
2762 start: 0,
2763 iv_load_policy: 3,
2764
2765 nocookie: false,
2766
2767 imageQuality: null
2768 }
2769 },
2770
2771 canPlayType: function canPlayType(type) {
2772 return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
2773 },
2774
2775 create: function create(mediaElement, options, mediaFiles) {
2776
2777 var youtube = {},
2778 apiStack = [],
2779 readyState = 4;
2780
2781 var youTubeApi = null,
2782 paused = true,
2783 ended = false,
2784 youTubeIframe = null,
2785 volume = 1;
2786
2787 youtube.options = options;
2788 youtube.id = mediaElement.id + '_' + options.prefix;
2789 youtube.mediaElement = mediaElement;
2790
2791 var props = _mejs2.default.html5media.properties,
2792 assignGettersSetters = function assignGettersSetters(propName) {
2793
2794 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2795
2796 youtube['get' + capName] = function () {
2797 if (youTubeApi !== null) {
2798 var value = null;
2799
2800 switch (propName) {
2801 case 'currentTime':
2802 return youTubeApi.getCurrentTime();
2803 case 'duration':
2804 return youTubeApi.getDuration();
2805 case 'volume':
2806 volume = youTubeApi.getVolume() / 100;
2807 return volume;
2808 case 'paused':
2809 return paused;
2810 case 'ended':
2811 return ended;
2812 case 'muted':
2813 return youTubeApi.isMuted();
2814 case 'buffered':
2815 var percentLoaded = youTubeApi.getVideoLoadedFraction(),
2816 duration = youTubeApi.getDuration();
2817 return {
2818 start: function start() {
2819 return 0;
2820 },
2821 end: function end() {
2822 return percentLoaded * duration;
2823 },
2824 length: 1
2825 };
2826 case 'src':
2827 return youTubeApi.getVideoUrl();
2828 case 'readyState':
2829 return readyState;
2830 }
2831
2832 return value;
2833 } else {
2834 return null;
2835 }
2836 };
2837
2838 youtube['set' + capName] = function (value) {
2839 if (youTubeApi !== null) {
2840 switch (propName) {
2841 case 'src':
2842 var url = typeof value === 'string' ? value : value[0].src,
2843 _videoId = YouTubeApi.getYouTubeId(url);
2844
2845 if (mediaElement.originalNode.autoplay) {
2846 youTubeApi.loadVideoById(_videoId);
2847 } else {
2848 youTubeApi.cueVideoById(_videoId);
2849 }
2850 break;
2851 case 'currentTime':
2852 youTubeApi.seekTo(value);
2853 break;
2854 case 'muted':
2855 if (value) {
2856 youTubeApi.mute();
2857 } else {
2858 youTubeApi.unMute();
2859 }
2860 setTimeout(function () {
2861 var event = (0, _general.createEvent)('volumechange', youtube);
2862 mediaElement.dispatchEvent(event);
2863 }, 50);
2864 break;
2865 case 'volume':
2866 volume = value;
2867 youTubeApi.setVolume(value * 100);
2868 setTimeout(function () {
2869 var event = (0, _general.createEvent)('volumechange', youtube);
2870 mediaElement.dispatchEvent(event);
2871 }, 50);
2872 break;
2873 case 'readyState':
2874 var event = (0, _general.createEvent)('canplay', youtube);
2875 mediaElement.dispatchEvent(event);
2876 break;
2877 default:
2878
2879 break;
2880 }
2881 } else {
2882 apiStack.push({ type: 'set', propName: propName, value: value });
2883 }
2884 };
2885 };
2886
2887 for (var i = 0, total = props.length; i < total; i++) {
2888 assignGettersSetters(props[i]);
2889 }
2890
2891 var methods = _mejs2.default.html5media.methods,
2892 assignMethods = function assignMethods(methodName) {
2893 youtube[methodName] = function () {
2894 if (youTubeApi !== null) {
2895 switch (methodName) {
2896 case 'play':
2897 paused = false;
2898 return youTubeApi.playVideo();
2899 case 'pause':
2900 paused = true;
2901 return youTubeApi.pauseVideo();
2902 case 'load':
2903 return null;
2904 }
2905 } else {
2906 apiStack.push({ type: 'call', methodName: methodName });
2907 }
2908 };
2909 };
2910
2911 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
2912 assignMethods(methods[_i]);
2913 }
2914
2915 var errorHandler = function errorHandler(error) {
2916 var message = '';
2917 switch (error.data) {
2918 case 2:
2919 message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
2920 break;
2921 case 5:
2922 message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
2923 break;
2924 case 100:
2925 message = 'The video requested was not found. Either video has been removed or has been marked as private.';
2926 break;
2927 case 101:
2928 case 105:
2929 message = 'The owner of the requested video does not allow it to be played in embedded players.';
2930 break;
2931 default:
2932 message = 'Unknown error.';
2933 break;
2934 }
2935 mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
2936 };
2937
2938 var youtubeContainer = _document2.default.createElement('div');
2939 youtubeContainer.id = youtube.id;
2940
2941 if (youtube.options.youtube.nocookie) {
2942 mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
2943 }
2944
2945 mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
2946 mediaElement.originalNode.style.display = 'none';
2947
2948 var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
2949 height = isAudio ? '1' : mediaElement.originalNode.height,
2950 width = isAudio ? '1' : mediaElement.originalNode.width,
2951 videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
2952 youtubeSettings = {
2953 id: youtube.id,
2954 containerId: youtubeContainer.id,
2955 videoId: videoId,
2956 height: height,
2957 width: width,
2958 playerVars: Object.assign({
2959 controls: 0,
2960 rel: 0,
2961 disablekb: 1,
2962 showinfo: 0,
2963 modestbranding: 0,
2964 html5: 1,
2965 iv_load_policy: 3
2966 }, youtube.options.youtube),
2967 origin: _window2.default.location.host,
2968 events: {
2969 onReady: function onReady(e) {
2970 mediaElement.youTubeApi = youTubeApi = e.target;
2971 mediaElement.youTubeState = {
2972 paused: true,
2973 ended: false
2974 };
2975
2976 if (apiStack.length) {
2977 for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
2978
2979 var stackItem = apiStack[_i2];
2980
2981 if (stackItem.type === 'set') {
2982 var propName = stackItem.propName,
2983 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2984
2985 youtube['set' + capName](stackItem.value);
2986 } else if (stackItem.type === 'call') {
2987 youtube[stackItem.methodName]();
2988 }
2989 }
2990 }
2991
2992 youTubeIframe = youTubeApi.getIframe();
2993
2994 if (mediaElement.originalNode.muted) {
2995 youTubeApi.mute();
2996 }
2997
2998 var events = ['mouseover', 'mouseout'],
2999 assignEvents = function assignEvents(e) {
3000 var newEvent = (0, _general.createEvent)(e.type, youtube);
3001 mediaElement.dispatchEvent(newEvent);
3002 };
3003
3004 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
3005 youTubeIframe.addEventListener(events[_i3], assignEvents, false);
3006 }
3007
3008 var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
3009
3010 for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
3011 var event = (0, _general.createEvent)(initEvents[_i4], youtube);
3012 mediaElement.dispatchEvent(event);
3013 }
3014 },
3015 onStateChange: function onStateChange(e) {
3016 var events = [];
3017
3018 switch (e.data) {
3019 case -1:
3020 events = ['loadedmetadata'];
3021 paused = true;
3022 ended = false;
3023 break;
3024 case 0:
3025 events = ['ended'];
3026 paused = false;
3027 ended = !youtube.options.youtube.loop;
3028 if (!youtube.options.youtube.loop) {
3029 youtube.stopInterval();
3030 }
3031 break;
3032 case 1:
3033 events = ['play', 'playing'];
3034 paused = false;
3035 ended = false;
3036 youtube.startInterval();
3037 break;
3038 case 2:
3039 events = ['pause'];
3040 paused = true;
3041 ended = false;
3042 youtube.stopInterval();
3043 break;
3044 case 3:
3045 events = ['progress'];
3046 ended = false;
3047 break;
3048 case 5:
3049 events = ['loadeddata', 'loadedmetadata', 'canplay'];
3050 paused = true;
3051 ended = false;
3052 break;
3053 }
3054
3055 for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
3056 var event = (0, _general.createEvent)(events[_i5], youtube);
3057 mediaElement.dispatchEvent(event);
3058 }
3059 },
3060 onError: function onError(e) {
3061 return errorHandler(e);
3062 }
3063 }
3064 };
3065
3066 if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
3067 youtubeSettings.playerVars.playsinline = 1;
3068 }
3069
3070 if (mediaElement.originalNode.controls) {
3071 youtubeSettings.playerVars.controls = 1;
3072 }
3073 if (mediaElement.originalNode.autoplay) {
3074 youtubeSettings.playerVars.autoplay = 1;
3075 }
3076 if (mediaElement.originalNode.loop) {
3077 youtubeSettings.playerVars.loop = 1;
3078 }
3079
3080 if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
3081 youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
3082 }
3083
3084 YouTubeApi.enqueueIframe(youtubeSettings);
3085
3086 youtube.onEvent = function (eventName, player, _youTubeState) {
3087 if (_youTubeState !== null && _youTubeState !== undefined) {
3088 mediaElement.youTubeState = _youTubeState;
3089 }
3090 };
3091
3092 youtube.setSize = function (width, height) {
3093 if (youTubeApi !== null) {
3094 youTubeApi.setSize(width, height);
3095 }
3096 };
3097 youtube.hide = function () {
3098 youtube.stopInterval();
3099 youtube.pause();
3100 if (youTubeIframe) {
3101 youTubeIframe.style.display = 'none';
3102 }
3103 };
3104 youtube.show = function () {
3105 if (youTubeIframe) {
3106 youTubeIframe.style.display = '';
3107 }
3108 };
3109 youtube.destroy = function () {
3110 youTubeApi.destroy();
3111 };
3112 youtube.interval = null;
3113
3114 youtube.startInterval = function () {
3115 youtube.interval = setInterval(function () {
3116 var event = (0, _general.createEvent)('timeupdate', youtube);
3117 mediaElement.dispatchEvent(event);
3118 }, 250);
3119 };
3120 youtube.stopInterval = function () {
3121 if (youtube.interval) {
3122 clearInterval(youtube.interval);
3123 }
3124 };
3125 youtube.getPosterUrl = function () {
3126 var quality = options.youtube.imageQuality,
3127 resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
3128 id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
3129 return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
3130 };
3131
3132 return youtube;
3133 }
3134 };
3135
3136 _window2.default.onYouTubePlayerAPIReady = function () {
3137 YouTubeApi.iFrameReady();
3138 };
3139
3140 _media.typeChecks.push(function (url) {
3141 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
3142 );
3143 });
3144
3145 _renderer.renderer.add(YouTubeIframeRenderer);
3146
3147 },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_,module,exports){
3148 'use strict';
3149
3150 Object.defineProperty(exports, "__esModule", {
3151 value: true
3152 });
3153 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_PASSIVE_EVENT = 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;
3154
3155 var _window = _dereq_(3);
3156
3157 var _window2 = _interopRequireDefault(_window);
3158
3159 var _document = _dereq_(2);
3160
3161 var _document2 = _interopRequireDefault(_document);
3162
3163 var _mejs = _dereq_(7);
3164
3165 var _mejs2 = _interopRequireDefault(_mejs);
3166
3167 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3168
3169 var NAV = exports.NAV = _window2.default.navigator;
3170 var UA = exports.UA = NAV.userAgent.toLowerCase();
3171 var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
3172 var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
3173 var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
3174 var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
3175 var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
3176 var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
3177 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
3178 var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
3179 var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
3180 var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
3181 var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
3182 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
3183 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
3184 var element = _document2.default.createElement('x'),
3185 documentElement = _document2.default.documentElement,
3186 getComputedStyle = _window2.default.getComputedStyle;
3187
3188 if (!('pointerEvents' in element.style)) {
3189 return false;
3190 }
3191
3192 element.style.pointerEvents = 'auto';
3193 element.style.pointerEvents = 'x';
3194 documentElement.appendChild(element);
3195 var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
3196 element.remove();
3197 return !!supports;
3198 }();
3199
3200 var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
3201 var supportsPassive = false;
3202 try {
3203 var opts = Object.defineProperty({}, 'passive', {
3204 get: function get() {
3205 supportsPassive = true;
3206 }
3207 });
3208 _window2.default.addEventListener('test', null, opts);
3209 } catch (e) {}
3210
3211 return supportsPassive;
3212 }();
3213
3214 var html5Elements = ['source', 'track', 'audio', 'video'];
3215 var video = void 0;
3216
3217 for (var i = 0, total = html5Elements.length; i < total; i++) {
3218 video = _document2.default.createElement(html5Elements[i]);
3219 }
3220
3221 var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
3222
3223 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
3224
3225 var hasNativeFullscreen = video.requestFullscreen !== undefined;
3226
3227 if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
3228 hasNativeFullscreen = false;
3229 hasiOSFullScreen = false;
3230 }
3231
3232 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
3233 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
3234 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
3235 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
3236 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
3237 var fullScreenEventName = '';
3238 var isFullScreen = void 0,
3239 requestFullScreen = void 0,
3240 cancelFullScreen = void 0;
3241
3242 if (hasMozNativeFullScreen) {
3243 nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
3244 } else if (hasMsNativeFullScreen) {
3245 nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
3246 }
3247
3248 if (IS_CHROME) {
3249 hasiOSFullScreen = false;
3250 }
3251
3252 if (hasTrueNativeFullScreen) {
3253 if (hasWebkitNativeFullScreen) {
3254 fullScreenEventName = 'webkitfullscreenchange';
3255 } else if (hasMozNativeFullScreen) {
3256 fullScreenEventName = 'mozfullscreenchange';
3257 } else if (hasMsNativeFullScreen) {
3258 fullScreenEventName = 'MSFullscreenChange';
3259 }
3260
3261 exports.isFullScreen = isFullScreen = function isFullScreen() {
3262 if (hasMozNativeFullScreen) {
3263 return _document2.default.mozFullScreen;
3264 } else if (hasWebkitNativeFullScreen) {
3265 return _document2.default.webkitIsFullScreen;
3266 } else if (hasMsNativeFullScreen) {
3267 return _document2.default.msFullscreenElement !== null;
3268 }
3269 };
3270
3271 exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
3272 if (hasWebkitNativeFullScreen) {
3273 el.webkitRequestFullScreen();
3274 } else if (hasMozNativeFullScreen) {
3275 el.mozRequestFullScreen();
3276 } else if (hasMsNativeFullScreen) {
3277 el.msRequestFullscreen();
3278 }
3279 };
3280
3281 exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
3282 if (hasWebkitNativeFullScreen) {
3283 _document2.default.webkitCancelFullScreen();
3284 } else if (hasMozNativeFullScreen) {
3285 _document2.default.mozCancelFullScreen();
3286 } else if (hasMsNativeFullScreen) {
3287 _document2.default.msExitFullscreen();
3288 }
3289 };
3290 }
3291
3292 var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
3293 var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
3294 var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
3295 var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
3296 var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
3297 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
3298 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
3299 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
3300 exports.isFullScreen = isFullScreen;
3301 exports.requestFullScreen = requestFullScreen;
3302 exports.cancelFullScreen = cancelFullScreen;
3303
3304
3305 _mejs2.default.Features = _mejs2.default.Features || {};
3306 _mejs2.default.Features.isiPad = IS_IPAD;
3307 _mejs2.default.Features.isiPod = IS_IPOD;
3308 _mejs2.default.Features.isiPhone = IS_IPHONE;
3309 _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
3310 _mejs2.default.Features.isAndroid = IS_ANDROID;
3311 _mejs2.default.Features.isIE = IS_IE;
3312 _mejs2.default.Features.isEdge = IS_EDGE;
3313 _mejs2.default.Features.isChrome = IS_CHROME;
3314 _mejs2.default.Features.isFirefox = IS_FIREFOX;
3315 _mejs2.default.Features.isSafari = IS_SAFARI;
3316 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
3317 _mejs2.default.Features.hasMSE = HAS_MSE;
3318 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
3319 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
3320 _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
3321 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
3322 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
3323 _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
3324 _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
3325 _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
3326 _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
3327 _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
3328 _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
3329 _mejs2.default.Features.isFullScreen = isFullScreen;
3330 _mejs2.default.Features.requestFullScreen = requestFullScreen;
3331 _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
3332
3333 },{"2":2,"3":3,"7":7}],17:[function(_dereq_,module,exports){
3334 'use strict';
3335
3336 Object.defineProperty(exports, "__esModule", {
3337 value: true
3338 });
3339 exports.removeClass = exports.addClass = exports.hasClass = undefined;
3340 exports.loadScript = loadScript;
3341 exports.offset = offset;
3342 exports.toggleClass = toggleClass;
3343 exports.fadeOut = fadeOut;
3344 exports.fadeIn = fadeIn;
3345 exports.siblings = siblings;
3346 exports.visible = visible;
3347 exports.ajax = ajax;
3348
3349 var _window = _dereq_(3);
3350
3351 var _window2 = _interopRequireDefault(_window);
3352
3353 var _document = _dereq_(2);
3354
3355 var _document2 = _interopRequireDefault(_document);
3356
3357 var _mejs = _dereq_(7);
3358
3359 var _mejs2 = _interopRequireDefault(_mejs);
3360
3361 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3362
3363 function loadScript(url) {
3364 return new Promise(function (resolve, reject) {
3365 var script = _document2.default.createElement('script');
3366 script.src = url;
3367 script.async = true;
3368 script.onload = function () {
3369 script.remove();
3370 resolve();
3371 };
3372 script.onerror = function () {
3373 script.remove();
3374 reject();
3375 };
3376 _document2.default.head.appendChild(script);
3377 });
3378 }
3379
3380 function offset(el) {
3381 var rect = el.getBoundingClientRect(),
3382 scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
3383 scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
3384 return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
3385 }
3386
3387 var hasClassMethod = void 0,
3388 addClassMethod = void 0,
3389 removeClassMethod = void 0;
3390
3391 if ('classList' in _document2.default.documentElement) {
3392 hasClassMethod = function hasClassMethod(el, className) {
3393 return el.classList !== undefined && el.classList.contains(className);
3394 };
3395 addClassMethod = function addClassMethod(el, className) {
3396 return el.classList.add(className);
3397 };
3398 removeClassMethod = function removeClassMethod(el, className) {
3399 return el.classList.remove(className);
3400 };
3401 } else {
3402 hasClassMethod = function hasClassMethod(el, className) {
3403 return new RegExp('\\b' + className + '\\b').test(el.className);
3404 };
3405 addClassMethod = function addClassMethod(el, className) {
3406 if (!hasClass(el, className)) {
3407 el.className += ' ' + className;
3408 }
3409 };
3410 removeClassMethod = function removeClassMethod(el, className) {
3411 el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
3412 };
3413 }
3414
3415 var hasClass = exports.hasClass = hasClassMethod;
3416 var addClass = exports.addClass = addClassMethod;
3417 var removeClass = exports.removeClass = removeClassMethod;
3418
3419 function toggleClass(el, className) {
3420 hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
3421 }
3422
3423 function fadeOut(el) {
3424 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3425 var callback = arguments[2];
3426
3427 if (!el.style.opacity) {
3428 el.style.opacity = 1;
3429 }
3430
3431 var start = null;
3432 _window2.default.requestAnimationFrame(function animate(timestamp) {
3433 start = start || timestamp;
3434 var progress = timestamp - start;
3435 var opacity = parseFloat(1 - progress / duration, 2);
3436 el.style.opacity = opacity < 0 ? 0 : opacity;
3437 if (progress > duration) {
3438 if (callback && typeof callback === 'function') {
3439 callback();
3440 }
3441 } else {
3442 _window2.default.requestAnimationFrame(animate);
3443 }
3444 });
3445 }
3446
3447 function fadeIn(el) {
3448 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3449 var callback = arguments[2];
3450
3451 if (!el.style.opacity) {
3452 el.style.opacity = 0;
3453 }
3454
3455 var start = null;
3456 _window2.default.requestAnimationFrame(function animate(timestamp) {
3457 start = start || timestamp;
3458 var progress = timestamp - start;
3459 var opacity = parseFloat(progress / duration, 2);
3460 el.style.opacity = opacity > 1 ? 1 : opacity;
3461 if (progress > duration) {
3462 if (callback && typeof callback === 'function') {
3463 callback();
3464 }
3465 } else {
3466 _window2.default.requestAnimationFrame(animate);
3467 }
3468 });
3469 }
3470
3471 function siblings(el, filter) {
3472 var siblings = [];
3473 el = el.parentNode.firstChild;
3474 do {
3475 if (!filter || filter(el)) {
3476 siblings.push(el);
3477 }
3478 } while (el = el.nextSibling);
3479 return siblings;
3480 }
3481
3482 function visible(elem) {
3483 if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
3484 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
3485 }
3486 return !!(elem.offsetWidth || elem.offsetHeight);
3487 }
3488
3489 function ajax(url, dataType, success, error) {
3490 var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
3491
3492 var type = 'application/x-www-form-urlencoded; charset=UTF-8',
3493 completed = false,
3494 accept = '*/'.concat('*');
3495
3496 switch (dataType) {
3497 case 'text':
3498 type = 'text/plain';
3499 break;
3500 case 'json':
3501 type = 'application/json, text/javascript';
3502 break;
3503 case 'html':
3504 type = 'text/html';
3505 break;
3506 case 'xml':
3507 type = 'application/xml, text/xml';
3508 break;
3509 }
3510
3511 if (type !== 'application/x-www-form-urlencoded') {
3512 accept = type + ', */*; q=0.01';
3513 }
3514
3515 if (xhr) {
3516 xhr.open('GET', url, true);
3517 xhr.setRequestHeader('Accept', accept);
3518 xhr.onreadystatechange = function () {
3519 if (completed) {
3520 return;
3521 }
3522
3523 if (xhr.readyState === 4) {
3524 if (xhr.status === 200) {
3525 completed = true;
3526 var data = void 0;
3527 switch (dataType) {
3528 case 'json':
3529 data = JSON.parse(xhr.responseText);
3530 break;
3531 case 'xml':
3532 data = xhr.responseXML;
3533 break;
3534 default:
3535 data = xhr.responseText;
3536 break;
3537 }
3538 success(data);
3539 } else if (typeof error === 'function') {
3540 error(xhr.status);
3541 }
3542 }
3543 };
3544
3545 xhr.send();
3546 }
3547 }
3548
3549 _mejs2.default.Utils = _mejs2.default.Utils || {};
3550 _mejs2.default.Utils.offset = offset;
3551 _mejs2.default.Utils.hasClass = hasClass;
3552 _mejs2.default.Utils.addClass = addClass;
3553 _mejs2.default.Utils.removeClass = removeClass;
3554 _mejs2.default.Utils.toggleClass = toggleClass;
3555 _mejs2.default.Utils.fadeIn = fadeIn;
3556 _mejs2.default.Utils.fadeOut = fadeOut;
3557 _mejs2.default.Utils.siblings = siblings;
3558 _mejs2.default.Utils.visible = visible;
3559 _mejs2.default.Utils.ajax = ajax;
3560 _mejs2.default.Utils.loadScript = loadScript;
3561
3562 },{"2":2,"3":3,"7":7}],18:[function(_dereq_,module,exports){
3563 'use strict';
3564
3565 Object.defineProperty(exports, "__esModule", {
3566 value: true
3567 });
3568 exports.escapeHTML = escapeHTML;
3569 exports.debounce = debounce;
3570 exports.isObjectEmpty = isObjectEmpty;
3571 exports.splitEvents = splitEvents;
3572 exports.createEvent = createEvent;
3573 exports.isNodeAfter = isNodeAfter;
3574 exports.isString = isString;
3575
3576 var _mejs = _dereq_(7);
3577
3578 var _mejs2 = _interopRequireDefault(_mejs);
3579
3580 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3581
3582 function escapeHTML(input) {
3583
3584 if (typeof input !== 'string') {
3585 throw new Error('Argument passed must be a string');
3586 }
3587
3588 var map = {
3589 '&': '&amp;',
3590 '<': '&lt;',
3591 '>': '&gt;',
3592 '"': '&quot;'
3593 };
3594
3595 return input.replace(/[&<>"]/g, function (c) {
3596 return map[c];
3597 });
3598 }
3599
3600 function debounce(func, wait) {
3601 var _this = this,
3602 _arguments = arguments;
3603
3604 var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3605
3606
3607 if (typeof func !== 'function') {
3608 throw new Error('First argument must be a function');
3609 }
3610
3611 if (typeof wait !== 'number') {
3612 throw new Error('Second argument must be a numeric value');
3613 }
3614
3615 var timeout = void 0;
3616 return function () {
3617 var context = _this,
3618 args = _arguments;
3619 var later = function later() {
3620 timeout = null;
3621 if (!immediate) {
3622 func.apply(context, args);
3623 }
3624 };
3625 var callNow = immediate && !timeout;
3626 clearTimeout(timeout);
3627 timeout = setTimeout(later, wait);
3628
3629 if (callNow) {
3630 func.apply(context, args);
3631 }
3632 };
3633 }
3634
3635 function isObjectEmpty(instance) {
3636 return Object.getOwnPropertyNames(instance).length <= 0;
3637 }
3638
3639 function splitEvents(events, id) {
3640 var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
3641
3642 var ret = { d: [], w: [] };
3643 (events || '').split(' ').forEach(function (v) {
3644 var eventName = '' + v + (id ? '.' + id : '');
3645
3646 if (eventName.startsWith('.')) {
3647 ret.d.push(eventName);
3648 ret.w.push(eventName);
3649 } else {
3650 ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
3651 }
3652 });
3653
3654 ret.d = ret.d.join(' ');
3655 ret.w = ret.w.join(' ');
3656 return ret;
3657 }
3658
3659 function createEvent(eventName, target) {
3660
3661 if (typeof eventName !== 'string') {
3662 throw new Error('Event name must be a string');
3663 }
3664
3665 var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
3666 detail = {
3667 target: target
3668 };
3669
3670 if (eventFrags !== null) {
3671 eventName = eventFrags[1];
3672 detail.namespace = eventFrags[2];
3673 }
3674
3675 return new window.CustomEvent(eventName, {
3676 detail: detail
3677 });
3678 }
3679
3680 function isNodeAfter(sourceNode, targetNode) {
3681
3682 return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
3683 }
3684
3685 function isString(value) {
3686 return typeof value === 'string';
3687 }
3688
3689 _mejs2.default.Utils = _mejs2.default.Utils || {};
3690 _mejs2.default.Utils.escapeHTML = escapeHTML;
3691 _mejs2.default.Utils.debounce = debounce;
3692 _mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
3693 _mejs2.default.Utils.splitEvents = splitEvents;
3694 _mejs2.default.Utils.createEvent = createEvent;
3695 _mejs2.default.Utils.isNodeAfter = isNodeAfter;
3696 _mejs2.default.Utils.isString = isString;
3697
3698 },{"7":7}],19:[function(_dereq_,module,exports){
3699 'use strict';
3700
3701 Object.defineProperty(exports, "__esModule", {
3702 value: true
3703 });
3704 exports.typeChecks = undefined;
3705 exports.absolutizeUrl = absolutizeUrl;
3706 exports.formatType = formatType;
3707 exports.getMimeFromType = getMimeFromType;
3708 exports.getTypeFromFile = getTypeFromFile;
3709 exports.getExtension = getExtension;
3710 exports.normalizeExtension = normalizeExtension;
3711
3712 var _mejs = _dereq_(7);
3713
3714 var _mejs2 = _interopRequireDefault(_mejs);
3715
3716 var _general = _dereq_(18);
3717
3718 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3719
3720 var typeChecks = exports.typeChecks = [];
3721
3722 function absolutizeUrl(url) {
3723
3724 if (typeof url !== 'string') {
3725 throw new Error('`url` argument must be a string');
3726 }
3727
3728 var el = document.createElement('div');
3729 el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
3730 return el.firstChild.href;
3731 }
3732
3733 function formatType(url) {
3734 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
3735
3736 return url && !type ? getTypeFromFile(url) : type;
3737 }
3738
3739 function getMimeFromType(type) {
3740
3741 if (typeof type !== 'string') {
3742 throw new Error('`type` argument must be a string');
3743 }
3744
3745 return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
3746 }
3747
3748 function getTypeFromFile(url) {
3749
3750 if (typeof url !== 'string') {
3751 throw new Error('`url` argument must be a string');
3752 }
3753
3754 for (var i = 0, total = typeChecks.length; i < total; i++) {
3755 var type = typeChecks[i](url);
3756
3757 if (type) {
3758 return type;
3759 }
3760 }
3761
3762 var ext = getExtension(url),
3763 normalizedExt = normalizeExtension(ext);
3764
3765 var mime = 'video/mp4';
3766
3767 if (normalizedExt) {
3768 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
3769 mime = 'video/' + normalizedExt;
3770 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
3771 mime = 'audio/' + normalizedExt;
3772 }
3773 }
3774
3775 return mime;
3776 }
3777
3778 function getExtension(url) {
3779
3780 if (typeof url !== 'string') {
3781 throw new Error('`url` argument must be a string');
3782 }
3783
3784 var baseUrl = url.split('?')[0],
3785 baseName = baseUrl.split('\\').pop().split('/').pop();
3786 return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
3787 }
3788
3789 function normalizeExtension(extension) {
3790
3791 if (typeof extension !== 'string') {
3792 throw new Error('`extension` argument must be a string');
3793 }
3794
3795 switch (extension) {
3796 case 'mp4':
3797 case 'm4v':
3798 return 'mp4';
3799 case 'webm':
3800 case 'webma':
3801 case 'webmv':
3802 return 'webm';
3803 case 'ogg':
3804 case 'oga':
3805 case 'ogv':
3806 return 'ogg';
3807 default:
3808 return extension;
3809 }
3810 }
3811
3812 _mejs2.default.Utils = _mejs2.default.Utils || {};
3813 _mejs2.default.Utils.typeChecks = typeChecks;
3814 _mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
3815 _mejs2.default.Utils.formatType = formatType;
3816 _mejs2.default.Utils.getMimeFromType = getMimeFromType;
3817 _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
3818 _mejs2.default.Utils.getExtension = getExtension;
3819 _mejs2.default.Utils.normalizeExtension = normalizeExtension;
3820
3821 },{"18":18,"7":7}],20:[function(_dereq_,module,exports){
3822 'use strict';
3823
3824 var _document = _dereq_(2);
3825
3826 var _document2 = _interopRequireDefault(_document);
3827
3828 var _promisePolyfill = _dereq_(4);
3829
3830 var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
3831
3832 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3833
3834 (function (arr) {
3835 arr.forEach(function (item) {
3836 if (item.hasOwnProperty('remove')) {
3837 return;
3838 }
3839 Object.defineProperty(item, 'remove', {
3840 configurable: true,
3841 enumerable: true,
3842 writable: true,
3843 value: function remove() {
3844 this.parentNode.removeChild(this);
3845 }
3846 });
3847 });
3848 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
3849
3850 (function () {
3851
3852 if (typeof window.CustomEvent === 'function') {
3853 return false;
3854 }
3855
3856 function CustomEvent(event, params) {
3857 params = params || { bubbles: false, cancelable: false, detail: undefined };
3858 var evt = _document2.default.createEvent('CustomEvent');
3859 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
3860 return evt;
3861 }
3862
3863 CustomEvent.prototype = window.Event.prototype;
3864 window.CustomEvent = CustomEvent;
3865 })();
3866
3867 if (typeof Object.assign !== 'function') {
3868 Object.assign = function (target) {
3869
3870 if (target === null || target === undefined) {
3871 throw new TypeError('Cannot convert undefined or null to object');
3872 }
3873
3874 var to = Object(target);
3875
3876 for (var index = 1, total = arguments.length; index < total; index++) {
3877 var nextSource = arguments[index];
3878
3879 if (nextSource !== null) {
3880 for (var nextKey in nextSource) {
3881 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
3882 to[nextKey] = nextSource[nextKey];
3883 }
3884 }
3885 }
3886 }
3887 return to;
3888 };
3889 }
3890
3891 if (!String.prototype.startsWith) {
3892 String.prototype.startsWith = function (searchString, position) {
3893 position = position || 0;
3894 return this.substr(position, searchString.length) === searchString;
3895 };
3896 }
3897
3898 if (!Element.prototype.matches) {
3899 Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
3900 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
3901 i = matches.length - 1;
3902 while (--i >= 0 && matches.item(i) !== this) {}
3903 return i > -1;
3904 };
3905 }
3906
3907 if (window.Element && !Element.prototype.closest) {
3908 Element.prototype.closest = function (s) {
3909 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
3910 i = void 0,
3911 el = this;
3912 do {
3913 i = matches.length;
3914 while (--i >= 0 && matches.item(i) !== el) {}
3915 } while (i < 0 && (el = el.parentElement));
3916 return el;
3917 };
3918 }
3919
3920 (function () {
3921 var lastTime = 0;
3922 var vendors = ['ms', 'moz', 'webkit', 'o'];
3923 for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
3924 window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
3925 window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
3926 }
3927
3928 if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
3929 var currTime = new Date().getTime();
3930 var timeToCall = Math.max(0, 16 - (currTime - lastTime));
3931 var id = window.setTimeout(function () {
3932 callback(currTime + timeToCall);
3933 }, timeToCall);
3934 lastTime = currTime + timeToCall;
3935 return id;
3936 };
3937
3938 if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
3939 clearTimeout(id);
3940 };
3941 })();
3942
3943 if (/firefox/i.test(navigator.userAgent)) {
3944 var getComputedStyle = window.getComputedStyle;
3945 window.getComputedStyle = function (el, pseudoEl) {
3946 var t = getComputedStyle(el, pseudoEl);
3947 return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
3948 };
3949 }
3950
3951 if (!window.Promise) {
3952 window.Promise = _promisePolyfill2.default;
3953 }
3954
3955 (function (constructor) {
3956 if (constructor && constructor.prototype && constructor.prototype.children === null) {
3957 Object.defineProperty(constructor.prototype, 'children', {
3958 get: function get() {
3959 var i = 0,
3960 node = void 0,
3961 nodes = this.childNodes,
3962 children = [];
3963 while (node = nodes[i++]) {
3964 if (node.nodeType === 1) {
3965 children.push(node);
3966 }
3967 }
3968 return children;
3969 }
3970 });
3971 }
3972 })(window.Node || window.Element);
3973
3974 },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]);