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