1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function(){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){
12
13},{}],2:[function(_dereq_,module,exports){
14(function (global){
15var topLevel = typeof global !== 'undefined' ? global :
16 typeof window !== 'undefined' ? window : {}
17var minDoc = _dereq_(1);
18
19var doccy;
20
21if (typeof document !== 'undefined') {
22 doccy = document;
23} else {
24 doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
25
26 if (!doccy) {
27 doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
28 }
29}
30
31module.exports = doccy;
32
33}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
34},{"1":1}],3:[function(_dereq_,module,exports){
35(function (global){
36var win;
37
38if (typeof window !== "undefined") {
39 win = window;
40} else if (typeof global !== "undefined") {
41 win = global;
42} else if (typeof self !== "undefined"){
43 win = self;
44} else {
45 win = {};
46}
47
48module.exports = win;
49
50}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
51},{}],4:[function(_dereq_,module,exports){
52(function (root) {
53
54 // Store setTimeout reference so promise-polyfill will be unaffected by
55 // other code modifying setTimeout (like sinon.useFakeTimers())
56 var setTimeoutFunc = setTimeout;
57
58 function noop() {}
59
60 // Polyfill for Function.prototype.bind
61 function bind(fn, thisArg) {
62 return function () {
63 fn.apply(thisArg, arguments);
64 };
65 }
66
67 function Promise(fn) {
68 if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
69 if (typeof fn !== 'function') throw new TypeError('not a function');
70 this._state = 0;
71 this._handled = false;
72 this._value = undefined;
73 this._deferreds = [];
74
75 doResolve(fn, this);
76 }
77
78 function handle(self, deferred) {
79 while (self._state === 3) {
80 self = self._value;
81 }
82 if (self._state === 0) {
83 self._deferreds.push(deferred);
84 return;
85 }
86 self._handled = true;
87 Promise._immediateFn(function () {
88 var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
89 if (cb === null) {
90 (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
91 return;
92 }
93 var ret;
94 try {
95 ret = cb(self._value);
96 } catch (e) {
97 reject(deferred.promise, e);
98 return;
99 }
100 resolve(deferred.promise, ret);
101 });
102 }
103
104 function resolve(self, newValue) {
105 try {
106 // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
107 if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
108 if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
109 var then = newValue.then;
110 if (newValue instanceof Promise) {
111 self._state = 3;
112 self._value = newValue;
113 finale(self);
114 return;
115 } else if (typeof then === 'function') {
116 doResolve(bind(then, newValue), self);
117 return;
118 }
119 }
120 self._state = 1;
121 self._value = newValue;
122 finale(self);
123 } catch (e) {
124 reject(self, e);
125 }
126 }
127
128 function reject(self, newValue) {
129 self._state = 2;
130 self._value = newValue;
131 finale(self);
132 }
133
134 function finale(self) {
135 if (self._state === 2 && self._deferreds.length === 0) {
136 Promise._immediateFn(function() {
137 if (!self._handled) {
138 Promise._unhandledRejectionFn(self._value);
139 }
140 });
141 }
142
143 for (var i = 0, len = self._deferreds.length; i < len; i++) {
144 handle(self, self._deferreds[i]);
145 }
146 self._deferreds = null;
147 }
148
149 function Handler(onFulfilled, onRejected, promise) {
150 this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
151 this.onRejected = typeof onRejected === 'function' ? onRejected : null;
152 this.promise = promise;
153 }
154
155 /**
156 * Take a potentially misbehaving resolver function and make sure
157 * onFulfilled and onRejected are only called once.
158 *
159 * Makes no guarantees about asynchrony.
160 */
161 function doResolve(fn, self) {
162 var done = false;
163 try {
164 fn(function (value) {
165 if (done) return;
166 done = true;
167 resolve(self, value);
168 }, function (reason) {
169 if (done) return;
170 done = true;
171 reject(self, reason);
172 });
173 } catch (ex) {
174 if (done) return;
175 done = true;
176 reject(self, ex);
177 }
178 }
179
180 Promise.prototype['catch'] = function (onRejected) {
181 return this.then(null, onRejected);
182 };
183
184 Promise.prototype.then = function (onFulfilled, onRejected) {
185 var prom = new (this.constructor)(noop);
186
187 handle(this, new Handler(onFulfilled, onRejected, prom));
188 return prom;
189 };
190
191 Promise.all = function (arr) {
192 var args = Array.prototype.slice.call(arr);
193
194 return new Promise(function (resolve, reject) {
195 if (args.length === 0) return resolve([]);
196 var remaining = args.length;
197
198 function res(i, val) {
199 try {
200 if (val && (typeof val === 'object' || typeof val === 'function')) {
201 var then = val.then;
202 if (typeof then === 'function') {
203 then.call(val, function (val) {
204 res(i, val);
205 }, reject);
206 return;
207 }
208 }
209 args[i] = val;
210 if (--remaining === 0) {
211 resolve(args);
212 }
213 } catch (ex) {
214 reject(ex);
215 }
216 }
217
218 for (var i = 0; i < args.length; i++) {
219 res(i, args[i]);
220 }
221 });
222 };
223
224 Promise.resolve = function (value) {
225 if (value && typeof value === 'object' && value.constructor === Promise) {
226 return value;
227 }
228
229 return new Promise(function (resolve) {
230 resolve(value);
231 });
232 };
233
234 Promise.reject = function (value) {
235 return new Promise(function (resolve, reject) {
236 reject(value);
237 });
238 };
239
240 Promise.race = function (values) {
241 return new Promise(function (resolve, reject) {
242 for (var i = 0, len = values.length; i < len; i++) {
243 values[i].then(resolve, reject);
244 }
245 });
246 };
247
248 // Use polyfill for setImmediate for performance gains
249 Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
250 function (fn) {
251 setTimeoutFunc(fn, 0);
252 };
253
254 Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
255 if (typeof console !== 'undefined' && console) {
256 console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
257 }
258 };
259
260 /**
261 * Set the immediate function to execute callbacks
262 * @param fn {function} Function to execute
263 * @deprecated
264 */
265 Promise._setImmediateFn = function _setImmediateFn(fn) {
266 Promise._immediateFn = fn;
267 };
268
269 /**
270 * Change the function to execute on unhandled rejection
271 * @param {function} fn Function to execute on unhandled rejection
272 * @deprecated
273 */
274 Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
275 Promise._unhandledRejectionFn = fn;
276 };
277
278 if (typeof module !== 'undefined' && module.exports) {
279 module.exports = Promise;
280 } else if (!root.Promise) {
281 root.Promise = Promise;
282 }
283
284})(this);
285
286},{}],5:[function(_dereq_,module,exports){
287'use strict';
288
289Object.defineProperty(exports, "__esModule", {
290 value: true
291});
292
293var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
294
295var _mejs = _dereq_(7);
296
297var _mejs2 = _interopRequireDefault(_mejs);
298
299var _en = _dereq_(15);
300
301var _general = _dereq_(27);
302
303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
304
305var i18n = { lang: 'en', en: _en.EN };
306
307i18n.language = function () {
308 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
309 args[_key] = arguments[_key];
310 }
311
312 if (args !== null && args !== undefined && args.length) {
313
314 if (typeof args[0] !== 'string') {
315 throw new TypeError('Language code must be a string value');
316 }
317
318 if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
319 throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
320 }
321
322 i18n.lang = args[0];
323
324 if (i18n[args[0]] === undefined) {
325 args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
326 i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
327 } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
328 i18n[args[0]] = args[1];
329 }
330 }
331
332 return i18n.lang;
333};
334
335i18n.t = function (message) {
336 var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
338
339 if (typeof message === 'string' && message.length) {
340
341 var str = void 0,
342 pluralForm = void 0;
343
344 var language = i18n.language();
345
346 var _plural = function _plural(input, number, form) {
347
348 if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
349 return input;
350 }
351
352 var _pluralForms = function () {
353 return [function () {
354 return arguments.length <= 1 ? undefined : arguments[1];
355 }, function () {
356 return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
357 }, function () {
358 return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
359 }, function () {
360 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
361 return arguments.length <= 1 ? undefined : arguments[1];
362 } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
363 return arguments.length <= 2 ? undefined : arguments[2];
364 } else {
365 return arguments.length <= 3 ? undefined : arguments[3];
366 }
367 }, function () {
368 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
369 return arguments.length <= 1 ? undefined : arguments[1];
370 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
371 return arguments.length <= 2 ? undefined : arguments[2];
372 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
373 return arguments.length <= 3 ? undefined : arguments[3];
374 } else {
375 return arguments.length <= 4 ? undefined : arguments[4];
376 }
377 }, function () {
378 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
379 return arguments.length <= 1 ? undefined : arguments[1];
380 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
381 return arguments.length <= 2 ? undefined : arguments[2];
382 } else {
383 return arguments.length <= 3 ? undefined : arguments[3];
384 }
385 }, function () {
386 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
387 return arguments.length <= 1 ? undefined : arguments[1];
388 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
389 return arguments.length <= 2 ? undefined : arguments[2];
390 } else {
391 return [3];
392 }
393 }, function () {
394 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
395 return arguments.length <= 1 ? undefined : arguments[1];
396 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
397 return arguments.length <= 2 ? undefined : arguments[2];
398 } else {
399 return arguments.length <= 3 ? undefined : arguments[3];
400 }
401 }, function () {
402 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
403 return arguments.length <= 1 ? undefined : arguments[1];
404 } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
405 return arguments.length <= 2 ? undefined : arguments[2];
406 } else {
407 return arguments.length <= 3 ? undefined : arguments[3];
408 }
409 }, function () {
410 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
411 return arguments.length <= 1 ? undefined : arguments[1];
412 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
413 return arguments.length <= 2 ? undefined : arguments[2];
414 } else {
415 return arguments.length <= 3 ? undefined : arguments[3];
416 }
417 }, function () {
418 if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
419 return arguments.length <= 2 ? undefined : arguments[2];
420 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
421 return arguments.length <= 3 ? undefined : arguments[3];
422 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
423 return arguments.length <= 4 ? undefined : arguments[4];
424 } else {
425 return arguments.length <= 1 ? undefined : arguments[1];
426 }
427 }, function () {
428 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
429 return arguments.length <= 1 ? undefined : arguments[1];
430 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
431 return arguments.length <= 2 ? undefined : arguments[2];
432 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
433 return arguments.length <= 3 ? undefined : arguments[3];
434 } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
435 return arguments.length <= 4 ? undefined : arguments[4];
436 } else {
437 return arguments.length <= 5 ? undefined : arguments[5];
438 }
439 }, function () {
440 if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
441 return arguments.length <= 1 ? undefined : arguments[1];
442 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
443 return arguments.length <= 2 ? undefined : arguments[2];
444 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
445 return arguments.length <= 3 ? undefined : arguments[3];
446 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
447 return arguments.length <= 4 ? undefined : arguments[4];
448 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
449 return arguments.length <= 5 ? undefined : arguments[5];
450 } else {
451 return arguments.length <= 6 ? undefined : arguments[6];
452 }
453 }, function () {
454 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
455 return arguments.length <= 1 ? undefined : arguments[1];
456 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
457 return arguments.length <= 2 ? undefined : arguments[2];
458 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
459 return arguments.length <= 3 ? undefined : arguments[3];
460 } else {
461 return arguments.length <= 4 ? undefined : arguments[4];
462 }
463 }, function () {
464 if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
465 return arguments.length <= 1 ? undefined : arguments[1];
466 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
467 return arguments.length <= 2 ? undefined : arguments[2];
468 } else {
469 return arguments.length <= 3 ? undefined : arguments[3];
470 }
471 }, function () {
472 return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
473 }, function () {
474 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
475 return arguments.length <= 1 ? undefined : arguments[1];
476 } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
477 return arguments.length <= 2 ? undefined : arguments[2];
478 } else {
479 return arguments.length <= 3 ? undefined : arguments[3];
480 }
481 }, function () {
482 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
483 return arguments.length <= 1 ? undefined : arguments[1];
484 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
485 return arguments.length <= 2 ? undefined : arguments[2];
486 } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
487 return arguments.length <= 3 ? undefined : arguments[3];
488 } else {
489 return arguments.length <= 4 ? undefined : arguments[4];
490 }
491 }, function () {
492 return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
493 }, function () {
494 if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
495 return arguments.length <= 1 ? undefined : arguments[1];
496 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
497 return arguments.length <= 2 ? undefined : arguments[2];
498 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
499 return arguments.length <= 3 ? undefined : arguments[3];
500 } else {
501 return arguments.length <= 4 ? undefined : arguments[4];
502 }
503 }, function () {
504 if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
505 return arguments.length <= 1 ? undefined : arguments[1];
506 } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
507 return arguments.length <= 2 ? undefined : arguments[2];
508 } else {
509 return arguments.length <= 3 ? undefined : arguments[3];
510 }
511 }];
512 }();
513
514 return _pluralForms[form].apply(null, [number].concat(input));
515 };
516
517 if (i18n[language] !== undefined) {
518 str = i18n[language][message];
519 if (pluralParam !== null && typeof pluralParam === 'number') {
520 pluralForm = i18n[language]['mejs.plural-form'];
521 str = _plural.apply(null, [str, pluralParam, pluralForm]);
522 }
523 }
524
525 if (!str && i18n.en) {
526 str = i18n.en[message];
527 if (pluralParam !== null && typeof pluralParam === 'number') {
528 pluralForm = i18n.en['mejs.plural-form'];
529 str = _plural.apply(null, [str, pluralParam, pluralForm]);
530 }
531 }
532
533 str = str || message;
534
535 if (pluralParam !== null && typeof pluralParam === 'number') {
536 str = str.replace('%1', pluralParam);
537 }
538
539 return (0, _general.escapeHTML)(str);
540 }
541
542 return message;
543};
544
545_mejs2.default.i18n = i18n;
546
547if (typeof mejsL10n !== 'undefined') {
548 _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
549}
550
551exports.default = i18n;
552
553},{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){
554'use strict';
555
556Object.defineProperty(exports, "__esModule", {
557 value: true
558});
559
560var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
561
562var _window = _dereq_(3);
563
564var _window2 = _interopRequireDefault(_window);
565
566var _document = _dereq_(2);
567
568var _document2 = _interopRequireDefault(_document);
569
570var _mejs = _dereq_(7);
571
572var _mejs2 = _interopRequireDefault(_mejs);
573
574var _general = _dereq_(27);
575
576var _media2 = _dereq_(28);
577
578var _renderer = _dereq_(8);
579
580var _constants = _dereq_(25);
581
582function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
583
584function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
585
586var MediaElement = function MediaElement(idOrNode, options, sources) {
587 var _this = this;
588
589 _classCallCheck(this, MediaElement);
590
591 var t = this;
592
593 sources = Array.isArray(sources) ? sources : null;
594
595 t.defaults = {
596 renderers: [],
597
598 fakeNodeName: 'mediaelementwrapper',
599
600 pluginPath: 'build/',
601
602 shimScriptAccess: 'sameDomain'
603 };
604
605 options = Object.assign(t.defaults, options);
606
607 t.mediaElement = _document2.default.createElement(options.fakeNodeName);
608
609 var id = idOrNode,
610 error = false;
611
612 if (typeof idOrNode === 'string') {
613 t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
614 } else {
615 t.mediaElement.originalNode = idOrNode;
616 id = idOrNode.id;
617 }
618
619 if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
620 return null;
621 }
622
623 t.mediaElement.options = options;
624 id = id || 'mejs_' + Math.random().toString().slice(2);
625
626 t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
627
628 var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
629 if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
630 t.mediaElement.originalNode.setAttribute('preload', 'none');
631 }
632
633 t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
634
635 t.mediaElement.appendChild(t.mediaElement.originalNode);
636
637 var processURL = function processURL(url, type) {
638 if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
639 var xhr = new XMLHttpRequest();
640 xhr.onreadystatechange = function () {
641 if (this.readyState === 4 && this.status === 200) {
642 var _url = _window2.default.URL || _window2.default.webkitURL,
643 blobUrl = _url.createObjectURL(this.response);
644 t.mediaElement.originalNode.setAttribute('src', blobUrl);
645 return blobUrl;
646 }
647 return url;
648 };
649 xhr.open('GET', url);
650 xhr.responseType = 'blob';
651 xhr.send();
652 }
653
654 return url;
655 };
656
657 var mediaFiles = void 0;
658
659 if (sources !== null) {
660 mediaFiles = sources;
661 } else if (t.mediaElement.originalNode !== null) {
662
663 mediaFiles = [];
664
665 switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
666 case 'iframe':
667 mediaFiles.push({
668 type: '',
669 src: t.mediaElement.originalNode.getAttribute('src')
670 });
671 break;
672 case 'audio':
673 case 'video':
674 var _sources = t.mediaElement.originalNode.children.length,
675 nodeSource = t.mediaElement.originalNode.getAttribute('src');
676
677 if (nodeSource) {
678 var node = t.mediaElement.originalNode,
679 type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
680 mediaFiles.push({
681 type: type,
682 src: processURL(nodeSource, type)
683 });
684 }
685
686 for (var i = 0; i < _sources; i++) {
687 var n = t.mediaElement.originalNode.children[i];
688 if (n.tagName.toLowerCase() === 'source') {
689 var src = n.getAttribute('src'),
690 _type = (0, _media2.formatType)(src, n.getAttribute('type'));
691 mediaFiles.push({ type: _type, src: processURL(src, _type) });
692 }
693 }
694 break;
695 }
696 }
697
698 t.mediaElement.id = id;
699 t.mediaElement.renderers = {};
700 t.mediaElement.events = {};
701 t.mediaElement.promises = [];
702 t.mediaElement.renderer = null;
703 t.mediaElement.rendererName = null;
704
705 t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
706
707 var t = _this,
708 media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
709
710 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
711 t.mediaElement.renderer.pause();
712 if (t.mediaElement.renderer.stop) {
713 t.mediaElement.renderer.stop();
714 }
715 t.mediaElement.renderer.show();
716 t.mediaElement.renderer.setSrc(media);
717 return true;
718 }
719
720 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
721 t.mediaElement.renderer.pause();
722 if (t.mediaElement.renderer.stop) {
723 t.mediaElement.renderer.stop();
724 }
725 t.mediaElement.renderer.hide();
726 }
727
728 var newRenderer = t.mediaElement.renderers[rendererName],
729 newRendererType = null;
730
731 if (newRenderer !== undefined && newRenderer !== null) {
732 newRenderer.show();
733 newRenderer.setSrc(media);
734 t.mediaElement.renderer = newRenderer;
735 t.mediaElement.rendererName = rendererName;
736 return true;
737 }
738
739 var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
740
741 for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
742 var index = rendererArray[_i];
743
744 if (index === rendererName) {
745 var rendererList = _renderer.renderer.renderers;
746 newRendererType = rendererList[index];
747
748 var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
749 newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
750 newRenderer.name = rendererName;
751
752 t.mediaElement.renderers[newRendererType.name] = newRenderer;
753 t.mediaElement.renderer = newRenderer;
754 t.mediaElement.rendererName = rendererName;
755 newRenderer.show();
756 return true;
757 }
758 }
759
760 return false;
761 };
762
763 t.mediaElement.setSize = function (width, height) {
764 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
765 t.mediaElement.renderer.setSize(width, height);
766 }
767 };
768
769 t.mediaElement.generateError = function (message, urlList) {
770 message = message || '';
771 urlList = Array.isArray(urlList) ? urlList : [];
772 var event = (0, _general.createEvent)('error', t.mediaElement);
773 event.message = message;
774 event.urls = urlList;
775 t.mediaElement.dispatchEvent(event);
776 error = true;
777 };
778
779 var props = _mejs2.default.html5media.properties,
780 methods = _mejs2.default.html5media.methods,
781 addProperty = function addProperty(obj, name, onGet, onSet) {
782 var oldValue = obj[name];
783 var getFn = function getFn() {
784 return onGet.apply(obj, [oldValue]);
785 },
786 setFn = function setFn(newValue) {
787 oldValue = onSet.apply(obj, [newValue]);
788 return oldValue;
789 };
790
791 Object.defineProperty(obj, name, {
792 get: getFn,
793 set: setFn
794 });
795 },
796 assignGettersSetters = function assignGettersSetters(propName) {
797 if (propName !== 'src') {
798
799 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
800 getFn = function getFn() {
801 return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
802 },
803 setFn = function setFn(value) {
804 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
805 t.mediaElement.renderer['set' + capName](value);
806 }
807 };
808
809 addProperty(t.mediaElement, propName, getFn, setFn);
810 t.mediaElement['get' + capName] = getFn;
811 t.mediaElement['set' + capName] = setFn;
812 }
813 },
814 getSrc = function getSrc() {
815 return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
816 },
817 setSrc = function setSrc(value) {
818 var mediaFiles = [];
819
820 if (typeof value === 'string') {
821 mediaFiles.push({
822 src: value,
823 type: value ? (0, _media2.getTypeFromFile)(value) : ''
824 });
825 } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
826 var _src = (0, _media2.absolutizeUrl)(value.src),
827 _type2 = value.type,
828 media = Object.assign(value, {
829 src: _src,
830 type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
831 });
832 mediaFiles.push(media);
833 } else if (Array.isArray(value)) {
834 for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
835
836 var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
837 _type3 = value[_i2].type,
838 _media = Object.assign(value[_i2], {
839 src: _src2,
840 type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
841 });
842
843 mediaFiles.push(_media);
844 }
845 }
846
847 var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
848 event = void 0;
849
850 if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) {
851 t.mediaElement.pause();
852 event = (0, _general.createEvent)('pause', t.mediaElement);
853 t.mediaElement.dispatchEvent(event);
854 }
855 t.mediaElement.originalNode.src = mediaFiles[0].src || '';
856
857 if (renderInfo === null && mediaFiles[0].src) {
858 t.mediaElement.generateError('No renderer found', mediaFiles);
859 return;
860 }
861
862 var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === '');
863 return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
864 },
865 triggerAction = function triggerAction(methodName, args) {
866 try {
867 if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) {
868 var response = t.mediaElement.renderer[methodName](args);
869 if (response && typeof response.then === 'function') {
870 response.catch(function () {
871 if (t.mediaElement.paused) {
872 setTimeout(function () {
873 var tmpResponse = t.mediaElement.renderer.play();
874 if (tmpResponse !== undefined) {
875 tmpResponse.catch(function () {
876 if (!t.mediaElement.renderer.paused) {
877 t.mediaElement.renderer.pause();
878 }
879 });
880 }
881 }, 150);
882 }
883 });
884 }
885 } else {
886 t.mediaElement.renderer[methodName](args);
887 }
888 } catch (e) {
889 t.mediaElement.generateError(e, mediaFiles);
890 }
891 },
892 assignMethods = function assignMethods(methodName) {
893 t.mediaElement[methodName] = function () {
894 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
895 args[_key] = arguments[_key];
896 }
897
898 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
899 if (t.mediaElement.promises.length) {
900 Promise.all(t.mediaElement.promises).then(function () {
901 triggerAction(methodName, args);
902 }).catch(function (e) {
903 t.mediaElement.generateError(e, mediaFiles);
904 });
905 } else {
906 triggerAction(methodName, args);
907 }
908 }
909 return null;
910 };
911 };
912
913 addProperty(t.mediaElement, 'src', getSrc, setSrc);
914 t.mediaElement.getSrc = getSrc;
915 t.mediaElement.setSrc = setSrc;
916
917 for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
918 assignGettersSetters(props[_i3]);
919 }
920
921 for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
922 assignMethods(methods[_i4]);
923 }
924
925 t.mediaElement.addEventListener = function (eventName, callback) {
926 t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
927
928 t.mediaElement.events[eventName].push(callback);
929 };
930 t.mediaElement.removeEventListener = function (eventName, callback) {
931 if (!eventName) {
932 t.mediaElement.events = {};
933 return true;
934 }
935
936 var callbacks = t.mediaElement.events[eventName];
937
938 if (!callbacks) {
939 return true;
940 }
941
942 if (!callback) {
943 t.mediaElement.events[eventName] = [];
944 return true;
945 }
946
947 for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
948 if (callbacks[_i5] === callback) {
949 t.mediaElement.events[eventName].splice(_i5, 1);
950 return true;
951 }
952 }
953 return false;
954 };
955
956 t.mediaElement.dispatchEvent = function (event) {
957 var callbacks = t.mediaElement.events[event.type];
958 if (callbacks) {
959 for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
960 callbacks[_i6].apply(null, [event]);
961 }
962 }
963 };
964
965 t.mediaElement.destroy = function () {
966 var mediaElement = t.mediaElement.originalNode.cloneNode(true);
967 var wrapper = t.mediaElement.parentElement;
968 mediaElement.removeAttribute('id');
969 mediaElement.remove();
970 t.mediaElement.remove();
971 wrapper.appendChild(mediaElement);
972 };
973
974 if (mediaFiles.length) {
975 t.mediaElement.src = mediaFiles;
976 }
977
978 if (t.mediaElement.promises.length) {
979 Promise.all(t.mediaElement.promises).then(function () {
980 if (t.mediaElement.options.success) {
981 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
982 }
983 }).catch(function () {
984 if (error && t.mediaElement.options.error) {
985 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
986 }
987 });
988 } else {
989 if (t.mediaElement.options.success) {
990 t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
991 }
992
993 if (error && t.mediaElement.options.error) {
994 t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
995 }
996 }
997
998 return t.mediaElement;
999};
1000
1001_window2.default.MediaElement = MediaElement;
1002_mejs2.default.MediaElement = MediaElement;
1003
1004exports.default = MediaElement;
1005
1006},{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
1007'use strict';
1008
1009Object.defineProperty(exports, "__esModule", {
1010 value: true
1011});
1012
1013var _window = _dereq_(3);
1014
1015var _window2 = _interopRequireDefault(_window);
1016
1017function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1018
1019var mejs = {};
1020
1021mejs.version = '4.2.17';
1022
1023mejs.html5media = {
1024 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'],
1025 readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1026
1027 methods: ['load', 'play', 'pause', 'canPlayType'],
1028
1029 events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1030
1031 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']
1032};
1033
1034_window2.default.mejs = mejs;
1035
1036exports.default = mejs;
1037
1038},{"3":3}],8:[function(_dereq_,module,exports){
1039'use strict';
1040
1041Object.defineProperty(exports, "__esModule", {
1042 value: true
1043});
1044exports.renderer = undefined;
1045
1046var _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; };
1047
1048var _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; }; }();
1049
1050var _mejs = _dereq_(7);
1051
1052var _mejs2 = _interopRequireDefault(_mejs);
1053
1054function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1055
1056function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1057
1058var Renderer = function () {
1059 function Renderer() {
1060 _classCallCheck(this, Renderer);
1061
1062 this.renderers = {};
1063 this.order = [];
1064 }
1065
1066 _createClass(Renderer, [{
1067 key: 'add',
1068 value: function add(renderer) {
1069 if (renderer.name === undefined) {
1070 throw new TypeError('renderer must contain at least `name` property');
1071 }
1072
1073 this.renderers[renderer.name] = renderer;
1074 this.order.push(renderer.name);
1075 }
1076 }, {
1077 key: 'select',
1078 value: function select(mediaFiles) {
1079 var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1080
1081 var renderersLength = renderers.length;
1082
1083 renderers = renderers.length ? renderers : this.order;
1084
1085 if (!renderersLength) {
1086 var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1087 rendererRanking = function rendererRanking(renderer) {
1088 for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1089 if (rendererIndicator[i].test(renderer)) {
1090 return i;
1091 }
1092 }
1093 return rendererIndicator.length;
1094 };
1095
1096 renderers.sort(function (a, b) {
1097 return rendererRanking(a) - rendererRanking(b);
1098 });
1099 }
1100
1101 for (var i = 0, total = renderers.length; i < total; i++) {
1102 var key = renderers[i],
1103 _renderer = this.renderers[key];
1104
1105 if (_renderer !== null && _renderer !== undefined) {
1106 for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1107 if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1108 return {
1109 rendererName: _renderer.name,
1110 src: mediaFiles[j].src
1111 };
1112 }
1113 }
1114 }
1115 }
1116
1117 return null;
1118 }
1119 }, {
1120 key: 'order',
1121 set: function set(order) {
1122 if (!Array.isArray(order)) {
1123 throw new TypeError('order must be an array of strings.');
1124 }
1125
1126 this._order = order;
1127 },
1128 get: function get() {
1129 return this._order;
1130 }
1131 }, {
1132 key: 'renderers',
1133 set: function set(renderers) {
1134 if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1135 throw new TypeError('renderers must be an array of objects.');
1136 }
1137
1138 this._renderers = renderers;
1139 },
1140 get: function get() {
1141 return this._renderers;
1142 }
1143 }]);
1144
1145 return Renderer;
1146}();
1147
1148var renderer = exports.renderer = new Renderer();
1149
1150_mejs2.default.Renderers = renderer;
1151
1152},{"7":7}],9:[function(_dereq_,module,exports){
1153'use strict';
1154
1155var _window = _dereq_(3);
1156
1157var _window2 = _interopRequireDefault(_window);
1158
1159var _document = _dereq_(2);
1160
1161var _document2 = _interopRequireDefault(_document);
1162
1163var _i18n = _dereq_(5);
1164
1165var _i18n2 = _interopRequireDefault(_i18n);
1166
1167var _player = _dereq_(16);
1168
1169var _player2 = _interopRequireDefault(_player);
1170
1171var _constants = _dereq_(25);
1172
1173var Features = _interopRequireWildcard(_constants);
1174
1175var _general = _dereq_(27);
1176
1177var _dom = _dereq_(26);
1178
1179var _media = _dereq_(28);
1180
1181function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1182
1183function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1184
1185Object.assign(_player.config, {
1186 usePluginFullScreen: true,
1187
1188 fullscreenText: null,
1189
1190 useFakeFullscreen: false
1191});
1192
1193Object.assign(_player2.default.prototype, {
1194 isFullScreen: false,
1195
1196 isNativeFullScreen: false,
1197
1198 isInIframe: false,
1199
1200 isPluginClickThroughCreated: false,
1201
1202 fullscreenMode: '',
1203
1204 containerSizeTimeout: null,
1205
1206 buildfullscreen: function buildfullscreen(player) {
1207 if (!player.isVideo) {
1208 return;
1209 }
1210
1211 player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1212
1213 player.detectFullscreenMode();
1214
1215 var t = this,
1216 fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1217 fullscreenBtn = _document2.default.createElement('div');
1218
1219 fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1220 fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1221 t.addControlElement(fullscreenBtn, 'fullscreen');
1222
1223 fullscreenBtn.addEventListener('click', function () {
1224 var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1225
1226 if (isFullScreen) {
1227 player.exitFullScreen();
1228 } else {
1229 player.enterFullScreen();
1230 }
1231 });
1232
1233 player.fullscreenBtn = fullscreenBtn;
1234
1235 t.options.keyActions.push({
1236 keys: [70],
1237 action: function action(player, media, key, event) {
1238 if (!event.ctrlKey) {
1239 if (typeof player.enterFullScreen !== 'undefined') {
1240 if (player.isFullScreen) {
1241 player.exitFullScreen();
1242 } else {
1243 player.enterFullScreen();
1244 }
1245 }
1246 }
1247 }
1248 });
1249
1250 t.exitFullscreenCallback = function (e) {
1251 var key = e.which || e.keyCode || 0;
1252 if (t.options.enableKeyboard && key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1253 player.exitFullScreen();
1254 }
1255 };
1256
1257 t.globalBind('keydown', t.exitFullscreenCallback);
1258
1259 t.normalHeight = 0;
1260 t.normalWidth = 0;
1261
1262 if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1263 var fullscreenChanged = function fullscreenChanged() {
1264 if (player.isFullScreen) {
1265 if (Features.isFullScreen()) {
1266 player.isNativeFullScreen = true;
1267
1268 player.setControlsSize();
1269 } else {
1270 player.isNativeFullScreen = false;
1271
1272 player.exitFullScreen();
1273 }
1274 }
1275 };
1276
1277 player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1278 }
1279 },
1280 cleanfullscreen: function cleanfullscreen(player) {
1281 player.exitFullScreen();
1282 player.globalUnbind('keydown', player.exitFullscreenCallback);
1283 },
1284 detectFullscreenMode: function detectFullscreenMode() {
1285 var t = this,
1286 isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1287
1288 var mode = '';
1289
1290 if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1291 mode = 'native-native';
1292 } else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1293 mode = 'plugin-native';
1294 } else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1295 mode = 'plugin-click';
1296 }
1297
1298 t.fullscreenMode = mode;
1299 return mode;
1300 },
1301 enterFullScreen: function enterFullScreen() {
1302 var t = this,
1303 isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1304 containerStyles = getComputedStyle(t.getElement(t.container));
1305
1306 if (!t.isVideo) {
1307 return;
1308 }
1309
1310 if (t.options.useFakeFullscreen === false && (Features.IS_IOS || Features.IS_SAFARI) && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1311 t.media.originalNode.webkitEnterFullscreen();
1312 return;
1313 }
1314
1315 (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1316 (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1317
1318 t.normalHeight = parseFloat(containerStyles.height);
1319 t.normalWidth = parseFloat(containerStyles.width);
1320
1321 if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1322 Features.requestFullScreen(t.getElement(t.container));
1323
1324 if (t.isInIframe) {
1325 setTimeout(function checkFullscreen() {
1326
1327 if (t.isNativeFullScreen) {
1328 var percentErrorMargin = 0.002,
1329 windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1330 screenWidth = screen.width,
1331 absDiff = Math.abs(screenWidth - windowWidth),
1332 marginError = screenWidth * percentErrorMargin;
1333
1334 if (absDiff > marginError) {
1335 t.exitFullScreen();
1336 } else {
1337 setTimeout(checkFullscreen, 500);
1338 }
1339 }
1340 }, 1000);
1341 }
1342 }
1343
1344 t.getElement(t.container).style.width = '100%';
1345 t.getElement(t.container).style.height = '100%';
1346
1347 t.containerSizeTimeout = setTimeout(function () {
1348 t.getElement(t.container).style.width = '100%';
1349 t.getElement(t.container).style.height = '100%';
1350 t.setControlsSize();
1351 }, 500);
1352
1353 if (isNative) {
1354 t.node.style.width = '100%';
1355 t.node.style.height = '100%';
1356 } else {
1357 var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1358 _total = elements.length;
1359 for (var i = 0; i < _total; i++) {
1360 elements[i].style.width = '100%';
1361 elements[i].style.height = '100%';
1362 }
1363 }
1364
1365 if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1366 t.media.setSize(screen.width, screen.height);
1367 }
1368
1369 var layers = t.getElement(t.layers).children,
1370 total = layers.length;
1371 for (var _i = 0; _i < total; _i++) {
1372 layers[_i].style.width = '100%';
1373 layers[_i].style.height = '100%';
1374 }
1375
1376 if (t.fullscreenBtn) {
1377 (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1378 (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1379 }
1380
1381 t.setControlsSize();
1382 t.isFullScreen = true;
1383
1384 var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1385 captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1386 if (captionText) {
1387 captionText.style.fontSize = zoomFactor * 100 + '%';
1388 captionText.style.lineHeight = 'normal';
1389 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px';
1390 }
1391 var event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container));
1392 t.getElement(t.container).dispatchEvent(event);
1393 },
1394 exitFullScreen: function exitFullScreen() {
1395 var t = this,
1396 isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1397
1398 if (!t.isVideo) {
1399 return;
1400 }
1401
1402 clearTimeout(t.containerSizeTimeout);
1403
1404 if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1405 Features.cancelFullScreen();
1406 }
1407
1408 (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1409 (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1410
1411 if (t.options.setDimensions) {
1412 t.getElement(t.container).style.width = t.normalWidth + 'px';
1413 t.getElement(t.container).style.height = t.normalHeight + 'px';
1414
1415 if (isNative) {
1416 t.node.style.width = t.normalWidth + 'px';
1417 t.node.style.height = t.normalHeight + 'px';
1418 } else {
1419 var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1420 _total2 = elements.length;
1421 for (var i = 0; i < _total2; i++) {
1422 elements[i].style.width = t.normalWidth + 'px';
1423 elements[i].style.height = t.normalHeight + 'px';
1424 }
1425 }
1426
1427 if (typeof t.media.setSize === 'function') {
1428 t.media.setSize(t.normalWidth, t.normalHeight);
1429 }
1430
1431 var layers = t.getElement(t.layers).children,
1432 total = layers.length;
1433 for (var _i2 = 0; _i2 < total; _i2++) {
1434 layers[_i2].style.width = t.normalWidth + 'px';
1435 layers[_i2].style.height = t.normalHeight + 'px';
1436 }
1437 }
1438
1439 if (t.fullscreenBtn) {
1440 (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1441 (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1442 }
1443
1444 t.setControlsSize();
1445 t.isFullScreen = false;
1446
1447 var captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1448 if (captionText) {
1449 captionText.style.fontSize = '';
1450 captionText.style.lineHeight = '';
1451 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1452 }
1453 var event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container));
1454 t.getElement(t.container).dispatchEvent(event);
1455 }
1456});
1457
1458},{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){
1459'use strict';
1460
1461var _document = _dereq_(2);
1462
1463var _document2 = _interopRequireDefault(_document);
1464
1465var _player = _dereq_(16);
1466
1467var _player2 = _interopRequireDefault(_player);
1468
1469var _i18n = _dereq_(5);
1470
1471var _i18n2 = _interopRequireDefault(_i18n);
1472
1473var _general = _dereq_(27);
1474
1475var _dom = _dereq_(26);
1476
1477function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1478
1479Object.assign(_player.config, {
1480 playText: null,
1481
1482 pauseText: null
1483});
1484
1485Object.assign(_player2.default.prototype, {
1486 buildplaypause: function buildplaypause(player, controls, layers, media) {
1487 var t = this,
1488 op = t.options,
1489 playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1490 pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1491 play = _document2.default.createElement('div');
1492
1493 play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1494 play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1495 play.addEventListener('click', function () {
1496 if (t.paused) {
1497 t.play();
1498 } else {
1499 t.pause();
1500 }
1501 });
1502
1503 var playBtn = play.querySelector('button');
1504 t.addControlElement(play, 'playpause');
1505
1506 function togglePlayPause(which) {
1507 if ('play' === which) {
1508 (0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1509 (0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1510 (0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1511 playBtn.setAttribute('title', pauseTitle);
1512 playBtn.setAttribute('aria-label', pauseTitle);
1513 } else {
1514
1515 (0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1516 (0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1517 (0, _dom.addClass)(play, t.options.classPrefix + 'play');
1518 playBtn.setAttribute('title', playTitle);
1519 playBtn.setAttribute('aria-label', playTitle);
1520 }
1521 }
1522
1523 togglePlayPause('pse');
1524
1525 media.addEventListener('loadedmetadata', function () {
1526 if (media.rendererName.indexOf('flash') === -1) {
1527 togglePlayPause('pse');
1528 }
1529 });
1530 media.addEventListener('play', function () {
1531 togglePlayPause('play');
1532 });
1533 media.addEventListener('playing', function () {
1534 togglePlayPause('play');
1535 });
1536 media.addEventListener('pause', function () {
1537 togglePlayPause('pse');
1538 });
1539 media.addEventListener('ended', function () {
1540 if (!player.options.loop) {
1541 (0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1542 (0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1543 (0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1544 playBtn.setAttribute('title', playTitle);
1545 playBtn.setAttribute('aria-label', playTitle);
1546 }
1547 });
1548 }
1549});
1550
1551},{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){
1552'use strict';
1553
1554var _document = _dereq_(2);
1555
1556var _document2 = _interopRequireDefault(_document);
1557
1558var _player = _dereq_(16);
1559
1560var _player2 = _interopRequireDefault(_player);
1561
1562var _i18n = _dereq_(5);
1563
1564var _i18n2 = _interopRequireDefault(_i18n);
1565
1566var _constants = _dereq_(25);
1567
1568var _time = _dereq_(30);
1569
1570var _dom = _dereq_(26);
1571
1572function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1573
1574Object.assign(_player.config, {
1575 enableProgressTooltip: true,
1576
1577 useSmoothHover: true,
1578
1579 forceLive: false
1580});
1581
1582Object.assign(_player2.default.prototype, {
1583 buildprogress: function buildprogress(player, controls, layers, media) {
1584
1585 var lastKeyPressTime = 0,
1586 mouseIsDown = false,
1587 startedPaused = false;
1588
1589 var t = this,
1590 autoRewindInitial = player.options.autoRewind,
1591 tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1592 rail = _document2.default.createElement('div');
1593
1594 rail.className = t.options.classPrefix + 'time-rail';
1595 rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1596
1597 t.addControlElement(rail, 'progress');
1598
1599 t.options.keyActions.push({
1600 keys: [37, 227],
1601 action: function action(player) {
1602 if (!isNaN(player.duration) && player.duration > 0) {
1603 if (player.isVideo) {
1604 player.showControls();
1605 player.startControlsTimer();
1606 }
1607
1608 var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1609 if (timeSlider) {
1610 timeSlider.focus();
1611 }
1612
1613 var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1614
1615 if (!player.paused) {
1616 player.pause();
1617 }
1618
1619 setTimeout(function () {
1620 player.setCurrentTime(newTime);
1621 }, 0);
1622
1623 setTimeout(function () {
1624 player.play();
1625 }, 0);
1626 }
1627 }
1628 }, {
1629 keys: [39, 228],
1630 action: function action(player) {
1631
1632 if (!isNaN(player.duration) && player.duration > 0) {
1633 if (player.isVideo) {
1634 player.showControls();
1635 player.startControlsTimer();
1636 }
1637
1638 var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1639 if (timeSlider) {
1640 timeSlider.focus();
1641 }
1642
1643 var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1644
1645 if (!player.paused) {
1646 player.pause();
1647 }
1648
1649 setTimeout(function () {
1650 player.setCurrentTime(newTime);
1651 }, 0);
1652
1653 setTimeout(function () {
1654 player.play();
1655 }, 0);
1656 }
1657 }
1658 });
1659
1660 t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1661 t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1662 t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1663 t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1664 t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1665 t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1666 t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1667 t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1668 t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1669 t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1670 t.newTime = 0;
1671 t.forcedHandlePause = false;
1672 t.setTransformStyle = function (element, value) {
1673 element.style.transform = value;
1674 element.style.webkitTransform = value;
1675 element.style.MozTransform = value;
1676 element.style.msTransform = value;
1677 element.style.OTransform = value;
1678 };
1679
1680 t.buffer.style.display = 'none';
1681
1682 var handleMouseMove = function handleMouseMove(e) {
1683 var totalStyles = getComputedStyle(t.total),
1684 offsetStyles = (0, _dom.offset)(t.total),
1685 width = t.total.offsetWidth,
1686 transform = function () {
1687 if (totalStyles.webkitTransform !== undefined) {
1688 return 'webkitTransform';
1689 } else if (totalStyles.mozTransform !== undefined) {
1690 return 'mozTransform ';
1691 } else if (totalStyles.oTransform !== undefined) {
1692 return 'oTransform';
1693 } else if (totalStyles.msTransform !== undefined) {
1694 return 'msTransform';
1695 } else {
1696 return 'transform';
1697 }
1698 }(),
1699 cssMatrix = function () {
1700 if ('WebKitCSSMatrix' in window) {
1701 return 'WebKitCSSMatrix';
1702 } else if ('MSCSSMatrix' in window) {
1703 return 'MSCSSMatrix';
1704 } else if ('CSSMatrix' in window) {
1705 return 'CSSMatrix';
1706 }
1707 }();
1708
1709 var percentage = 0,
1710 leftPos = 0,
1711 pos = 0,
1712 x = void 0;
1713
1714 if (e.originalEvent && e.originalEvent.changedTouches) {
1715 x = e.originalEvent.changedTouches[0].pageX;
1716 } else if (e.changedTouches) {
1717 x = e.changedTouches[0].pageX;
1718 } else {
1719 x = e.pageX;
1720 }
1721
1722 if (t.getDuration()) {
1723 if (x < offsetStyles.left) {
1724 x = offsetStyles.left;
1725 } else if (x > width + offsetStyles.left) {
1726 x = width + offsetStyles.left;
1727 }
1728
1729 pos = x - offsetStyles.left;
1730 percentage = pos / width;
1731 t.newTime = percentage * t.getDuration();
1732
1733 if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1734 t.setCurrentRailHandle(t.newTime);
1735 t.updateCurrent(t.newTime);
1736 }
1737
1738 if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1739 if (pos < 0) {
1740 pos = 0;
1741 }
1742 if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1743 var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1744 handleLocation = matrix.m41,
1745 hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1746
1747 t.hovered.style.left = handleLocation + 'px';
1748 t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1749 t.hovered.setAttribute('pos', pos);
1750
1751 if (hoverScaleX >= 0) {
1752 (0, _dom.removeClass)(t.hovered, 'negative');
1753 } else {
1754 (0, _dom.addClass)(t.hovered, 'negative');
1755 }
1756 }
1757
1758 if (t.timefloat) {
1759 var half = t.timefloat.offsetWidth / 2,
1760 offsetContainer = mejs.Utils.offset(t.getElement(t.container)),
1761 tooltipStyles = getComputedStyle(t.timefloat);
1762
1763 if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1764 leftPos = half;
1765 } else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) {
1766 leftPos = t.total.offsetWidth - half;
1767 } else {
1768 leftPos = pos;
1769 }
1770
1771 if ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) {
1772 leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1773 }
1774
1775 t.timefloat.style.left = leftPos + 'px';
1776 t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat);
1777 t.timefloat.style.display = 'block';
1778 }
1779 }
1780 } else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1781 leftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1782 t.timefloat.style.left = leftPos + 'px';
1783 t.timefloat.style.left = leftPos + 'px';
1784 t.timefloat.style.display = 'block';
1785 }
1786 },
1787 updateSlider = function updateSlider() {
1788 var seconds = t.getCurrentTime(),
1789 timeSliderText = _i18n2.default.t('mejs.time-slider'),
1790 time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat),
1791 duration = t.getDuration();
1792
1793 t.slider.setAttribute('role', 'slider');
1794 t.slider.tabIndex = 0;
1795
1796 if (media.paused) {
1797 t.slider.setAttribute('aria-label', timeSliderText);
1798 t.slider.setAttribute('aria-valuemin', 0);
1799 t.slider.setAttribute('aria-valuemax', isNaN(duration) ? 0 : duration);
1800 t.slider.setAttribute('aria-valuenow', seconds);
1801 t.slider.setAttribute('aria-valuetext', time);
1802 } else {
1803 t.slider.removeAttribute('aria-label');
1804 t.slider.removeAttribute('aria-valuemin');
1805 t.slider.removeAttribute('aria-valuemax');
1806 t.slider.removeAttribute('aria-valuenow');
1807 t.slider.removeAttribute('aria-valuetext');
1808 }
1809 },
1810 restartPlayer = function restartPlayer() {
1811 if (new Date() - lastKeyPressTime >= 1000) {
1812 t.play();
1813 }
1814 },
1815 handleMouseup = function handleMouseup() {
1816 if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1817 t.setCurrentTime(t.newTime);
1818 t.setCurrentRailHandle(t.newTime);
1819 t.updateCurrent(t.newTime);
1820 }
1821 if (t.forcedHandlePause) {
1822 t.slider.focus();
1823 t.play();
1824 }
1825 t.forcedHandlePause = false;
1826 };
1827
1828 t.slider.addEventListener('focus', function () {
1829 player.options.autoRewind = false;
1830 });
1831 t.slider.addEventListener('blur', function () {
1832 player.options.autoRewind = autoRewindInitial;
1833 });
1834 t.slider.addEventListener('keydown', function (e) {
1835 if (new Date() - lastKeyPressTime >= 1000) {
1836 startedPaused = t.paused;
1837 }
1838
1839 if (t.options.enableKeyboard && t.options.keyActions.length) {
1840
1841 var keyCode = e.which || e.keyCode || 0,
1842 duration = t.getDuration(),
1843 seekForward = player.options.defaultSeekForwardInterval(media),
1844 seekBackward = player.options.defaultSeekBackwardInterval(media);
1845
1846 var seekTime = t.getCurrentTime();
1847 var volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
1848
1849 if (keyCode === 38 || keyCode === 40) {
1850 if (volume) {
1851 volume.style.display = 'block';
1852 }
1853 if (t.isVideo) {
1854 t.showControls();
1855 t.startControlsTimer();
1856 }
1857
1858 var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1859 mutePlayer = newVolume <= 0;
1860 t.setVolume(newVolume);
1861 t.setMuted(mutePlayer);
1862 return;
1863 } else {
1864 if (volume) {
1865 volume.style.display = 'none';
1866 }
1867 }
1868
1869 switch (keyCode) {
1870 case 37:
1871 if (t.getDuration() !== Infinity) {
1872 seekTime -= seekBackward;
1873 }
1874 break;
1875 case 39:
1876 if (t.getDuration() !== Infinity) {
1877 seekTime += seekForward;
1878 }
1879 break;
1880 case 36:
1881 seekTime = 0;
1882 break;
1883 case 35:
1884 seekTime = duration;
1885 break;
1886 case 13:
1887 case 32:
1888 if (_constants.IS_FIREFOX) {
1889 if (t.paused) {
1890 t.play();
1891 } else {
1892 t.pause();
1893 }
1894 }
1895 return;
1896 default:
1897 return;
1898 }
1899
1900 seekTime = seekTime < 0 || isNaN(seekTime) ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1901 lastKeyPressTime = new Date();
1902 if (!startedPaused) {
1903 player.pause();
1904 }
1905
1906 setTimeout(function () {
1907 t.setCurrentTime(seekTime);
1908 }, 0);
1909
1910 if (seekTime < t.getDuration() && !startedPaused) {
1911 setTimeout(restartPlayer, 1100);
1912 }
1913
1914 player.showControls();
1915
1916 e.preventDefault();
1917 e.stopPropagation();
1918 }
1919 });
1920
1921 var events = ['mousedown', 'touchstart'];
1922
1923 t.slider.addEventListener('dragstart', function () {
1924 return false;
1925 });
1926
1927 for (var i = 0, total = events.length; i < total; i++) {
1928 t.slider.addEventListener(events[i], function (e) {
1929 t.forcedHandlePause = false;
1930 if (t.getDuration() !== Infinity) {
1931 if (e.which === 1 || e.which === 0) {
1932 if (!t.paused) {
1933 t.pause();
1934 t.forcedHandlePause = true;
1935 }
1936
1937 mouseIsDown = true;
1938 handleMouseMove(e);
1939 var endEvents = ['mouseup', 'touchend'];
1940
1941 for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1942 t.getElement(t.container).addEventListener(endEvents[j], function (event) {
1943 var target = event.target;
1944 if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1945 handleMouseMove(event);
1946 }
1947 });
1948 }
1949 t.globalBind('mouseup.dur touchend.dur', function () {
1950 handleMouseup();
1951 mouseIsDown = false;
1952 if (t.timefloat) {
1953 t.timefloat.style.display = 'none';
1954 }
1955 });
1956 }
1957 }
1958 }, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1959 }
1960 t.slider.addEventListener('mouseenter', function (e) {
1961 if (e.target === t.slider && t.getDuration() !== Infinity) {
1962 t.getElement(t.container).addEventListener('mousemove', function (event) {
1963 var target = event.target;
1964 if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1965 handleMouseMove(event);
1966 }
1967 });
1968 if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1969 t.timefloat.style.display = 'block';
1970 }
1971 if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1972 (0, _dom.removeClass)(t.hovered, 'no-hover');
1973 }
1974 }
1975 });
1976 t.slider.addEventListener('mouseleave', function () {
1977 if (t.getDuration() !== Infinity) {
1978 if (!mouseIsDown) {
1979 if (t.timefloat) {
1980 t.timefloat.style.display = 'none';
1981 }
1982 if (t.hovered && t.options.useSmoothHover) {
1983 (0, _dom.addClass)(t.hovered, 'no-hover');
1984 }
1985 }
1986 }
1987 });
1988
1989 t.broadcastCallback = function (e) {
1990 var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1991 if (!t.options.forceLive && t.getDuration() !== Infinity) {
1992 if (broadcast) {
1993 t.slider.style.display = '';
1994 broadcast.remove();
1995 }
1996
1997 player.setProgressRail(e);
1998 if (!t.forcedHandlePause) {
1999 player.setCurrentRail(e);
2000 }
2001 updateSlider();
2002 } else if (!broadcast && t.options.forceLive) {
2003 var label = _document2.default.createElement('span');
2004 label.className = t.options.classPrefix + 'broadcast';
2005 label.innerText = _i18n2.default.t('mejs.live-broadcast');
2006 t.slider.style.display = 'none';
2007 t.rail.appendChild(label);
2008 }
2009 };
2010
2011 media.addEventListener('progress', t.broadcastCallback);
2012 media.addEventListener('timeupdate', t.broadcastCallback);
2013 media.addEventListener('play', function () {
2014 t.buffer.style.display = 'none';
2015 });
2016 media.addEventListener('playing', function () {
2017 t.buffer.style.display = 'none';
2018 });
2019 media.addEventListener('seeking', function () {
2020 t.buffer.style.display = '';
2021 });
2022 media.addEventListener('seeked', function () {
2023 t.buffer.style.display = 'none';
2024 });
2025 media.addEventListener('pause', function () {
2026 t.buffer.style.display = 'none';
2027 });
2028 media.addEventListener('waiting', function () {
2029 t.buffer.style.display = '';
2030 });
2031 media.addEventListener('loadeddata', function () {
2032 t.buffer.style.display = '';
2033 });
2034 media.addEventListener('canplay', function () {
2035 t.buffer.style.display = 'none';
2036 });
2037 media.addEventListener('error', function () {
2038 t.buffer.style.display = 'none';
2039 });
2040
2041 t.getElement(t.container).addEventListener('controlsresize', function (e) {
2042 if (t.getDuration() !== Infinity) {
2043 player.setProgressRail(e);
2044 if (!t.forcedHandlePause) {
2045 player.setCurrentRail(e);
2046 }
2047 }
2048 });
2049 },
2050 cleanprogress: function cleanprogress(player, controls, layers, media) {
2051 media.removeEventListener('progress', player.broadcastCallback);
2052 media.removeEventListener('timeupdate', player.broadcastCallback);
2053 if (player.rail) {
2054 player.rail.remove();
2055 }
2056 },
2057 setProgressRail: function setProgressRail(e) {
2058 var t = this,
2059 target = e !== undefined ? e.detail.target || e.target : t.media;
2060
2061 var percent = null;
2062
2063 if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2064 percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2065 } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2066 percent = target.bufferedBytes / target.bytesTotal;
2067 } else if (e && e.lengthComputable && e.total !== 0) {
2068 percent = e.loaded / e.total;
2069 }
2070
2071 if (percent !== null) {
2072 percent = Math.min(1, Math.max(0, percent));
2073
2074 if (t.loaded) {
2075 t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2076 }
2077 }
2078 },
2079 setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2080 var t = this;
2081 t.setCurrentRailMain(t, fakeTime);
2082 },
2083 setCurrentRail: function setCurrentRail() {
2084 var t = this;
2085 t.setCurrentRailMain(t);
2086 },
2087 setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2088 if (t.getCurrentTime() !== undefined && t.getDuration()) {
2089 var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2090
2091 if (t.total && t.handle) {
2092 var tW = parseFloat(getComputedStyle(t.total).width);
2093
2094 var newWidth = Math.round(tW * nTime / t.getDuration()),
2095 handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2096
2097 handlePos = handlePos < 0 ? 0 : handlePos;
2098 t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2099 t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2100
2101 if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2102 var pos = parseInt(t.hovered.getAttribute('pos'), 10);
2103 pos = isNaN(pos) ? 0 : pos;
2104
2105 var hoverScaleX = pos / tW - handlePos / tW;
2106
2107 t.hovered.style.left = handlePos + 'px';
2108 t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2109
2110 if (hoverScaleX >= 0) {
2111 (0, _dom.removeClass)(t.hovered, 'negative');
2112 } else {
2113 (0, _dom.addClass)(t.hovered, 'negative');
2114 }
2115 }
2116 }
2117 }
2118 }
2119});
2120
2121},{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){
2122'use strict';
2123
2124var _document = _dereq_(2);
2125
2126var _document2 = _interopRequireDefault(_document);
2127
2128var _player = _dereq_(16);
2129
2130var _player2 = _interopRequireDefault(_player);
2131
2132var _time = _dereq_(30);
2133
2134var _dom = _dereq_(26);
2135
2136function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2137
2138Object.assign(_player.config, {
2139 duration: 0,
2140
2141 timeAndDurationSeparator: '<span> | </span>'
2142});
2143
2144Object.assign(_player2.default.prototype, {
2145 buildcurrent: function buildcurrent(player, controls, layers, media) {
2146 var t = this,
2147 time = _document2.default.createElement('div');
2148
2149 time.className = t.options.classPrefix + 'time';
2150 time.setAttribute('role', 'timer');
2151 time.setAttribute('aria-live', 'off');
2152 time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>';
2153
2154 t.addControlElement(time, 'current');
2155 player.updateCurrent();
2156 t.updateTimeCallback = function () {
2157 if (t.controlsAreVisible) {
2158 player.updateCurrent();
2159 }
2160 };
2161 media.addEventListener('timeupdate', t.updateTimeCallback);
2162 },
2163 cleancurrent: function cleancurrent(player, controls, layers, media) {
2164 media.removeEventListener('timeupdate', player.updateTimeCallback);
2165 },
2166 buildduration: function buildduration(player, controls, layers, media) {
2167 var t = this,
2168 currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2169
2170 if (currTime) {
2171 controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2172 } else {
2173 if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2174 (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2175 }
2176
2177 var duration = _document2.default.createElement('div');
2178 duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2179 duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2180
2181 t.addControlElement(duration, 'duration');
2182 }
2183
2184 t.updateDurationCallback = function () {
2185 if (t.controlsAreVisible) {
2186 player.updateDuration();
2187 }
2188 };
2189
2190 media.addEventListener('timeupdate', t.updateDurationCallback);
2191 },
2192 cleanduration: function cleanduration(player, controls, layers, media) {
2193 media.removeEventListener('timeupdate', player.updateDurationCallback);
2194 },
2195 updateCurrent: function updateCurrent() {
2196 var t = this;
2197
2198 var currentTime = t.getCurrentTime();
2199
2200 if (isNaN(currentTime)) {
2201 currentTime = 0;
2202 }
2203
2204 var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2205
2206 if (timecode.length > 5) {
2207 (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2208 } else {
2209 (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2210 }
2211
2212 if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) {
2213 t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2214 }
2215 },
2216 updateDuration: function updateDuration() {
2217 var t = this;
2218
2219 var duration = t.getDuration();
2220
2221 if (t.media !== undefined && (isNaN(duration) || duration === Infinity || duration < 0)) {
2222 t.media.duration = t.options.duration = duration = 0;
2223 }
2224
2225 if (t.options.duration > 0) {
2226 duration = t.options.duration;
2227 }
2228
2229 var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2230
2231 if (timecode.length > 5) {
2232 (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2233 } else {
2234 (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2235 }
2236
2237 if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2238 t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2239 }
2240 }
2241});
2242
2243},{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){
2244'use strict';
2245
2246var _document = _dereq_(2);
2247
2248var _document2 = _interopRequireDefault(_document);
2249
2250var _mejs = _dereq_(7);
2251
2252var _mejs2 = _interopRequireDefault(_mejs);
2253
2254var _i18n = _dereq_(5);
2255
2256var _i18n2 = _interopRequireDefault(_i18n);
2257
2258var _player = _dereq_(16);
2259
2260var _player2 = _interopRequireDefault(_player);
2261
2262var _time = _dereq_(30);
2263
2264var _general = _dereq_(27);
2265
2266var _dom = _dereq_(26);
2267
2268function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2269
2270Object.assign(_player.config, {
2271 startLanguage: '',
2272
2273 tracksText: null,
2274
2275 chaptersText: null,
2276
2277 tracksAriaLive: false,
2278
2279 hideCaptionsButtonWhenEmpty: true,
2280
2281 toggleCaptionsButtonWhenOnlyOne: false,
2282
2283 slidesSelector: ''
2284});
2285
2286Object.assign(_player2.default.prototype, {
2287 hasChapters: false,
2288
2289 buildtracks: function buildtracks(player, controls, layers, media) {
2290
2291 this.findTracks();
2292
2293 if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2294 return;
2295 }
2296
2297 var t = this,
2298 attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2299 tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2300 chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2301 total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2302
2303 if (t.domNode.textTracks) {
2304 for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2305 t.domNode.textTracks[i].mode = 'hidden';
2306 }
2307 }
2308
2309 t.cleartracks(player);
2310
2311 player.captions = _document2.default.createElement('div');
2312 player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2313 player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2314 player.captions.style.display = 'none';
2315 layers.insertBefore(player.captions, layers.firstChild);
2316
2317 player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2318
2319 player.captionsButton = _document2.default.createElement('div');
2320 player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2321 player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2322
2323 t.addControlElement(player.captionsButton, 'tracks');
2324
2325 player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2326
2327 player.chaptersButton = _document2.default.createElement('div');
2328 player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2329 player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2330
2331 var subtitleCount = 0;
2332
2333 for (var _i = 0; _i < total; _i++) {
2334 var kind = player.tracks[_i].kind,
2335 src = player.tracks[_i].src;
2336 if (src.trim()) {
2337 if (kind === 'subtitles' || kind === 'captions') {
2338 subtitleCount++;
2339 } else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2340 player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2341 }
2342 }
2343 }
2344
2345 player.trackToLoad = -1;
2346 player.selectedTrack = null;
2347 player.isLoadingTrack = false;
2348
2349 for (var _i2 = 0; _i2 < total; _i2++) {
2350 var _kind = player.tracks[_i2].kind;
2351 if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2352 player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2353 }
2354 }
2355
2356 player.loadNextTrack();
2357
2358 var inEvents = ['mouseenter', 'focusin'],
2359 outEvents = ['mouseleave', 'focusout'];
2360
2361 if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2362 player.captionsButton.addEventListener('click', function (e) {
2363 var trackId = 'none';
2364 if (player.selectedTrack === null) {
2365 trackId = player.tracks[0].trackId;
2366 }
2367 var keyboard = e.keyCode || e.which;
2368 player.setTrack(trackId, typeof keyboard !== 'undefined');
2369 });
2370 } else {
2371 var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2372 captions = player.captionsButton.querySelectorAll('input[type=radio]');
2373
2374 for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2375 player.captionsButton.addEventListener(inEvents[_i3], function () {
2376 (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2377 });
2378 }
2379
2380 for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2381 player.captionsButton.addEventListener(outEvents[_i4], function () {
2382 (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2383 });
2384 }
2385
2386 for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2387 captions[_i5].addEventListener('click', function (e) {
2388 var keyboard = e.keyCode || e.which;
2389 player.setTrack(this.value, typeof keyboard !== 'undefined');
2390 });
2391 }
2392
2393 for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2394 labels[_i6].addEventListener('click', function (e) {
2395 var radio = (0, _dom.siblings)(this, function (el) {
2396 return el.tagName === 'INPUT';
2397 })[0],
2398 event = (0, _general.createEvent)('click', radio);
2399 radio.dispatchEvent(event);
2400 e.preventDefault();
2401 });
2402 }
2403
2404 player.captionsButton.addEventListener('keydown', function (e) {
2405 e.stopPropagation();
2406 });
2407 }
2408
2409 for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2410 player.chaptersButton.addEventListener(inEvents[_i7], function () {
2411 if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2412 (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2413 }
2414 });
2415 }
2416
2417 for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2418 player.chaptersButton.addEventListener(outEvents[_i8], function () {
2419 (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2420 });
2421 }
2422
2423 player.chaptersButton.addEventListener('keydown', function (e) {
2424 e.stopPropagation();
2425 });
2426
2427 if (!player.options.alwaysShowControls) {
2428 player.getElement(player.container).addEventListener('controlsshown', function () {
2429 (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2430 });
2431
2432 player.getElement(player.container).addEventListener('controlshidden', function () {
2433 if (!media.paused) {
2434 (0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2435 }
2436 });
2437 } else {
2438 (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2439 }
2440
2441 media.addEventListener('timeupdate', function () {
2442 player.displayCaptions();
2443 });
2444
2445 if (player.options.slidesSelector !== '') {
2446 player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2447
2448 media.addEventListener('timeupdate', function () {
2449 player.displaySlides();
2450 });
2451 }
2452 },
2453 cleartracks: function cleartracks(player) {
2454 if (player) {
2455 if (player.captions) {
2456 player.captions.remove();
2457 }
2458 if (player.chapters) {
2459 player.chapters.remove();
2460 }
2461 if (player.captionsText) {
2462 player.captionsText.remove();
2463 }
2464 if (player.captionsButton) {
2465 player.captionsButton.remove();
2466 }
2467 if (player.chaptersButton) {
2468 player.chaptersButton.remove();
2469 }
2470 }
2471 },
2472 rebuildtracks: function rebuildtracks() {
2473 var t = this;
2474 t.findTracks();
2475 t.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
2476 },
2477 findTracks: function findTracks() {
2478 var t = this,
2479 tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2480 total = tracktags.length;
2481
2482 t.tracks = [];
2483 for (var i = 0; i < total; i++) {
2484 var track = tracktags[i],
2485 srclang = track.getAttribute('srclang').toLowerCase() || '',
2486 trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2487 t.tracks.push({
2488 trackId: trackId,
2489 srclang: srclang,
2490 src: track.getAttribute('src'),
2491 kind: track.getAttribute('kind'),
2492 label: track.getAttribute('label') || '',
2493 entries: [],
2494 isLoaded: false
2495 });
2496 }
2497 },
2498 setTrack: function setTrack(trackId, setByKeyboard) {
2499
2500 var t = this,
2501 radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2502 captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2503 track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2504
2505 for (var i = 0, total = radios.length; i < total; i++) {
2506 radios[i].checked = false;
2507 }
2508
2509 for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2510 (0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2511 }
2512
2513 track.checked = true;
2514 var labels = (0, _dom.siblings)(track, function (el) {
2515 return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2516 });
2517 for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2518 (0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2519 }
2520
2521 if (trackId === 'none') {
2522 t.selectedTrack = null;
2523 (0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2524 } else {
2525 for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2526 var _track = t.tracks[_i11];
2527 if (_track.trackId === trackId) {
2528 if (t.selectedTrack === null) {
2529 (0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2530 }
2531 t.selectedTrack = _track;
2532 t.captions.setAttribute('lang', t.selectedTrack.srclang);
2533 t.displayCaptions();
2534 break;
2535 }
2536 }
2537 }
2538
2539 var event = (0, _general.createEvent)('captionschange', t.media);
2540 event.detail.caption = t.selectedTrack;
2541 t.media.dispatchEvent(event);
2542
2543 if (!setByKeyboard) {
2544 setTimeout(function () {
2545 t.getElement(t.container).focus();
2546 }, 500);
2547 }
2548 },
2549 loadNextTrack: function loadNextTrack() {
2550 var t = this;
2551
2552 t.trackToLoad++;
2553 if (t.trackToLoad < t.tracks.length) {
2554 t.isLoadingTrack = true;
2555 t.loadTrack(t.trackToLoad);
2556 } else {
2557 t.isLoadingTrack = false;
2558 t.checkForTracks();
2559 }
2560 },
2561 loadTrack: function loadTrack(index) {
2562 var t = this,
2563 track = t.tracks[index];
2564
2565 if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2566 (0, _dom.ajax)(track.src, 'text', function (d) {
2567 track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2568
2569 track.isLoaded = true;
2570 t.enableTrackButton(track);
2571 t.loadNextTrack();
2572
2573 if (track.kind === 'slides') {
2574 t.setupSlides(track);
2575 } else if (track.kind === 'chapters' && !t.hasChapters) {
2576 t.drawChapters(track);
2577 t.hasChapters = true;
2578 }
2579 }, function () {
2580 t.removeTrackButton(track.trackId);
2581 t.loadNextTrack();
2582 });
2583 }
2584 },
2585 enableTrackButton: function enableTrackButton(track) {
2586 var t = this,
2587 lang = track.srclang,
2588 target = _document2.default.getElementById('' + track.trackId);
2589
2590 if (!target) {
2591 return;
2592 }
2593
2594 var label = track.label;
2595
2596 if (label === '') {
2597 label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2598 }
2599 target.disabled = false;
2600 var targetSiblings = (0, _dom.siblings)(target, function (el) {
2601 return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2602 });
2603 for (var i = 0, total = targetSiblings.length; i < total; i++) {
2604 targetSiblings[i].innerHTML = label;
2605 }
2606
2607 if (t.options.startLanguage === lang) {
2608 target.checked = true;
2609 var event = (0, _general.createEvent)('click', target);
2610 target.dispatchEvent(event);
2611 }
2612 },
2613 removeTrackButton: function removeTrackButton(trackId) {
2614 var element = _document2.default.getElementById('' + trackId);
2615 if (element) {
2616 var button = element.closest('li');
2617 if (button) {
2618 button.remove();
2619 }
2620 }
2621 },
2622 addTrackButton: function addTrackButton(trackId, lang, label) {
2623 var t = this;
2624 if (label === '') {
2625 label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2626 }
2627
2628 t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2629 },
2630 checkForTracks: function checkForTracks() {
2631 var t = this;
2632
2633 var hasSubtitles = false;
2634
2635 if (t.options.hideCaptionsButtonWhenEmpty) {
2636 for (var i = 0, total = t.tracks.length; i < total; i++) {
2637 var kind = t.tracks[i].kind;
2638 if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2639 hasSubtitles = true;
2640 break;
2641 }
2642 }
2643
2644 t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2645 t.setControlsSize();
2646 }
2647 },
2648 displayCaptions: function displayCaptions() {
2649 if (this.tracks === undefined) {
2650 return;
2651 }
2652
2653 var t = this,
2654 track = t.selectedTrack,
2655 sanitize = function sanitize(html) {
2656 var div = _document2.default.createElement('div');
2657 div.innerHTML = html;
2658
2659 var scripts = div.getElementsByTagName('script');
2660 var i = scripts.length;
2661 while (i--) {
2662 scripts[i].remove();
2663 }
2664
2665 var allElements = div.getElementsByTagName('*');
2666 for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2667 var attributesObj = allElements[_i12].attributes,
2668 attributes = Array.prototype.slice.call(attributesObj);
2669
2670 for (var j = 0, total = attributes.length; j < total; j++) {
2671 if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2672 allElements[_i12].remove();
2673 } else if (attributes[j].name === 'style') {
2674 allElements[_i12].removeAttribute(attributes[j].name);
2675 }
2676 }
2677 }
2678 return div.innerHTML;
2679 };
2680
2681 if (track !== null && track.isLoaded) {
2682 var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2683 if (i > -1) {
2684 var text = track.entries[i].text;
2685 if (typeof t.options.captionTextPreprocessor === 'function') text = t.options.captionTextPreprocessor(text);
2686 t.captionsText.innerHTML = sanitize(text);
2687 t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2688 t.captions.style.display = '';
2689 t.captions.style.height = '0px';
2690 return;
2691 }
2692 t.captions.style.display = 'none';
2693 } else {
2694 t.captions.style.display = 'none';
2695 }
2696 },
2697 setupSlides: function setupSlides(track) {
2698 var t = this;
2699 t.slides = track;
2700 t.slides.entries.imgs = [t.slides.entries.length];
2701 t.showSlide(0);
2702 },
2703 showSlide: function showSlide(index) {
2704 var _this = this;
2705
2706 var t = this;
2707
2708 if (t.tracks === undefined || t.slidesContainer === undefined) {
2709 return;
2710 }
2711
2712 var url = t.slides.entries[index].text;
2713
2714 var img = t.slides.entries[index].imgs;
2715
2716 if (img === undefined || img.fadeIn === undefined) {
2717 var image = _document2.default.createElement('img');
2718 image.src = url;
2719 image.addEventListener('load', function () {
2720 var self = _this,
2721 visible = (0, _dom.siblings)(self, function (el) {
2722 return visible(el);
2723 });
2724 self.style.display = 'none';
2725 t.slidesContainer.innerHTML += self.innerHTML;
2726 (0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2727 for (var i = 0, total = visible.length; i < total; i++) {
2728 (0, _dom.fadeOut)(visible[i], 400);
2729 }
2730 });
2731 t.slides.entries[index].imgs = img = image;
2732 } else if (!(0, _dom.visible)(img)) {
2733 var _visible = (0, _dom.siblings)(self, function (el) {
2734 return _visible(el);
2735 });
2736 (0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2737 for (var i = 0, total = _visible.length; i < total; i++) {
2738 (0, _dom.fadeOut)(_visible[i]);
2739 }
2740 }
2741 },
2742 displaySlides: function displaySlides() {
2743 var t = this;
2744
2745 if (this.slides === undefined) {
2746 return;
2747 }
2748
2749 var slides = t.slides,
2750 i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2751
2752 if (i > -1) {
2753 t.showSlide(i);
2754 }
2755 },
2756 drawChapters: function drawChapters(chapters) {
2757 var t = this,
2758 total = chapters.entries.length;
2759
2760 if (!total) {
2761 return;
2762 }
2763
2764 t.chaptersButton.querySelector('ul').innerHTML = '';
2765
2766 for (var i = 0; i < total; i++) {
2767 t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2768 }
2769
2770 var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2771 labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2772
2773 for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2774 radios[_i13].disabled = false;
2775 radios[_i13].checked = false;
2776 radios[_i13].addEventListener('click', function (e) {
2777 var self = this,
2778 listItems = t.chaptersButton.querySelectorAll('li'),
2779 label = (0, _dom.siblings)(self, function (el) {
2780 return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2781 })[0];
2782
2783 self.checked = true;
2784 self.parentNode.setAttribute('aria-checked', true);
2785 (0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2786 (0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2787
2788 for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2789 listItems[_i14].setAttribute('aria-checked', false);
2790 }
2791
2792 var keyboard = e.keyCode || e.which;
2793 if (typeof keyboard === 'undefined') {
2794 setTimeout(function () {
2795 t.getElement(t.container).focus();
2796 }, 500);
2797 }
2798
2799 t.media.setCurrentTime(parseFloat(self.value));
2800 if (t.media.paused) {
2801 t.media.play();
2802 }
2803 });
2804 }
2805
2806 for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2807 labels[_i15].addEventListener('click', function (e) {
2808 var radio = (0, _dom.siblings)(this, function (el) {
2809 return el.tagName === 'INPUT';
2810 })[0],
2811 event = (0, _general.createEvent)('click', radio);
2812 radio.dispatchEvent(event);
2813 e.preventDefault();
2814 });
2815 }
2816 },
2817 searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2818 var lo = 0,
2819 hi = tracks.length - 1,
2820 mid = void 0,
2821 start = void 0,
2822 stop = void 0;
2823
2824 while (lo <= hi) {
2825 mid = lo + hi >> 1;
2826 start = tracks[mid].start;
2827 stop = tracks[mid].stop;
2828
2829 if (currentTime >= start && currentTime < stop) {
2830 return mid;
2831 } else if (start < currentTime) {
2832 lo = mid + 1;
2833 } else if (start > currentTime) {
2834 hi = mid - 1;
2835 }
2836 }
2837
2838 return -1;
2839 }
2840});
2841
2842_mejs2.default.language = {
2843 codes: {
2844 af: 'mejs.afrikaans',
2845 sq: 'mejs.albanian',
2846 ar: 'mejs.arabic',
2847 be: 'mejs.belarusian',
2848 bg: 'mejs.bulgarian',
2849 ca: 'mejs.catalan',
2850 zh: 'mejs.chinese',
2851 'zh-cn': 'mejs.chinese-simplified',
2852 'zh-tw': 'mejs.chines-traditional',
2853 hr: 'mejs.croatian',
2854 cs: 'mejs.czech',
2855 da: 'mejs.danish',
2856 nl: 'mejs.dutch',
2857 en: 'mejs.english',
2858 et: 'mejs.estonian',
2859 fl: 'mejs.filipino',
2860 fi: 'mejs.finnish',
2861 fr: 'mejs.french',
2862 gl: 'mejs.galician',
2863 de: 'mejs.german',
2864 el: 'mejs.greek',
2865 ht: 'mejs.haitian-creole',
2866 iw: 'mejs.hebrew',
2867 hi: 'mejs.hindi',
2868 hu: 'mejs.hungarian',
2869 is: 'mejs.icelandic',
2870 id: 'mejs.indonesian',
2871 ga: 'mejs.irish',
2872 it: 'mejs.italian',
2873 ja: 'mejs.japanese',
2874 ko: 'mejs.korean',
2875 lv: 'mejs.latvian',
2876 lt: 'mejs.lithuanian',
2877 mk: 'mejs.macedonian',
2878 ms: 'mejs.malay',
2879 mt: 'mejs.maltese',
2880 no: 'mejs.norwegian',
2881 fa: 'mejs.persian',
2882 pl: 'mejs.polish',
2883 pt: 'mejs.portuguese',
2884 ro: 'mejs.romanian',
2885 ru: 'mejs.russian',
2886 sr: 'mejs.serbian',
2887 sk: 'mejs.slovak',
2888 sl: 'mejs.slovenian',
2889 es: 'mejs.spanish',
2890 sw: 'mejs.swahili',
2891 sv: 'mejs.swedish',
2892 tl: 'mejs.tagalog',
2893 th: 'mejs.thai',
2894 tr: 'mejs.turkish',
2895 uk: 'mejs.ukrainian',
2896 vi: 'mejs.vietnamese',
2897 cy: 'mejs.welsh',
2898 yi: 'mejs.yiddish'
2899 }
2900};
2901
2902_mejs2.default.TrackFormatParser = {
2903 webvtt: {
2904 pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2905
2906 parse: function parse(trackText) {
2907 var lines = trackText.split(/\r?\n/),
2908 entries = [];
2909
2910 var timecode = void 0,
2911 text = void 0,
2912 identifier = void 0;
2913
2914 for (var i = 0, total = lines.length; i < total; i++) {
2915 timecode = this.pattern.exec(lines[i]);
2916
2917 if (timecode && i < lines.length) {
2918 if (i - 1 >= 0 && lines[i - 1] !== '') {
2919 identifier = lines[i - 1];
2920 }
2921 i++;
2922
2923 text = lines[i];
2924 i++;
2925 while (lines[i] !== '' && i < lines.length) {
2926 text = text + '\n' + lines[i];
2927 i++;
2928 }
2929 text = text === null ? '' : text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2930 entries.push({
2931 identifier: identifier,
2932 start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2933 stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2934 text: text,
2935 settings: timecode[5]
2936 });
2937 }
2938 identifier = '';
2939 }
2940 return entries;
2941 }
2942 },
2943
2944 dfxp: {
2945 parse: function parse(trackText) {
2946 var trackElem = _document2.default.adoptNode(new DOMParser().parseFromString(trackText, 'application/xml').documentElement),
2947 container = trackElem.querySelector('div'),
2948 lines = container.querySelectorAll('p'),
2949 styleNode = _document2.default.getElementById(container.getAttribute('style')),
2950 entries = [];
2951
2952 var styles = void 0;
2953
2954 if (styleNode) {
2955 styleNode.removeAttribute('id');
2956 var attributes = styleNode.attributes;
2957 if (attributes.length) {
2958 styles = {};
2959 for (var i = 0, total = attributes.length; i < total; i++) {
2960 styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2961 }
2962 }
2963 }
2964
2965 for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2966 var style = void 0,
2967 _temp = {
2968 start: null,
2969 stop: null,
2970 style: null,
2971 text: null
2972 };
2973
2974 if (lines[_i16].getAttribute('begin')) {
2975 _temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('begin'));
2976 }
2977 if (!_temp.start && lines[_i16 - 1].getAttribute('end')) {
2978 _temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16 - 1].getAttribute('end'));
2979 }
2980 if (lines[_i16].getAttribute('end')) {
2981 _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('end'));
2982 }
2983 if (!_temp.stop && lines[_i16 + 1].getAttribute('begin')) {
2984 _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16 + 1].getAttribute('begin'));
2985 }
2986
2987 if (styles) {
2988 style = '';
2989 for (var _style in styles) {
2990 style += _style + ': ' + styles[_style] + ';';
2991 }
2992 }
2993 if (style) {
2994 _temp.style = style;
2995 }
2996 if (_temp.start === 0) {
2997 _temp.start = 0.200;
2998 }
2999 _temp.text = lines[_i16].innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
3000 entries.push(_temp);
3001 }
3002 return entries;
3003 }
3004 }
3005};
3006
3007},{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){
3008'use strict';
3009
3010var _document = _dereq_(2);
3011
3012var _document2 = _interopRequireDefault(_document);
3013
3014var _player = _dereq_(16);
3015
3016var _player2 = _interopRequireDefault(_player);
3017
3018var _i18n = _dereq_(5);
3019
3020var _i18n2 = _interopRequireDefault(_i18n);
3021
3022var _constants = _dereq_(25);
3023
3024var _general = _dereq_(27);
3025
3026var _dom = _dereq_(26);
3027
3028function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3029
3030Object.assign(_player.config, {
3031 muteText: null,
3032
3033 unmuteText: null,
3034
3035 allyVolumeControlText: null,
3036
3037 hideVolumeOnTouchDevices: true,
3038
3039 audioVolume: 'horizontal',
3040
3041 videoVolume: 'vertical',
3042
3043 startVolume: 0.8
3044});
3045
3046Object.assign(_player2.default.prototype, {
3047 buildvolume: function buildvolume(player, controls, layers, media) {
3048 if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
3049 return;
3050 }
3051
3052 var t = this,
3053 mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
3054 muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
3055 unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
3056 volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
3057 mute = _document2.default.createElement('div');
3058
3059 mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
3060 mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
3061
3062 t.addControlElement(mute, 'volume');
3063
3064 t.options.keyActions.push({
3065 keys: [38],
3066 action: function action(player) {
3067 var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3068 if (volumeSlider && volumeSlider.matches(':focus')) {
3069 volumeSlider.style.display = 'block';
3070 }
3071 if (player.isVideo) {
3072 player.showControls();
3073 player.startControlsTimer();
3074 }
3075
3076 var newVolume = Math.min(player.volume + 0.1, 1);
3077 player.setVolume(newVolume);
3078 if (newVolume > 0) {
3079 player.setMuted(false);
3080 }
3081 }
3082 }, {
3083 keys: [40],
3084 action: function action(player) {
3085 var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3086 if (volumeSlider) {
3087 volumeSlider.style.display = 'block';
3088 }
3089
3090 if (player.isVideo) {
3091 player.showControls();
3092 player.startControlsTimer();
3093 }
3094
3095 var newVolume = Math.max(player.volume - 0.1, 0);
3096 player.setVolume(newVolume);
3097
3098 if (newVolume <= 0.1) {
3099 player.setMuted(true);
3100 }
3101 }
3102 }, {
3103 keys: [77],
3104 action: function action(player) {
3105 var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3106 if (volumeSlider) {
3107 volumeSlider.style.display = 'block';
3108 }
3109
3110 if (player.isVideo) {
3111 player.showControls();
3112 player.startControlsTimer();
3113 }
3114 if (player.media.muted) {
3115 player.setMuted(false);
3116 } else {
3117 player.setMuted(true);
3118 }
3119 }
3120 });
3121
3122 if (mode === 'horizontal') {
3123 var anchor = _document2.default.createElement('a');
3124 anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3125 anchor.href = 'javascript:void(0);';
3126 anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3127 anchor.setAttribute('aria-valuemin', 0);
3128 anchor.setAttribute('aria-valuemax', 100);
3129 anchor.setAttribute('aria-valuenow', 100);
3130 anchor.setAttribute('role', 'slider');
3131 anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3132 mute.parentNode.insertBefore(anchor, mute.nextSibling);
3133 }
3134
3135 var mouseIsDown = false,
3136 mouseIsOver = false,
3137 modified = false,
3138 updateVolumeSlider = function updateVolumeSlider() {
3139 var volume = Math.floor(media.volume * 100);
3140 volumeSlider.setAttribute('aria-valuenow', volume);
3141 volumeSlider.setAttribute('aria-valuetext', volume + '%');
3142 };
3143
3144 var volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3145 volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3146 volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3147 volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3148 positionVolumeHandle = function positionVolumeHandle(volume) {
3149
3150 if (volume === null || isNaN(volume) || volume === undefined) {
3151 return;
3152 }
3153
3154 volume = Math.max(0, volume);
3155 volume = Math.min(volume, 1);
3156
3157 if (volume === 0) {
3158 (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3159 (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3160 var button = mute.firstElementChild;
3161 button.setAttribute('title', unmuteText);
3162 button.setAttribute('aria-label', unmuteText);
3163 } else {
3164 (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3165 (0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3166 var _button = mute.firstElementChild;
3167 _button.setAttribute('title', muteText);
3168 _button.setAttribute('aria-label', muteText);
3169 }
3170
3171 var volumePercentage = volume * 100 + '%',
3172 volumeStyles = getComputedStyle(volumeHandle);
3173
3174 if (mode === 'vertical') {
3175 volumeCurrent.style.bottom = 0;
3176 volumeCurrent.style.height = volumePercentage;
3177 volumeHandle.style.bottom = volumePercentage;
3178 volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3179 } else {
3180 volumeCurrent.style.left = 0;
3181 volumeCurrent.style.width = volumePercentage;
3182 volumeHandle.style.left = volumePercentage;
3183 volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3184 }
3185 },
3186 handleVolumeMove = function handleVolumeMove(e) {
3187 var totalOffset = (0, _dom.offset)(volumeTotal),
3188 volumeStyles = getComputedStyle(volumeTotal);
3189
3190 modified = true;
3191
3192 var volume = null;
3193
3194 if (mode === 'vertical') {
3195 var railHeight = parseFloat(volumeStyles.height),
3196 newY = e.pageY - totalOffset.top;
3197
3198 volume = (railHeight - newY) / railHeight;
3199
3200 if (totalOffset.top === 0 || totalOffset.left === 0) {
3201 return;
3202 }
3203 } else {
3204 var railWidth = parseFloat(volumeStyles.width),
3205 newX = e.pageX - totalOffset.left;
3206
3207 volume = newX / railWidth;
3208 }
3209
3210 volume = Math.max(0, volume);
3211 volume = Math.min(volume, 1);
3212
3213 positionVolumeHandle(volume);
3214
3215 t.setMuted(volume === 0);
3216 t.setVolume(volume);
3217
3218 e.preventDefault();
3219 e.stopPropagation();
3220 },
3221 toggleMute = function toggleMute() {
3222 if (t.muted) {
3223 positionVolumeHandle(0);
3224 (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3225 (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3226 } else {
3227
3228 positionVolumeHandle(media.volume);
3229 (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3230 (0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3231 }
3232 };
3233
3234 player.getElement(player.container).addEventListener('keydown', function (e) {
3235 var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3236 if (!hasFocus && mode === 'vertical') {
3237 volumeSlider.style.display = 'none';
3238 }
3239 });
3240
3241 mute.addEventListener('mouseenter', function (e) {
3242 if (e.target === mute) {
3243 volumeSlider.style.display = 'block';
3244 mouseIsOver = true;
3245 e.preventDefault();
3246 e.stopPropagation();
3247 }
3248 });
3249 mute.addEventListener('focusin', function () {
3250 volumeSlider.style.display = 'block';
3251 mouseIsOver = true;
3252 });
3253
3254 mute.addEventListener('focusout', function (e) {
3255 if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3256 volumeSlider.style.display = 'none';
3257 }
3258 });
3259 mute.addEventListener('mouseleave', function () {
3260 mouseIsOver = false;
3261 if (!mouseIsDown && mode === 'vertical') {
3262 volumeSlider.style.display = 'none';
3263 }
3264 });
3265 mute.addEventListener('focusout', function () {
3266 mouseIsOver = false;
3267 });
3268 mute.addEventListener('keydown', function (e) {
3269 if (t.options.enableKeyboard && t.options.keyActions.length) {
3270 var keyCode = e.which || e.keyCode || 0,
3271 volume = media.volume;
3272
3273 switch (keyCode) {
3274 case 38:
3275 volume = Math.min(volume + 0.1, 1);
3276 break;
3277 case 40:
3278 volume = Math.max(0, volume - 0.1);
3279 break;
3280 default:
3281 return true;
3282 }
3283
3284 mouseIsDown = false;
3285 positionVolumeHandle(volume);
3286 media.setVolume(volume);
3287
3288 e.preventDefault();
3289 e.stopPropagation();
3290 }
3291 });
3292 mute.querySelector('button').addEventListener('click', function () {
3293 media.setMuted(!media.muted);
3294 var event = (0, _general.createEvent)('volumechange', media);
3295 media.dispatchEvent(event);
3296 });
3297
3298 volumeSlider.addEventListener('dragstart', function () {
3299 return false;
3300 });
3301
3302 volumeSlider.addEventListener('mouseover', function () {
3303 mouseIsOver = true;
3304 });
3305 volumeSlider.addEventListener('focusin', function () {
3306 volumeSlider.style.display = 'block';
3307 mouseIsOver = true;
3308 });
3309 volumeSlider.addEventListener('focusout', function () {
3310 mouseIsOver = false;
3311 if (!mouseIsDown && mode === 'vertical') {
3312 volumeSlider.style.display = 'none';
3313 }
3314 });
3315 volumeSlider.addEventListener('mousedown', function (e) {
3316 handleVolumeMove(e);
3317 t.globalBind('mousemove.vol', function (event) {
3318 var target = event.target;
3319 if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3320 handleVolumeMove(event);
3321 }
3322 });
3323 t.globalBind('mouseup.vol', function () {
3324 mouseIsDown = false;
3325 if (!mouseIsOver && mode === 'vertical') {
3326 volumeSlider.style.display = 'none';
3327 }
3328 });
3329 mouseIsDown = true;
3330 e.preventDefault();
3331 e.stopPropagation();
3332 });
3333
3334 media.addEventListener('volumechange', function (e) {
3335 if (!mouseIsDown) {
3336 toggleMute();
3337 }
3338 updateVolumeSlider(e);
3339 });
3340
3341 var rendered = false;
3342 media.addEventListener('rendererready', function () {
3343 if (!modified) {
3344 setTimeout(function () {
3345 rendered = true;
3346 if (player.options.startVolume === 0 || media.originalNode.muted) {
3347 media.setMuted(true);
3348 }
3349 media.setVolume(player.options.startVolume);
3350 t.setControlsSize();
3351 }, 250);
3352 }
3353 });
3354
3355 media.addEventListener('loadedmetadata', function () {
3356 setTimeout(function () {
3357 if (!modified && !rendered) {
3358 if (player.options.startVolume === 0 || media.originalNode.muted) {
3359 media.setMuted(true);
3360 }
3361 if (player.options.startVolume === 0) {
3362 player.options.startVolume = 0;
3363 }
3364 media.setVolume(player.options.startVolume);
3365 t.setControlsSize();
3366 }
3367 rendered = false;
3368 }, 250);
3369 });
3370
3371 if (player.options.startVolume === 0 || media.originalNode.muted) {
3372 media.setMuted(true);
3373 if (player.options.startVolume === 0) {
3374 player.options.startVolume = 0;
3375 }
3376 toggleMute();
3377 }
3378
3379 t.getElement(t.container).addEventListener('controlsresize', function () {
3380 toggleMute();
3381 });
3382 }
3383});
3384
3385},{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){
3386'use strict';
3387
3388Object.defineProperty(exports, "__esModule", {
3389 value: true
3390});
3391var EN = exports.EN = {
3392 'mejs.plural-form': 1,
3393
3394 'mejs.download-file': 'Download File',
3395
3396 '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/',
3397
3398 'mejs.fullscreen': 'Fullscreen',
3399
3400 'mejs.play': 'Play',
3401 'mejs.pause': 'Pause',
3402
3403 'mejs.time-slider': 'Time Slider',
3404 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3405 'mejs.live-broadcast': 'Live Broadcast',
3406
3407 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3408 'mejs.unmute': 'Unmute',
3409 'mejs.mute': 'Mute',
3410 'mejs.volume-slider': 'Volume Slider',
3411
3412 'mejs.video-player': 'Video Player',
3413 'mejs.audio-player': 'Audio Player',
3414
3415 'mejs.captions-subtitles': 'Captions/Subtitles',
3416 'mejs.captions-chapters': 'Chapters',
3417 'mejs.none': 'None',
3418 'mejs.afrikaans': 'Afrikaans',
3419 'mejs.albanian': 'Albanian',
3420 'mejs.arabic': 'Arabic',
3421 'mejs.belarusian': 'Belarusian',
3422 'mejs.bulgarian': 'Bulgarian',
3423 'mejs.catalan': 'Catalan',
3424 'mejs.chinese': 'Chinese',
3425 'mejs.chinese-simplified': 'Chinese (Simplified)',
3426 'mejs.chinese-traditional': 'Chinese (Traditional)',
3427 'mejs.croatian': 'Croatian',
3428 'mejs.czech': 'Czech',
3429 'mejs.danish': 'Danish',
3430 'mejs.dutch': 'Dutch',
3431 'mejs.english': 'English',
3432 'mejs.estonian': 'Estonian',
3433 'mejs.filipino': 'Filipino',
3434 'mejs.finnish': 'Finnish',
3435 'mejs.french': 'French',
3436 'mejs.galician': 'Galician',
3437 'mejs.german': 'German',
3438 'mejs.greek': 'Greek',
3439 'mejs.haitian-creole': 'Haitian Creole',
3440 'mejs.hebrew': 'Hebrew',
3441 'mejs.hindi': 'Hindi',
3442 'mejs.hungarian': 'Hungarian',
3443 'mejs.icelandic': 'Icelandic',
3444 'mejs.indonesian': 'Indonesian',
3445 'mejs.irish': 'Irish',
3446 'mejs.italian': 'Italian',
3447 'mejs.japanese': 'Japanese',
3448 'mejs.korean': 'Korean',
3449 'mejs.latvian': 'Latvian',
3450 'mejs.lithuanian': 'Lithuanian',
3451 'mejs.macedonian': 'Macedonian',
3452 'mejs.malay': 'Malay',
3453 'mejs.maltese': 'Maltese',
3454 'mejs.norwegian': 'Norwegian',
3455 'mejs.persian': 'Persian',
3456 'mejs.polish': 'Polish',
3457 'mejs.portuguese': 'Portuguese',
3458 'mejs.romanian': 'Romanian',
3459 'mejs.russian': 'Russian',
3460 'mejs.serbian': 'Serbian',
3461 'mejs.slovak': 'Slovak',
3462 'mejs.slovenian': 'Slovenian',
3463 'mejs.spanish': 'Spanish',
3464 'mejs.swahili': 'Swahili',
3465 'mejs.swedish': 'Swedish',
3466 'mejs.tagalog': 'Tagalog',
3467 'mejs.thai': 'Thai',
3468 'mejs.turkish': 'Turkish',
3469 'mejs.ukrainian': 'Ukrainian',
3470 'mejs.vietnamese': 'Vietnamese',
3471 'mejs.welsh': 'Welsh',
3472 'mejs.yiddish': 'Yiddish'
3473};
3474
3475},{}],16:[function(_dereq_,module,exports){
3476'use strict';
3477
3478Object.defineProperty(exports, "__esModule", {
3479 value: true
3480});
3481exports.config = undefined;
3482
3483var _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; };
3484
3485var _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; }; }();
3486
3487var _window = _dereq_(3);
3488
3489var _window2 = _interopRequireDefault(_window);
3490
3491var _document = _dereq_(2);
3492
3493var _document2 = _interopRequireDefault(_document);
3494
3495var _mejs = _dereq_(7);
3496
3497var _mejs2 = _interopRequireDefault(_mejs);
3498
3499var _mediaelement = _dereq_(6);
3500
3501var _mediaelement2 = _interopRequireDefault(_mediaelement);
3502
3503var _default = _dereq_(17);
3504
3505var _default2 = _interopRequireDefault(_default);
3506
3507var _i18n = _dereq_(5);
3508
3509var _i18n2 = _interopRequireDefault(_i18n);
3510
3511var _constants = _dereq_(25);
3512
3513var _general = _dereq_(27);
3514
3515var _time = _dereq_(30);
3516
3517var _media = _dereq_(28);
3518
3519var _dom = _dereq_(26);
3520
3521var dom = _interopRequireWildcard(_dom);
3522
3523function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3524
3525function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3526
3527function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3528
3529_mejs2.default.mepIndex = 0;
3530
3531_mejs2.default.players = {};
3532
3533var config = exports.config = {
3534 poster: '',
3535
3536 showPosterWhenEnded: false,
3537
3538 showPosterWhenPaused: false,
3539
3540 defaultVideoWidth: 480,
3541
3542 defaultVideoHeight: 270,
3543
3544 videoWidth: -1,
3545
3546 videoHeight: -1,
3547
3548 defaultAudioWidth: 400,
3549
3550 defaultAudioHeight: 40,
3551
3552 defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3553 return media.getDuration() * 0.05;
3554 },
3555
3556 defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3557 return media.getDuration() * 0.05;
3558 },
3559
3560 setDimensions: true,
3561
3562 audioWidth: -1,
3563
3564 audioHeight: -1,
3565
3566 loop: false,
3567
3568 autoRewind: true,
3569
3570 enableAutosize: true,
3571
3572 timeFormat: '',
3573
3574 alwaysShowHours: false,
3575
3576 showTimecodeFrameCount: false,
3577
3578 framesPerSecond: 25,
3579
3580 alwaysShowControls: false,
3581
3582 hideVideoControlsOnLoad: false,
3583
3584 hideVideoControlsOnPause: false,
3585
3586 clickToPlayPause: true,
3587
3588 controlsTimeoutDefault: 1500,
3589
3590 controlsTimeoutMouseEnter: 2500,
3591
3592 controlsTimeoutMouseLeave: 1000,
3593
3594 iPadUseNativeControls: false,
3595
3596 iPhoneUseNativeControls: false,
3597
3598 AndroidUseNativeControls: false,
3599
3600 features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3601
3602 useDefaultControls: false,
3603
3604 isVideo: true,
3605
3606 stretching: 'auto',
3607
3608 classPrefix: 'mejs__',
3609
3610 enableKeyboard: true,
3611
3612 pauseOtherPlayers: true,
3613
3614 secondsDecimalLength: 0,
3615
3616 customError: null,
3617
3618 keyActions: [{
3619 keys: [32, 179],
3620 action: function action(player) {
3621
3622 if (!_constants.IS_FIREFOX) {
3623 if (player.paused || player.ended) {
3624 player.play();
3625 } else {
3626 player.pause();
3627 }
3628 }
3629 }
3630 }]
3631};
3632
3633_mejs2.default.MepDefaults = config;
3634
3635var MediaElementPlayer = function () {
3636 function MediaElementPlayer(node, o) {
3637 _classCallCheck(this, MediaElementPlayer);
3638
3639 var t = this,
3640 element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3641
3642 if (!(t instanceof MediaElementPlayer)) {
3643 return new MediaElementPlayer(element, o);
3644 }
3645
3646 t.node = t.media = element;
3647
3648 if (!t.node) {
3649 return;
3650 }
3651
3652 if (t.media.player) {
3653 return t.media.player;
3654 }
3655
3656 t.hasFocus = false;
3657
3658 t.controlsAreVisible = true;
3659
3660 t.controlsEnabled = true;
3661
3662 t.controlsTimer = null;
3663
3664 t.currentMediaTime = 0;
3665
3666 t.proxy = null;
3667
3668 if (o === undefined) {
3669 var options = t.node.getAttribute('data-mejsoptions');
3670 o = options ? JSON.parse(options) : {};
3671 }
3672
3673 t.options = Object.assign({}, config, o);
3674
3675 if (t.options.loop && !t.media.getAttribute('loop')) {
3676 t.media.loop = true;
3677 t.node.loop = true;
3678 } else if (t.media.loop) {
3679 t.options.loop = true;
3680 }
3681
3682 if (!t.options.timeFormat) {
3683 t.options.timeFormat = 'mm:ss';
3684 if (t.options.alwaysShowHours) {
3685 t.options.timeFormat = 'hh:mm:ss';
3686 }
3687 if (t.options.showTimecodeFrameCount) {
3688 t.options.timeFormat += ':ff';
3689 }
3690 }
3691
3692 (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3693
3694 t.id = 'mep_' + _mejs2.default.mepIndex++;
3695
3696 _mejs2.default.players[t.id] = t;
3697
3698 t.init();
3699
3700 return t;
3701 }
3702
3703 _createClass(MediaElementPlayer, [{
3704 key: 'getElement',
3705 value: function getElement(element) {
3706 return element;
3707 }
3708 }, {
3709 key: 'init',
3710 value: function init() {
3711 var t = this,
3712 playerOptions = Object.assign({}, t.options, {
3713 success: function success(media, domNode) {
3714 t._meReady(media, domNode);
3715 },
3716 error: function error(e) {
3717 t._handleError(e);
3718 }
3719 }),
3720 tagName = t.node.tagName.toLowerCase();
3721
3722 t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3723 t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3724 t.mediaFiles = null;
3725 t.trackFiles = null;
3726
3727 if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3728 t.node.setAttribute('controls', true);
3729
3730 if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3731 t.play();
3732 }
3733 } else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3734 t.node.removeAttribute('controls');
3735 var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3736
3737 var offscreen = _document2.default.createElement('span');
3738 offscreen.className = t.options.classPrefix + 'offscreen';
3739 offscreen.innerText = videoPlayerTitle;
3740 t.media.parentNode.insertBefore(offscreen, t.media);
3741
3742 t.container = _document2.default.createElement('div');
3743 t.getElement(t.container).id = t.id;
3744 t.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3745 t.getElement(t.container).tabIndex = 0;
3746 t.getElement(t.container).setAttribute('role', 'application');
3747 t.getElement(t.container).setAttribute('aria-label', videoPlayerTitle);
3748 t.getElement(t.container).innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3749 t.getElement(t.container).addEventListener('focus', function (e) {
3750 if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3751 t.showControls(true);
3752
3753 var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3754 button = t.getElement(t.container).querySelector(btnSelector);
3755
3756 button.focus();
3757 }
3758 });
3759 t.node.parentNode.insertBefore(t.getElement(t.container), t.node);
3760
3761 if (!t.options.features.length && !t.options.useDefaultControls) {
3762 t.getElement(t.container).style.background = 'transparent';
3763 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3764 }
3765
3766 if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) {
3767 t.outerContainer = t.media.parentNode;
3768
3769 var wrapper = _document2.default.createElement('div');
3770 wrapper.className = t.options.classPrefix + 'fill-container';
3771 t.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container));
3772 wrapper.appendChild(t.getElement(t.container));
3773 }
3774
3775 if (_constants.IS_ANDROID) {
3776 dom.addClass(t.getElement(t.container), t.options.classPrefix + 'android');
3777 }
3778 if (_constants.IS_IOS) {
3779 dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios');
3780 }
3781 if (_constants.IS_IPAD) {
3782 dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad');
3783 }
3784 if (_constants.IS_IPHONE) {
3785 dom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone');
3786 }
3787 dom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3788
3789 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3790
3791 t.media.player = t;
3792
3793 t.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls');
3794 t.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers');
3795
3796 var tagType = t.isVideo ? 'video' : 'audio',
3797 capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3798
3799 if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3800 t.width = t.options[tagType + 'Width'];
3801 } else if (t.node.style.width !== '' && t.node.style.width !== null) {
3802 t.width = t.node.style.width;
3803 } else if (t.node.getAttribute('width')) {
3804 t.width = t.node.getAttribute('width');
3805 } else {
3806 t.width = t.options['default' + capsTagName + 'Width'];
3807 }
3808
3809 if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3810 t.height = t.options[tagType + 'Height'];
3811 } else if (t.node.style.height !== '' && t.node.style.height !== null) {
3812 t.height = t.node.style.height;
3813 } else if (t.node.getAttribute('height')) {
3814 t.height = t.node.getAttribute('height');
3815 } else {
3816 t.height = t.options['default' + capsTagName + 'Height'];
3817 }
3818
3819 t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3820
3821 t.setPlayerSize(t.width, t.height);
3822
3823 playerOptions.pluginWidth = t.width;
3824 playerOptions.pluginHeight = t.height;
3825 } else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3826 t.node.style.display = 'none';
3827 }
3828
3829 _mejs2.default.MepDefaults = playerOptions;
3830
3831 new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3832
3833 if (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3834 var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3835 t.getElement(t.container).dispatchEvent(event);
3836 }
3837 }
3838 }, {
3839 key: 'showControls',
3840 value: function showControls(doAnimation) {
3841 var t = this;
3842
3843 doAnimation = doAnimation === undefined || doAnimation;
3844
3845 if (t.controlsAreVisible || !t.isVideo) {
3846 return;
3847 }
3848
3849 if (doAnimation) {
3850 (function () {
3851 dom.fadeIn(t.getElement(t.controls), 200, function () {
3852 dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3853 var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3854 t.getElement(t.container).dispatchEvent(event);
3855 });
3856
3857 var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3858
3859 var _loop = function _loop(i, total) {
3860 dom.fadeIn(controls[i], 200, function () {
3861 dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3862 });
3863 };
3864
3865 for (var i = 0, total = controls.length; i < total; i++) {
3866 _loop(i, total);
3867 }
3868 })();
3869 } else {
3870 dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3871 t.getElement(t.controls).style.display = '';
3872 t.getElement(t.controls).style.opacity = 1;
3873
3874 var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3875 for (var i = 0, total = controls.length; i < total; i++) {
3876 dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3877 controls[i].style.display = '';
3878 }
3879
3880 var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3881 t.getElement(t.container).dispatchEvent(event);
3882 }
3883
3884 t.controlsAreVisible = true;
3885 t.setControlsSize();
3886 }
3887 }, {
3888 key: 'hideControls',
3889 value: function hideControls(doAnimation, forceHide) {
3890 var t = this;
3891
3892 doAnimation = doAnimation === undefined || doAnimation;
3893
3894 if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3895 return;
3896 }
3897
3898 if (doAnimation) {
3899 (function () {
3900 dom.fadeOut(t.getElement(t.controls), 200, function () {
3901 dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3902 t.getElement(t.controls).style.display = '';
3903 var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3904 t.getElement(t.container).dispatchEvent(event);
3905 });
3906
3907 var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3908
3909 var _loop2 = function _loop2(i, total) {
3910 dom.fadeOut(controls[i], 200, function () {
3911 dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3912 controls[i].style.display = '';
3913 });
3914 };
3915
3916 for (var i = 0, total = controls.length; i < total; i++) {
3917 _loop2(i, total);
3918 }
3919 })();
3920 } else {
3921 dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3922 t.getElement(t.controls).style.display = '';
3923 t.getElement(t.controls).style.opacity = 0;
3924
3925 var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3926 for (var i = 0, total = controls.length; i < total; i++) {
3927 dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3928 controls[i].style.display = '';
3929 }
3930
3931 var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3932 t.getElement(t.container).dispatchEvent(event);
3933 }
3934
3935 t.controlsAreVisible = false;
3936 }
3937 }, {
3938 key: 'startControlsTimer',
3939 value: function startControlsTimer(timeout) {
3940 var t = this;
3941
3942 timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3943
3944 t.killControlsTimer('start');
3945
3946 t.controlsTimer = setTimeout(function () {
3947 t.hideControls();
3948 t.killControlsTimer('hide');
3949 }, timeout);
3950 }
3951 }, {
3952 key: 'killControlsTimer',
3953 value: function killControlsTimer() {
3954 var t = this;
3955
3956 if (t.controlsTimer !== null) {
3957 clearTimeout(t.controlsTimer);
3958 delete t.controlsTimer;
3959 t.controlsTimer = null;
3960 }
3961 }
3962 }, {
3963 key: 'disableControls',
3964 value: function disableControls() {
3965 var t = this;
3966
3967 t.killControlsTimer();
3968 t.controlsEnabled = false;
3969 t.hideControls(false, true);
3970 }
3971 }, {
3972 key: 'enableControls',
3973 value: function enableControls() {
3974 var t = this;
3975
3976 t.controlsEnabled = true;
3977 t.showControls(false);
3978 }
3979 }, {
3980 key: '_setDefaultPlayer',
3981 value: function _setDefaultPlayer() {
3982 var t = this;
3983 if (t.proxy) {
3984 t.proxy.pause();
3985 }
3986 t.proxy = new _default2.default(t);
3987 t.media.addEventListener('loadedmetadata', function () {
3988 if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3989 t.setCurrentTime(t.currentMediaTime);
3990 if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3991 t.play();
3992 }
3993 }
3994 });
3995 }
3996 }, {
3997 key: '_meReady',
3998 value: function _meReady(media, domNode) {
3999 var t = this,
4000 autoplayAttr = domNode.getAttribute('autoplay'),
4001 autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
4002 isNative = media.rendererName !== null && /(native|html5)/i.test(media.rendererName);
4003
4004 if (t.getElement(t.controls)) {
4005 t.enableControls();
4006 }
4007
4008 if (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) {
4009 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
4010 }
4011
4012 if (t.created) {
4013 return;
4014 }
4015
4016 t.created = true;
4017 t.media = media;
4018 t.domNode = domNode;
4019
4020 if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
4021 if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
4022 if (autoplay && isNative) {
4023 t.play();
4024 }
4025
4026 if (t.options.success) {
4027
4028 if (typeof t.options.success === 'string') {
4029 _window2.default[t.options.success](t.media, t.domNode, t);
4030 } else {
4031 t.options.success(t.media, t.domNode, t);
4032 }
4033 }
4034
4035 return;
4036 }
4037
4038 t.featurePosition = {};
4039
4040 t._setDefaultPlayer();
4041
4042 t.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4043 t.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4044 t.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4045
4046 if (t.options.useDefaultControls) {
4047 var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4048 t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4049 return defaultControls.indexOf(item) === -1;
4050 }));
4051 }
4052
4053 t.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4054
4055 var event = (0, _general.createEvent)('controlsready', t.getElement(t.container));
4056 t.getElement(t.container).dispatchEvent(event);
4057
4058 t.setPlayerSize(t.width, t.height);
4059 t.setControlsSize();
4060
4061 if (t.isVideo) {
4062 t.clickToPlayPauseCallback = function () {
4063
4064 if (t.options.clickToPlayPause) {
4065 var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4066 pressed = button.getAttribute('aria-pressed');
4067
4068 if (t.paused && pressed) {
4069 t.pause();
4070 } else if (t.paused) {
4071 t.play();
4072 } else {
4073 t.pause();
4074 }
4075
4076 button.setAttribute('aria-pressed', !pressed);
4077 t.getElement(t.container).focus();
4078 }
4079 };
4080
4081 t.createIframeLayer();
4082
4083 t.media.addEventListener('click', t.clickToPlayPauseCallback);
4084
4085 if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4086 t.node.addEventListener('touchstart', function () {
4087 if (t.controlsAreVisible) {
4088 t.hideControls(false);
4089 } else {
4090 if (t.controlsEnabled) {
4091 t.showControls(false);
4092 }
4093 }
4094 }, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4095 } else {
4096 t.getElement(t.container).addEventListener('mouseenter', function () {
4097 if (t.controlsEnabled) {
4098 if (!t.options.alwaysShowControls) {
4099 t.killControlsTimer('enter');
4100 t.showControls();
4101 t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4102 }
4103 }
4104 });
4105 t.getElement(t.container).addEventListener('mousemove', function () {
4106 if (t.controlsEnabled) {
4107 if (!t.controlsAreVisible) {
4108 t.showControls();
4109 }
4110 if (!t.options.alwaysShowControls) {
4111 t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4112 }
4113 }
4114 });
4115 t.getElement(t.container).addEventListener('mouseleave', function () {
4116 if (t.controlsEnabled) {
4117 if (!t.paused && !t.options.alwaysShowControls) {
4118 t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4119 }
4120 }
4121 });
4122 }
4123
4124 if (t.options.hideVideoControlsOnLoad) {
4125 t.hideControls(false);
4126 }
4127
4128 if (t.options.enableAutosize) {
4129 t.media.addEventListener('loadedmetadata', function (e) {
4130 var target = e !== undefined ? e.detail.target || e.target : t.media;
4131 if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4132 t.setPlayerSize(target.videoWidth, target.videoHeight);
4133 t.setControlsSize();
4134 t.media.setSize(target.videoWidth, target.videoHeight);
4135 }
4136 });
4137 }
4138 }
4139
4140 t.media.addEventListener('play', function () {
4141 t.hasFocus = true;
4142
4143 for (var playerIndex in _mejs2.default.players) {
4144 if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4145 var p = _mejs2.default.players[playerIndex];
4146
4147 if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended && p.options.ignorePauseOtherPlayersOption !== true) {
4148 p.pause();
4149 p.hasFocus = false;
4150 }
4151 }
4152 }
4153
4154 if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4155 t.hideControls();
4156 }
4157 });
4158
4159 t.media.addEventListener('ended', function () {
4160 if (t.options.autoRewind) {
4161 try {
4162 t.setCurrentTime(0);
4163
4164 setTimeout(function () {
4165 var loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading');
4166 if (loadingElement && loadingElement.parentNode) {
4167 loadingElement.parentNode.style.display = 'none';
4168 }
4169 }, 20);
4170 } catch (exp) {
4171
4172 }
4173 }
4174
4175 if (typeof t.media.renderer.stop === 'function') {
4176 t.media.renderer.stop();
4177 } else {
4178 t.pause();
4179 }
4180
4181 if (t.setProgressRail) {
4182 t.setProgressRail();
4183 }
4184 if (t.setCurrentRail) {
4185 t.setCurrentRail();
4186 }
4187
4188 if (t.options.loop) {
4189 t.play();
4190 } else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4191 t.showControls();
4192 }
4193 });
4194
4195 t.media.addEventListener('loadedmetadata', function () {
4196
4197 (0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4198
4199 if (t.updateDuration) {
4200 t.updateDuration();
4201 }
4202 if (t.updateCurrent) {
4203 t.updateCurrent();
4204 }
4205
4206 if (!t.isFullScreen) {
4207 t.setPlayerSize(t.width, t.height);
4208 t.setControlsSize();
4209 }
4210 });
4211
4212 var duration = null;
4213 t.media.addEventListener('timeupdate', function () {
4214 if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4215 duration = t.getDuration();
4216 (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4217
4218 if (t.updateDuration) {
4219 t.updateDuration();
4220 }
4221 if (t.updateCurrent) {
4222 t.updateCurrent();
4223 }
4224
4225 t.setControlsSize();
4226 }
4227 });
4228
4229 t.getElement(t.container).addEventListener('click', function (e) {
4230 dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4231 });
4232
4233 t.getElement(t.container).addEventListener('focusin', function (e) {
4234 dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4235 if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4236 t.killControlsTimer('enter');
4237 t.showControls();
4238 t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4239 }
4240 });
4241
4242 t.getElement(t.container).addEventListener('focusout', function (e) {
4243 setTimeout(function () {
4244 if (e.relatedTarget) {
4245 if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4246 t.keyboardAction = false;
4247 if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4248 t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4249 }
4250 }
4251 }
4252 }, 0);
4253 });
4254
4255 setTimeout(function () {
4256 t.setPlayerSize(t.width, t.height);
4257 t.setControlsSize();
4258 }, 0);
4259
4260 t.globalResizeCallback = function () {
4261 if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4262 t.setPlayerSize(t.width, t.height);
4263 }
4264
4265 t.setControlsSize();
4266 };
4267
4268 t.globalBind('resize', t.globalResizeCallback);
4269 }
4270
4271 if (autoplay && isNative) {
4272 t.play();
4273 }
4274
4275 if (t.options.success) {
4276 if (typeof t.options.success === 'string') {
4277 _window2.default[t.options.success](t.media, t.domNode, t);
4278 } else {
4279 t.options.success(t.media, t.domNode, t);
4280 }
4281 }
4282 }
4283 }, {
4284 key: '_handleError',
4285 value: function _handleError(e, media, node) {
4286 var t = this,
4287 play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play');
4288
4289 if (play) {
4290 play.style.display = 'none';
4291 }
4292
4293 if (t.options.error) {
4294 t.options.error(e, media, node);
4295 }
4296
4297 if (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4298 t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4299 }
4300
4301 var errorContainer = _document2.default.createElement('div');
4302 errorContainer.className = t.options.classPrefix + 'cannotplay';
4303 errorContainer.style.width = '100%';
4304 errorContainer.style.height = '100%';
4305
4306 var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4307 imgError = '';
4308
4309 if (!errorContent) {
4310 var poster = t.media.originalNode.getAttribute('poster');
4311 if (poster) {
4312 imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4313 }
4314
4315 if (e.message) {
4316 errorContent = '<p>' + e.message + '</p>';
4317 }
4318
4319 if (e.urls) {
4320 for (var i = 0, total = e.urls.length; i < total; i++) {
4321 var url = e.urls[i];
4322 errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4323 }
4324 }
4325 }
4326
4327 if (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4328 errorContainer.innerHTML = errorContent;
4329 t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4330 t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4331 }
4332
4333 if (t.controlsEnabled) {
4334 t.disableControls();
4335 }
4336 }
4337 }, {
4338 key: 'setPlayerSize',
4339 value: function setPlayerSize(width, height) {
4340 var t = this;
4341
4342 if (!t.options.setDimensions) {
4343 return false;
4344 }
4345
4346 if (typeof width !== 'undefined') {
4347 t.width = width;
4348 }
4349
4350 if (typeof height !== 'undefined') {
4351 t.height = height;
4352 }
4353
4354 switch (t.options.stretching) {
4355 case 'fill':
4356 if (t.isVideo) {
4357 t.setFillMode();
4358 } else {
4359 t.setDimensions(t.width, t.height);
4360 }
4361 break;
4362 case 'responsive':
4363 t.setResponsiveMode();
4364 break;
4365 case 'none':
4366 t.setDimensions(t.width, t.height);
4367 break;
4368
4369 default:
4370 if (t.hasFluidMode() === true) {
4371 t.setResponsiveMode();
4372 } else {
4373 t.setDimensions(t.width, t.height);
4374 }
4375 break;
4376 }
4377 }
4378 }, {
4379 key: 'hasFluidMode',
4380 value: function hasFluidMode() {
4381 var t = this;
4382
4383 return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4384 }
4385 }, {
4386 key: 'setResponsiveMode',
4387 value: function setResponsiveMode() {
4388 var t = this,
4389 parent = function () {
4390
4391 var parentEl = void 0,
4392 el = t.getElement(t.container);
4393
4394 while (el) {
4395 try {
4396 if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4397 return _window2.default.frameElement;
4398 } else {
4399 parentEl = el.parentElement;
4400 }
4401 } catch (e) {
4402 parentEl = el.parentElement;
4403 }
4404
4405 if (parentEl && dom.visible(parentEl)) {
4406 return parentEl;
4407 }
4408 el = parentEl;
4409 }
4410
4411 return null;
4412 }(),
4413 parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4414 nativeWidth = function () {
4415 if (t.isVideo) {
4416 if (t.node.videoWidth && t.node.videoWidth > 0) {
4417 return t.node.videoWidth;
4418 } else if (t.node.getAttribute('width')) {
4419 return t.node.getAttribute('width');
4420 } else {
4421 return t.options.defaultVideoWidth;
4422 }
4423 } else {
4424 return t.options.defaultAudioWidth;
4425 }
4426 }(),
4427 nativeHeight = function () {
4428 if (t.isVideo) {
4429 if (t.node.videoHeight && t.node.videoHeight > 0) {
4430 return t.node.videoHeight;
4431 } else if (t.node.getAttribute('height')) {
4432 return t.node.getAttribute('height');
4433 } else {
4434 return t.options.defaultVideoHeight;
4435 }
4436 } else {
4437 return t.options.defaultAudioHeight;
4438 }
4439 }(),
4440 aspectRatio = function () {
4441 if (!t.options.enableAutosize) {
4442 return t.initialAspectRatio;
4443 }
4444 var ratio = 1;
4445 if (!t.isVideo) {
4446 return ratio;
4447 }
4448
4449 if (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) {
4450 ratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth;
4451 } else {
4452 ratio = t.initialAspectRatio;
4453 }
4454
4455 if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4456 ratio = 1;
4457 }
4458
4459 return ratio;
4460 }(),
4461 parentHeight = parseFloat(parentStyles.height);
4462
4463 var newHeight = void 0,
4464 parentWidth = parseFloat(parentStyles.width);
4465
4466 if (t.isVideo) {
4467 if (t.height === '100%') {
4468 newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4469 } else {
4470 newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4471 }
4472 } else {
4473 newHeight = nativeHeight;
4474 }
4475
4476 if (isNaN(newHeight)) {
4477 newHeight = parentHeight;
4478 }
4479
4480 if (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') {
4481 parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4482 newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4483 }
4484
4485 if (newHeight && parentWidth) {
4486 t.getElement(t.container).style.width = parentWidth + 'px';
4487 t.getElement(t.container).style.height = newHeight + 'px';
4488
4489 t.node.style.width = '100%';
4490 t.node.style.height = '100%';
4491
4492 if (t.isVideo && t.media.setSize) {
4493 t.media.setSize(parentWidth, newHeight);
4494 }
4495
4496 var layerChildren = t.getElement(t.layers).children;
4497 for (var i = 0, total = layerChildren.length; i < total; i++) {
4498 layerChildren[i].style.width = '100%';
4499 layerChildren[i].style.height = '100%';
4500 }
4501 }
4502 }
4503 }, {
4504 key: 'setFillMode',
4505 value: function setFillMode() {
4506 var t = this;
4507 var isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null;
4508 var parent = function () {
4509 var parentEl = void 0,
4510 el = t.getElement(t.container);
4511
4512 while (el) {
4513 try {
4514 if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4515 return _window2.default.frameElement;
4516 } else {
4517 parentEl = el.parentElement;
4518 }
4519 } catch (e) {
4520 parentEl = el.parentElement;
4521 }
4522
4523 if (parentEl && dom.visible(parentEl)) {
4524 return parentEl;
4525 }
4526 el = parentEl;
4527 }
4528
4529 return null;
4530 }();
4531 var parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null);
4532
4533 if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4534 t.node.style.height = 'auto';
4535 }
4536 if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4537 t.node.style.maxWidth = 'none';
4538 }
4539
4540 if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4541 t.node.style.maxHeight = 'none';
4542 }
4543
4544 if (t.node.currentStyle) {
4545 if (t.node.currentStyle.height === '100%') {
4546 t.node.currentStyle.height = 'auto';
4547 }
4548 if (t.node.currentStyle.maxWidth === '100%') {
4549 t.node.currentStyle.maxWidth = 'none';
4550 }
4551 if (t.node.currentStyle.maxHeight === '100%') {
4552 t.node.currentStyle.maxHeight = 'none';
4553 }
4554 }
4555
4556 if (!isIframe && !parseFloat(parentStyles.width)) {
4557 parent.style.width = t.media.offsetWidth + 'px';
4558 }
4559
4560 if (!isIframe && !parseFloat(parentStyles.height)) {
4561 parent.style.height = t.media.offsetHeight + 'px';
4562 }
4563
4564 parentStyles = getComputedStyle(parent);
4565
4566 var parentWidth = parseFloat(parentStyles.width),
4567 parentHeight = parseFloat(parentStyles.height);
4568
4569 t.setDimensions('100%', '100%');
4570
4571 var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
4572 if (poster) {
4573 poster.style.display = '';
4574 }
4575
4576 var targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'),
4577 initHeight = t.height,
4578 initWidth = t.width,
4579 scaleX1 = parentWidth,
4580 scaleY1 = initHeight * parentWidth / initWidth,
4581 scaleX2 = initWidth * parentHeight / initHeight,
4582 scaleY2 = parentHeight,
4583 bScaleOnWidth = scaleX2 > parentWidth === false,
4584 finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4585 finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4586 width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4587 height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4588
4589 for (var i = 0, total = targetElement.length; i < total; i++) {
4590 targetElement[i].style.height = height;
4591 targetElement[i].style.width = width;
4592 if (t.media.setSize) {
4593 t.media.setSize(width, height);
4594 }
4595
4596 targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
4597 targetElement[i].style.marginTop = 0;
4598 }
4599 }
4600 }, {
4601 key: 'setDimensions',
4602 value: function setDimensions(width, height) {
4603 var t = this;
4604
4605 width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4606 height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4607
4608 t.getElement(t.container).style.width = width;
4609 t.getElement(t.container).style.height = height;
4610
4611 var layers = t.getElement(t.layers).children;
4612 for (var i = 0, total = layers.length; i < total; i++) {
4613 layers[i].style.width = width;
4614 layers[i].style.height = height;
4615 }
4616 }
4617 }, {
4618 key: 'setControlsSize',
4619 value: function setControlsSize() {
4620 var t = this;
4621
4622 if (!dom.visible(t.getElement(t.container))) {
4623 return;
4624 }
4625
4626 if (t.rail && dom.visible(t.rail)) {
4627 var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4628 totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4629 railStyles = getComputedStyle(t.rail),
4630 railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4631
4632 var siblingsWidth = 0;
4633
4634 var siblings = dom.siblings(t.rail, function (el) {
4635 return el !== t.rail;
4636 }),
4637 total = siblings.length;
4638 for (var i = 0; i < total; i++) {
4639 siblingsWidth += siblings[i].offsetWidth;
4640 }
4641
4642 siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4643
4644 t.getElement(t.container).style.minWidth = siblingsWidth + 'px';
4645
4646 var event = (0, _general.createEvent)('controlsresize', t.getElement(t.container));
4647 t.getElement(t.container).dispatchEvent(event);
4648 } else {
4649 var children = t.getElement(t.controls).children;
4650 var minWidth = 0;
4651
4652 for (var _i = 0, _total = children.length; _i < _total; _i++) {
4653 minWidth += children[_i].offsetWidth;
4654 }
4655
4656 t.getElement(t.container).style.minWidth = minWidth + 'px';
4657 }
4658 }
4659 }, {
4660 key: 'addControlElement',
4661 value: function addControlElement(element, key) {
4662
4663 var t = this;
4664
4665 if (t.featurePosition[key] !== undefined) {
4666 var child = t.getElement(t.controls).children[t.featurePosition[key] - 1];
4667 child.parentNode.insertBefore(element, child.nextSibling);
4668 } else {
4669 t.getElement(t.controls).appendChild(element);
4670 var children = t.getElement(t.controls).children;
4671 for (var i = 0, total = children.length; i < total; i++) {
4672 if (element === children[i]) {
4673 t.featurePosition[key] = i;
4674 break;
4675 }
4676 }
4677 }
4678 }
4679 }, {
4680 key: 'createIframeLayer',
4681 value: function createIframeLayer() {
4682 var t = this;
4683
4684 if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4685
4686 var layer = _document2.default.createElement('div'),
4687 target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4688
4689 layer.id = t.media.id + '-iframe-overlay';
4690 layer.className = t.options.classPrefix + 'iframe-overlay';
4691 layer.addEventListener('click', function (e) {
4692 if (t.options.clickToPlayPause) {
4693 if (t.paused) {
4694 t.play();
4695 } else {
4696 t.pause();
4697 }
4698
4699 e.preventDefault();
4700 e.stopPropagation();
4701 }
4702 });
4703
4704 target.parentNode.insertBefore(layer, target);
4705 }
4706 }
4707 }, {
4708 key: 'resetSize',
4709 value: function resetSize() {
4710 var t = this;
4711
4712 setTimeout(function () {
4713 t.setPlayerSize(t.width, t.height);
4714 t.setControlsSize();
4715 }, 50);
4716 }
4717 }, {
4718 key: 'setPoster',
4719 value: function setPoster(url) {
4720 var t = this;
4721
4722 if (t.getElement(t.container)) {
4723 var posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster');
4724
4725 if (!posterDiv) {
4726 posterDiv = _document2.default.createElement('div');
4727 posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4728 t.getElement(t.layers).appendChild(posterDiv);
4729 }
4730
4731 var posterImg = posterDiv.querySelector('img');
4732
4733 if (!posterImg && url) {
4734 posterImg = _document2.default.createElement('img');
4735 posterImg.className = t.options.classPrefix + 'poster-img';
4736 posterImg.width = '100%';
4737 posterImg.height = '100%';
4738 posterDiv.style.display = '';
4739 posterDiv.appendChild(posterImg);
4740 }
4741
4742 if (url) {
4743 posterImg.setAttribute('src', url);
4744 posterDiv.style.backgroundImage = 'url("' + url + '")';
4745 posterDiv.style.display = '';
4746 } else if (posterImg) {
4747 posterDiv.style.backgroundImage = 'none';
4748 posterDiv.style.display = 'none';
4749 posterImg.remove();
4750 } else {
4751 posterDiv.style.display = 'none';
4752 }
4753 } else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) {
4754 t.media.originalNode.poster = url;
4755 }
4756 }
4757 }, {
4758 key: 'changeSkin',
4759 value: function changeSkin(className) {
4760 var t = this;
4761
4762 t.getElement(t.container).className = t.options.classPrefix + 'container ' + className;
4763 t.setPlayerSize(t.width, t.height);
4764 t.setControlsSize();
4765 }
4766 }, {
4767 key: 'globalBind',
4768 value: function globalBind(events, callback) {
4769 var t = this,
4770 doc = t.node ? t.node.ownerDocument : _document2.default;
4771
4772 events = (0, _general.splitEvents)(events, t.id);
4773 if (events.d) {
4774 var eventList = events.d.split(' ');
4775 for (var i = 0, total = eventList.length; i < total; i++) {
4776 eventList[i].split('.').reduce(function (part, e) {
4777 doc.addEventListener(e, callback, false);
4778 return e;
4779 }, '');
4780 }
4781 }
4782 if (events.w) {
4783 var _eventList = events.w.split(' ');
4784 for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4785 _eventList[_i2].split('.').reduce(function (part, e) {
4786 _window2.default.addEventListener(e, callback, false);
4787 return e;
4788 }, '');
4789 }
4790 }
4791 }
4792 }, {
4793 key: 'globalUnbind',
4794 value: function globalUnbind(events, callback) {
4795 var t = this,
4796 doc = t.node ? t.node.ownerDocument : _document2.default;
4797
4798 events = (0, _general.splitEvents)(events, t.id);
4799 if (events.d) {
4800 var eventList = events.d.split(' ');
4801 for (var i = 0, total = eventList.length; i < total; i++) {
4802 eventList[i].split('.').reduce(function (part, e) {
4803 doc.removeEventListener(e, callback, false);
4804 return e;
4805 }, '');
4806 }
4807 }
4808 if (events.w) {
4809 var _eventList2 = events.w.split(' ');
4810 for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4811 _eventList2[_i3].split('.').reduce(function (part, e) {
4812 _window2.default.removeEventListener(e, callback, false);
4813 return e;
4814 }, '');
4815 }
4816 }
4817 }
4818 }, {
4819 key: 'buildfeatures',
4820 value: function buildfeatures(player, controls, layers, media) {
4821 var t = this;
4822
4823 for (var i = 0, total = t.options.features.length; i < total; i++) {
4824 var feature = t.options.features[i];
4825 if (t['build' + feature]) {
4826 try {
4827 t['build' + feature](player, controls, layers, media);
4828 } catch (e) {
4829 console.error('error building ' + feature, e);
4830 }
4831 }
4832 }
4833 }
4834 }, {
4835 key: 'buildposter',
4836 value: function buildposter(player, controls, layers, media) {
4837 var t = this,
4838 poster = _document2.default.createElement('div');
4839
4840 poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4841 layers.appendChild(poster);
4842
4843 var posterUrl = media.originalNode.getAttribute('poster');
4844
4845 if (player.options.poster !== '') {
4846 if (posterUrl && _constants.IS_IOS) {
4847 media.originalNode.removeAttribute('poster');
4848 }
4849 posterUrl = player.options.poster;
4850 }
4851
4852 if (posterUrl) {
4853 t.setPoster(posterUrl);
4854 } else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4855 t.setPoster(t.media.renderer.getPosterUrl());
4856 } else {
4857 poster.style.display = 'none';
4858 }
4859
4860 media.addEventListener('play', function () {
4861 poster.style.display = 'none';
4862 });
4863
4864 media.addEventListener('playing', function () {
4865 poster.style.display = 'none';
4866 });
4867
4868 if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4869 media.addEventListener('ended', function () {
4870 poster.style.display = '';
4871 });
4872 }
4873
4874 media.addEventListener('error', function () {
4875 poster.style.display = 'none';
4876 });
4877
4878 if (player.options.showPosterWhenPaused) {
4879 media.addEventListener('pause', function () {
4880 if (!player.ended) {
4881 poster.style.display = '';
4882 }
4883 });
4884 }
4885 }
4886 }, {
4887 key: 'buildoverlays',
4888 value: function buildoverlays(player, controls, layers, media) {
4889
4890 if (!player.isVideo) {
4891 return;
4892 }
4893
4894 var t = this,
4895 loading = _document2.default.createElement('div'),
4896 error = _document2.default.createElement('div'),
4897 bigPlay = _document2.default.createElement('div');
4898
4899 loading.style.display = 'none';
4900 loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4901 loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4902 layers.appendChild(loading);
4903
4904 error.style.display = 'none';
4905 error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4906 error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4907 layers.appendChild(error);
4908
4909 bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4910 bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4911 bigPlay.addEventListener('click', function () {
4912 if (t.options.clickToPlayPause) {
4913
4914 var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4915 pressed = button.getAttribute('aria-pressed');
4916
4917 if (t.paused) {
4918 t.play();
4919 } else {
4920 t.pause();
4921 }
4922
4923 button.setAttribute('aria-pressed', !!pressed);
4924 t.getElement(t.container).focus();
4925 }
4926 });
4927
4928 bigPlay.addEventListener('keydown', function (e) {
4929 var keyPressed = e.keyCode || e.which || 0;
4930
4931 if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4932 var event = (0, _general.createEvent)('click', bigPlay);
4933 bigPlay.dispatchEvent(event);
4934 return false;
4935 }
4936 });
4937
4938 layers.appendChild(bigPlay);
4939
4940 if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4941 bigPlay.style.display = 'none';
4942 }
4943
4944 var hasError = false;
4945
4946 media.addEventListener('play', function () {
4947 bigPlay.style.display = 'none';
4948 loading.style.display = 'none';
4949 error.style.display = 'none';
4950 hasError = false;
4951 });
4952 media.addEventListener('playing', function () {
4953 bigPlay.style.display = 'none';
4954 loading.style.display = 'none';
4955 error.style.display = 'none';
4956 hasError = false;
4957 });
4958 media.addEventListener('seeking', function () {
4959 bigPlay.style.display = 'none';
4960 loading.style.display = '';
4961 hasError = false;
4962 });
4963 media.addEventListener('seeked', function () {
4964 bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4965 loading.style.display = 'none';
4966 hasError = false;
4967 });
4968 media.addEventListener('pause', function () {
4969 loading.style.display = 'none';
4970 if (!_constants.IS_STOCK_ANDROID && !hasError) {
4971 bigPlay.style.display = '';
4972 }
4973 hasError = false;
4974 });
4975 media.addEventListener('waiting', function () {
4976 loading.style.display = '';
4977 hasError = false;
4978 });
4979
4980 media.addEventListener('loadeddata', function () {
4981 loading.style.display = '';
4982
4983 if (_constants.IS_ANDROID) {
4984 media.canplayTimeout = setTimeout(function () {
4985 if (_document2.default.createEvent) {
4986 var evt = _document2.default.createEvent('HTMLEvents');
4987 evt.initEvent('canplay', true, true);
4988 return media.dispatchEvent(evt);
4989 }
4990 }, 300);
4991 }
4992 hasError = false;
4993 });
4994 media.addEventListener('canplay', function () {
4995 loading.style.display = 'none';
4996
4997 clearTimeout(media.canplayTimeout);
4998 hasError = false;
4999 });
5000
5001 media.addEventListener('error', function (e) {
5002 t._handleError(e, t.media, t.node);
5003 loading.style.display = 'none';
5004 bigPlay.style.display = 'none';
5005 hasError = true;
5006 });
5007
5008 media.addEventListener('loadedmetadata', function () {
5009 if (!t.controlsEnabled) {
5010 t.enableControls();
5011 }
5012 });
5013
5014 media.addEventListener('keydown', function (e) {
5015 t.onkeydown(player, media, e);
5016 hasError = false;
5017 });
5018 }
5019 }, {
5020 key: 'buildkeyboard',
5021 value: function buildkeyboard(player, controls, layers, media) {
5022
5023 var t = this;
5024
5025 t.getElement(t.container).addEventListener('keydown', function () {
5026 t.keyboardAction = true;
5027 });
5028
5029 t.globalKeydownCallback = function (event) {
5030 var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
5031 target = t.media.closest('.' + t.options.classPrefix + 'container');
5032 t.hasFocus = !!(container && target && container.id === target.id);
5033 return t.onkeydown(player, media, event);
5034 };
5035
5036 t.globalClickCallback = function (event) {
5037 t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
5038 };
5039
5040 t.globalBind('keydown', t.globalKeydownCallback);
5041
5042 t.globalBind('click', t.globalClickCallback);
5043 }
5044 }, {
5045 key: 'onkeydown',
5046 value: function onkeydown(player, media, e) {
5047
5048 if (player.hasFocus && player.options.enableKeyboard) {
5049 for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
5050 var keyAction = player.options.keyActions[i];
5051
5052 for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
5053 if (e.keyCode === keyAction.keys[j]) {
5054 keyAction.action(player, media, e.keyCode, e);
5055 e.preventDefault();
5056 e.stopPropagation();
5057 return;
5058 }
5059 }
5060 }
5061 }
5062
5063 return true;
5064 }
5065 }, {
5066 key: 'play',
5067 value: function play() {
5068 this.proxy.play();
5069 }
5070 }, {
5071 key: 'pause',
5072 value: function pause() {
5073 this.proxy.pause();
5074 }
5075 }, {
5076 key: 'load',
5077 value: function load() {
5078 this.proxy.load();
5079 }
5080 }, {
5081 key: 'setCurrentTime',
5082 value: function setCurrentTime(time) {
5083 this.proxy.setCurrentTime(time);
5084 }
5085 }, {
5086 key: 'getCurrentTime',
5087 value: function getCurrentTime() {
5088 return this.proxy.currentTime;
5089 }
5090 }, {
5091 key: 'getDuration',
5092 value: function getDuration() {
5093 return this.proxy.duration;
5094 }
5095 }, {
5096 key: 'setVolume',
5097 value: function setVolume(volume) {
5098 this.proxy.volume = volume;
5099 }
5100 }, {
5101 key: 'getVolume',
5102 value: function getVolume() {
5103 return this.proxy.getVolume();
5104 }
5105 }, {
5106 key: 'setMuted',
5107 value: function setMuted(value) {
5108 this.proxy.setMuted(value);
5109 }
5110 }, {
5111 key: 'setSrc',
5112 value: function setSrc(src) {
5113 if (!this.controlsEnabled) {
5114 this.enableControls();
5115 }
5116 this.proxy.setSrc(src);
5117 }
5118 }, {
5119 key: 'getSrc',
5120 value: function getSrc() {
5121 return this.proxy.getSrc();
5122 }
5123 }, {
5124 key: 'canPlayType',
5125 value: function canPlayType(type) {
5126 return this.proxy.canPlayType(type);
5127 }
5128 }, {
5129 key: 'remove',
5130 value: function remove() {
5131 var t = this,
5132 rendererName = t.media.rendererName,
5133 src = t.media.originalNode.src;
5134
5135 for (var featureIndex in t.options.features) {
5136 var feature = t.options.features[featureIndex];
5137 if (t['clean' + feature]) {
5138 try {
5139 t['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media);
5140 } catch (e) {
5141 console.error('error cleaning ' + feature, e);
5142 }
5143 }
5144 }
5145
5146 var nativeWidth = t.node.getAttribute('width'),
5147 nativeHeight = t.node.getAttribute('height');
5148
5149 if (nativeWidth) {
5150 if (nativeWidth.indexOf('%') === -1) {
5151 nativeWidth = nativeWidth + 'px';
5152 }
5153 } else {
5154 nativeWidth = 'auto';
5155 }
5156
5157 if (nativeHeight) {
5158 if (nativeHeight.indexOf('%') === -1) {
5159 nativeHeight = nativeHeight + 'px';
5160 }
5161 } else {
5162 nativeHeight = 'auto';
5163 }
5164
5165 t.node.style.width = nativeWidth;
5166 t.node.style.height = nativeHeight;
5167
5168 t.setPlayerSize(0, 0);
5169
5170 if (!t.isDynamic) {
5171 (function () {
5172 t.node.setAttribute('controls', true);
5173 t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5174 var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
5175 if (poster) {
5176 t.node.setAttribute('poster', poster.src);
5177 }
5178
5179 delete t.node.autoplay;
5180
5181 t.node.setAttribute('src', '');
5182 if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5183 t.node.setAttribute('src', src);
5184 }
5185
5186 if (rendererName && rendererName.indexOf('iframe') > -1) {
5187 var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5188 layer.remove();
5189 }
5190
5191 var node = t.node.cloneNode();
5192 node.style.display = '';
5193 t.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container));
5194 t.node.remove();
5195
5196 if (t.mediaFiles) {
5197 for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5198 var source = _document2.default.createElement('source');
5199 source.setAttribute('src', t.mediaFiles[i].src);
5200 source.setAttribute('type', t.mediaFiles[i].type);
5201 node.appendChild(source);
5202 }
5203 }
5204 if (t.trackFiles) {
5205 var _loop3 = function _loop3(_i4, _total4) {
5206 var track = t.trackFiles[_i4];
5207 var newTrack = _document2.default.createElement('track');
5208 newTrack.kind = track.kind;
5209 newTrack.label = track.label;
5210 newTrack.srclang = track.srclang;
5211 newTrack.src = track.src;
5212
5213 node.appendChild(newTrack);
5214 newTrack.addEventListener('load', function () {
5215 this.mode = 'showing';
5216 node.textTracks[_i4].mode = 'showing';
5217 });
5218 };
5219
5220 for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5221 _loop3(_i4, _total4);
5222 }
5223 }
5224
5225 delete t.node;
5226 delete t.mediaFiles;
5227 delete t.trackFiles;
5228 })();
5229 } else {
5230 t.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container));
5231 }
5232
5233 if (t.media.renderer && typeof t.media.renderer.destroy === 'function') {
5234 t.media.renderer.destroy();
5235 }
5236
5237 delete _mejs2.default.players[t.id];
5238
5239 if (_typeof(t.getElement(t.container)) === 'object') {
5240 var offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5241 if (offscreen) {
5242 offscreen.remove();
5243 }
5244 t.getElement(t.container).remove();
5245 }
5246 t.globalUnbind('resize', t.globalResizeCallback);
5247 t.globalUnbind('keydown', t.globalKeydownCallback);
5248 t.globalUnbind('click', t.globalClickCallback);
5249
5250 delete t.media.player;
5251 }
5252 }, {
5253 key: 'paused',
5254 get: function get() {
5255 return this.proxy.paused;
5256 }
5257 }, {
5258 key: 'muted',
5259 get: function get() {
5260 return this.proxy.muted;
5261 },
5262 set: function set(muted) {
5263 this.setMuted(muted);
5264 }
5265 }, {
5266 key: 'ended',
5267 get: function get() {
5268 return this.proxy.ended;
5269 }
5270 }, {
5271 key: 'readyState',
5272 get: function get() {
5273 return this.proxy.readyState;
5274 }
5275 }, {
5276 key: 'currentTime',
5277 set: function set(time) {
5278 this.setCurrentTime(time);
5279 },
5280 get: function get() {
5281 return this.getCurrentTime();
5282 }
5283 }, {
5284 key: 'duration',
5285 get: function get() {
5286 return this.getDuration();
5287 }
5288 }, {
5289 key: 'volume',
5290 set: function set(volume) {
5291 this.setVolume(volume);
5292 },
5293 get: function get() {
5294 return this.getVolume();
5295 }
5296 }, {
5297 key: 'src',
5298 set: function set(src) {
5299 this.setSrc(src);
5300 },
5301 get: function get() {
5302 return this.getSrc();
5303 }
5304 }]);
5305
5306 return MediaElementPlayer;
5307}();
5308
5309_window2.default.MediaElementPlayer = MediaElementPlayer;
5310_mejs2.default.MediaElementPlayer = MediaElementPlayer;
5311
5312exports.default = MediaElementPlayer;
5313
5314},{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){
5315'use strict';
5316
5317Object.defineProperty(exports, "__esModule", {
5318 value: true
5319});
5320
5321var _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; }; }();
5322
5323var _window = _dereq_(3);
5324
5325var _window2 = _interopRequireDefault(_window);
5326
5327function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5328
5329function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5330
5331var DefaultPlayer = function () {
5332 function DefaultPlayer(player) {
5333 _classCallCheck(this, DefaultPlayer);
5334
5335 this.media = player.media;
5336 this.isVideo = player.isVideo;
5337 this.classPrefix = player.options.classPrefix;
5338 this.createIframeLayer = function () {
5339 return player.createIframeLayer();
5340 };
5341 this.setPoster = function (url) {
5342 return player.setPoster(url);
5343 };
5344 return this;
5345 }
5346
5347 _createClass(DefaultPlayer, [{
5348 key: 'play',
5349 value: function play() {
5350 this.media.play();
5351 }
5352 }, {
5353 key: 'pause',
5354 value: function pause() {
5355 this.media.pause();
5356 }
5357 }, {
5358 key: 'load',
5359 value: function load() {
5360 var t = this;
5361
5362 if (!t.isLoaded) {
5363 t.media.load();
5364 }
5365
5366 t.isLoaded = true;
5367 }
5368 }, {
5369 key: 'setCurrentTime',
5370 value: function setCurrentTime(time) {
5371 this.media.setCurrentTime(time);
5372 }
5373 }, {
5374 key: 'getCurrentTime',
5375 value: function getCurrentTime() {
5376 return this.media.currentTime;
5377 }
5378 }, {
5379 key: 'getDuration',
5380 value: function getDuration() {
5381 var duration = this.media.getDuration();
5382 if (duration === Infinity && this.media.seekable && this.media.seekable.length) {
5383 duration = this.media.seekable.end(0);
5384 }
5385 return duration;
5386 }
5387 }, {
5388 key: 'setVolume',
5389 value: function setVolume(volume) {
5390 this.media.setVolume(volume);
5391 }
5392 }, {
5393 key: 'getVolume',
5394 value: function getVolume() {
5395 return this.media.getVolume();
5396 }
5397 }, {
5398 key: 'setMuted',
5399 value: function setMuted(value) {
5400 this.media.setMuted(value);
5401 }
5402 }, {
5403 key: 'setSrc',
5404 value: function setSrc(src) {
5405 var t = this,
5406 layer = document.getElementById(t.media.id + '-iframe-overlay');
5407
5408 if (layer) {
5409 layer.remove();
5410 }
5411
5412 t.media.setSrc(src);
5413 t.createIframeLayer();
5414 if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5415 t.setPoster(t.media.renderer.getPosterUrl());
5416 }
5417 }
5418 }, {
5419 key: 'getSrc',
5420 value: function getSrc() {
5421 return this.media.getSrc();
5422 }
5423 }, {
5424 key: 'canPlayType',
5425 value: function canPlayType(type) {
5426 return this.media.canPlayType(type);
5427 }
5428 }, {
5429 key: 'paused',
5430 get: function get() {
5431 return this.media.paused;
5432 }
5433 }, {
5434 key: 'muted',
5435 set: function set(muted) {
5436 this.setMuted(muted);
5437 },
5438 get: function get() {
5439 return this.media.muted;
5440 }
5441 }, {
5442 key: 'ended',
5443 get: function get() {
5444 return this.media.ended;
5445 }
5446 }, {
5447 key: 'readyState',
5448 get: function get() {
5449 return this.media.readyState;
5450 }
5451 }, {
5452 key: 'currentTime',
5453 set: function set(time) {
5454 this.setCurrentTime(time);
5455 },
5456 get: function get() {
5457 return this.getCurrentTime();
5458 }
5459 }, {
5460 key: 'duration',
5461 get: function get() {
5462 return this.getDuration();
5463 }
5464 }, {
5465 key: 'remainingTime',
5466 get: function get() {
5467 return this.getDuration() - this.currentTime();
5468 }
5469 }, {
5470 key: 'volume',
5471 set: function set(volume) {
5472 this.setVolume(volume);
5473 },
5474 get: function get() {
5475 return this.getVolume();
5476 }
5477 }, {
5478 key: 'src',
5479 set: function set(src) {
5480 this.setSrc(src);
5481 },
5482 get: function get() {
5483 return this.getSrc();
5484 }
5485 }]);
5486
5487 return DefaultPlayer;
5488}();
5489
5490exports.default = DefaultPlayer;
5491
5492
5493_window2.default.DefaultPlayer = DefaultPlayer;
5494
5495},{"3":3}],18:[function(_dereq_,module,exports){
5496'use strict';
5497
5498var _window = _dereq_(3);
5499
5500var _window2 = _interopRequireDefault(_window);
5501
5502var _mejs = _dereq_(7);
5503
5504var _mejs2 = _interopRequireDefault(_mejs);
5505
5506var _player = _dereq_(16);
5507
5508var _player2 = _interopRequireDefault(_player);
5509
5510function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5511
5512if (typeof jQuery !== 'undefined') {
5513 _mejs2.default.$ = jQuery;
5514} else if (typeof Zepto !== 'undefined') {
5515 _mejs2.default.$ = Zepto;
5516} else if (typeof ender !== 'undefined') {
5517 _mejs2.default.$ = ender;
5518}
5519
5520(function ($) {
5521 if (typeof $ !== 'undefined') {
5522 $.fn.mediaelementplayer = function (options) {
5523 if (options === false) {
5524 this.each(function () {
5525 var player = $(this).data('mediaelementplayer');
5526 if (player) {
5527 player.remove();
5528 }
5529 $(this).removeData('mediaelementplayer');
5530 });
5531 } else {
5532 this.each(function () {
5533 $(this).data('mediaelementplayer', new _player2.default(this, options));
5534 });
5535 }
5536 return this;
5537 };
5538
5539 $(document).ready(function () {
5540 $('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5541 });
5542 }
5543})(_mejs2.default.$);
5544
5545},{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){
5546'use strict';
5547
5548var _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; };
5549
5550var _window = _dereq_(3);
5551
5552var _window2 = _interopRequireDefault(_window);
5553
5554var _mejs = _dereq_(7);
5555
5556var _mejs2 = _interopRequireDefault(_mejs);
5557
5558var _renderer = _dereq_(8);
5559
5560var _general = _dereq_(27);
5561
5562var _media = _dereq_(28);
5563
5564var _constants = _dereq_(25);
5565
5566var _dom = _dereq_(26);
5567
5568function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5569
5570var NativeDash = {
5571
5572 promise: null,
5573
5574 load: function load(settings) {
5575 if (typeof dashjs !== 'undefined') {
5576 NativeDash.promise = new Promise(function (resolve) {
5577 resolve();
5578 }).then(function () {
5579 NativeDash._createPlayer(settings);
5580 });
5581 } else {
5582 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5583
5584 NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5585 NativeDash.promise.then(function () {
5586 NativeDash._createPlayer(settings);
5587 });
5588 }
5589
5590 return NativeDash.promise;
5591 },
5592
5593 _createPlayer: function _createPlayer(settings) {
5594 var player = dashjs.MediaPlayer().create();
5595 _window2.default['__ready__' + settings.id](player);
5596 return player;
5597 }
5598};
5599
5600var DashNativeRenderer = {
5601 name: 'native_dash',
5602 options: {
5603 prefix: 'native_dash',
5604 dash: {
5605 path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5606 debug: false,
5607 drm: {},
5608
5609 robustnessLevel: ''
5610 }
5611 },
5612
5613 canPlayType: function canPlayType(type) {
5614 return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5615 },
5616
5617 create: function create(mediaElement, options, mediaFiles) {
5618
5619 var originalNode = mediaElement.originalNode,
5620 id = mediaElement.id + '_' + options.prefix,
5621 autoplay = originalNode.autoplay,
5622 children = originalNode.children;
5623
5624 var node = null,
5625 dashPlayer = null;
5626
5627 originalNode.removeAttribute('type');
5628 for (var i = 0, total = children.length; i < total; i++) {
5629 children[i].removeAttribute('type');
5630 }
5631
5632 node = originalNode.cloneNode(true);
5633 options = Object.assign(options, mediaElement.options);
5634
5635 var props = _mejs2.default.html5media.properties,
5636 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
5637 return e !== 'error';
5638 }),
5639 attachNativeEvents = function attachNativeEvents(e) {
5640 var event = (0, _general.createEvent)(e.type, mediaElement);
5641 mediaElement.dispatchEvent(event);
5642 },
5643 assignGettersSetters = function assignGettersSetters(propName) {
5644 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5645
5646 node['get' + capName] = function () {
5647 return dashPlayer !== null ? node[propName] : null;
5648 };
5649
5650 node['set' + capName] = function (value) {
5651 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5652 if (propName === 'src') {
5653 var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5654 node[propName] = source;
5655 if (dashPlayer !== null) {
5656 dashPlayer.reset();
5657 for (var _i = 0, _total = events.length; _i < _total; _i++) {
5658 node.removeEventListener(events[_i], attachNativeEvents);
5659 }
5660 dashPlayer = NativeDash._createPlayer({
5661 options: options.dash,
5662 id: id
5663 });
5664
5665 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5666 dashPlayer.setProtectionData(value.drm);
5667 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5668 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5669 }
5670 }
5671 dashPlayer.attachSource(source);
5672 if (autoplay) {
5673 dashPlayer.play();
5674 }
5675 }
5676 } else {
5677 node[propName] = value;
5678 }
5679 }
5680 };
5681 };
5682
5683 for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5684 assignGettersSetters(props[_i2]);
5685 }
5686
5687 _window2.default['__ready__' + id] = function (_dashPlayer) {
5688 mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5689
5690 var dashEvents = dashjs.MediaPlayer.events,
5691 assignEvents = function assignEvents(eventName) {
5692 if (eventName === 'loadedmetadata') {
5693 dashPlayer.initialize();
5694 dashPlayer.attachView(node);
5695 dashPlayer.setAutoPlay(false);
5696
5697 if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5698 dashPlayer.setProtectionData(options.dash.drm);
5699 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5700 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5701 }
5702 }
5703 dashPlayer.attachSource(node.getSrc());
5704 }
5705
5706 node.addEventListener(eventName, attachNativeEvents);
5707 };
5708
5709 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5710 assignEvents(events[_i3]);
5711 }
5712
5713 var assignMdashEvents = function assignMdashEvents(e) {
5714 if (e.type.toLowerCase() === 'error') {
5715 mediaElement.generateError(e.message, node.src);
5716 console.error(e);
5717 } else {
5718 var _event = (0, _general.createEvent)(e.type, mediaElement);
5719 _event.data = e;
5720 mediaElement.dispatchEvent(_event);
5721 }
5722 };
5723
5724 for (var eventType in dashEvents) {
5725 if (dashEvents.hasOwnProperty(eventType)) {
5726 dashPlayer.on(dashEvents[eventType], function (e) {
5727 return assignMdashEvents(e);
5728 });
5729 }
5730 }
5731 };
5732
5733 if (mediaFiles && mediaFiles.length > 0) {
5734 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5735 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5736 node.setAttribute('src', mediaFiles[_i4].src);
5737 if (typeof mediaFiles[_i4].drm !== 'undefined') {
5738 options.dash.drm = mediaFiles[_i4].drm;
5739 }
5740 break;
5741 }
5742 }
5743 }
5744
5745 node.setAttribute('id', id);
5746
5747 originalNode.parentNode.insertBefore(node, originalNode);
5748 originalNode.autoplay = false;
5749 originalNode.style.display = 'none';
5750
5751 node.setSize = function (width, height) {
5752 node.style.width = width + 'px';
5753 node.style.height = height + 'px';
5754 return node;
5755 };
5756
5757 node.hide = function () {
5758 node.pause();
5759 node.style.display = 'none';
5760 return node;
5761 };
5762
5763 node.show = function () {
5764 node.style.display = '';
5765 return node;
5766 };
5767
5768 node.destroy = function () {
5769 if (dashPlayer !== null) {
5770 dashPlayer.reset();
5771 }
5772 };
5773
5774 var event = (0, _general.createEvent)('rendererready', node);
5775 mediaElement.dispatchEvent(event);
5776
5777 mediaElement.promises.push(NativeDash.load({
5778 options: options.dash,
5779 id: id
5780 }));
5781
5782 return node;
5783 }
5784};
5785
5786_media.typeChecks.push(function (url) {
5787 return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5788});
5789
5790_renderer.renderer.add(DashNativeRenderer);
5791
5792},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){
5793'use strict';
5794
5795Object.defineProperty(exports, "__esModule", {
5796 value: true
5797});
5798exports.PluginDetector = undefined;
5799
5800var _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; };
5801
5802var _window = _dereq_(3);
5803
5804var _window2 = _interopRequireDefault(_window);
5805
5806var _document = _dereq_(2);
5807
5808var _document2 = _interopRequireDefault(_document);
5809
5810var _mejs = _dereq_(7);
5811
5812var _mejs2 = _interopRequireDefault(_mejs);
5813
5814var _i18n = _dereq_(5);
5815
5816var _i18n2 = _interopRequireDefault(_i18n);
5817
5818var _renderer = _dereq_(8);
5819
5820var _general = _dereq_(27);
5821
5822var _constants = _dereq_(25);
5823
5824var _media = _dereq_(28);
5825
5826function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5827
5828var PluginDetector = exports.PluginDetector = {
5829 plugins: [],
5830
5831 hasPluginVersion: function hasPluginVersion(plugin, v) {
5832 var pv = PluginDetector.plugins[plugin];
5833 v[1] = v[1] || 0;
5834 v[2] = v[2] || 0;
5835 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];
5836 },
5837
5838 addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5839 PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5840 },
5841
5842 detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5843
5844 var version = [0, 0, 0],
5845 description = void 0,
5846 ax = void 0;
5847
5848 if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5849 description = _constants.NAV.plugins[pluginName].description;
5850 if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5851 version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5852 for (var i = 0, total = version.length; i < total; i++) {
5853 version[i] = parseInt(version[i].match(/\d+/), 10);
5854 }
5855 }
5856 } else if (_window2.default.ActiveXObject !== undefined) {
5857 try {
5858 ax = new ActiveXObject(activeX);
5859 if (ax) {
5860 version = axDetect(ax);
5861 }
5862 } catch (e) {
5863
5864 }
5865 }
5866 return version;
5867 }
5868};
5869
5870PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5871 var version = [],
5872 d = ax.GetVariable("$version");
5873
5874 if (d) {
5875 d = d.split(" ")[1].split(",");
5876 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5877 }
5878 return version;
5879});
5880
5881var FlashMediaElementRenderer = {
5882 create: function create(mediaElement, options, mediaFiles) {
5883
5884 var flash = {};
5885 var isActive = false;
5886
5887 flash.options = options;
5888 flash.id = mediaElement.id + '_' + flash.options.prefix;
5889 flash.mediaElement = mediaElement;
5890 flash.flashState = {};
5891 flash.flashApi = null;
5892 flash.flashApiStack = [];
5893
5894 var props = _mejs2.default.html5media.properties,
5895 assignGettersSetters = function assignGettersSetters(propName) {
5896 flash.flashState[propName] = null;
5897
5898 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5899
5900 flash['get' + capName] = function () {
5901 if (flash.flashApi !== null) {
5902 if (typeof flash.flashApi['get_' + propName] === 'function') {
5903 var value = flash.flashApi['get_' + propName]();
5904
5905 if (propName === 'buffered') {
5906 return {
5907 start: function start() {
5908 return 0;
5909 },
5910 end: function end() {
5911 return value;
5912 },
5913 length: 1
5914 };
5915 }
5916 return value;
5917 } else {
5918 return null;
5919 }
5920 } else {
5921 return null;
5922 }
5923 };
5924
5925 flash['set' + capName] = function (value) {
5926 if (propName === 'src') {
5927 value = (0, _media.absolutizeUrl)(value);
5928 }
5929
5930 if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5931 try {
5932 flash.flashApi['set_' + propName](value);
5933 } catch (e) {
5934
5935 }
5936 } else {
5937 flash.flashApiStack.push({
5938 type: 'set',
5939 propName: propName,
5940 value: value
5941 });
5942 }
5943 };
5944 };
5945
5946 for (var i = 0, total = props.length; i < total; i++) {
5947 assignGettersSetters(props[i]);
5948 }
5949
5950 var methods = _mejs2.default.html5media.methods,
5951 assignMethods = function assignMethods(methodName) {
5952 flash[methodName] = function () {
5953 if (isActive) {
5954 if (flash.flashApi !== null) {
5955 if (flash.flashApi['fire_' + methodName]) {
5956 try {
5957 flash.flashApi['fire_' + methodName]();
5958 } catch (e) {
5959
5960 }
5961 } else {
5962
5963 }
5964 } else {
5965 flash.flashApiStack.push({
5966 type: 'call',
5967 methodName: methodName
5968 });
5969 }
5970 }
5971 };
5972 };
5973 methods.push('stop');
5974 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5975 assignMethods(methods[_i]);
5976 }
5977
5978 var initEvents = ['rendererready'];
5979
5980 for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5981 var event = (0, _general.createEvent)(initEvents[_i2], flash);
5982 mediaElement.dispatchEvent(event);
5983 }
5984
5985 _window2.default['__ready__' + flash.id] = function () {
5986
5987 flash.flashReady = true;
5988 flash.flashApi = _document2.default.getElementById('__' + flash.id);
5989
5990 if (flash.flashApiStack.length) {
5991 for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5992 var stackItem = flash.flashApiStack[_i3];
5993
5994 if (stackItem.type === 'set') {
5995 var propName = stackItem.propName,
5996 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5997
5998 flash['set' + capName](stackItem.value);
5999 } else if (stackItem.type === 'call') {
6000 flash[stackItem.methodName]();
6001 }
6002 }
6003 }
6004 };
6005
6006 _window2.default['__event__' + flash.id] = function (eventName, message) {
6007 var event = (0, _general.createEvent)(eventName, flash);
6008 if (message) {
6009 try {
6010 event.data = JSON.parse(message);
6011 event.details.data = JSON.parse(message);
6012 } catch (e) {
6013 event.message = message;
6014 }
6015 }
6016
6017 flash.mediaElement.dispatchEvent(event);
6018 };
6019
6020 flash.flashWrapper = _document2.default.createElement('div');
6021
6022 if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
6023 flash.options.shimScriptAccess = 'sameDomain';
6024 }
6025
6026 var autoplay = mediaElement.originalNode.autoplay,
6027 flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
6028 isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
6029 flashHeight = isVideo ? mediaElement.originalNode.height : 1,
6030 flashWidth = isVideo ? mediaElement.originalNode.width : 1;
6031
6032 if (mediaElement.originalNode.getAttribute('src')) {
6033 flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
6034 }
6035
6036 if (flash.options.enablePseudoStreaming === true) {
6037 flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
6038 flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
6039 }
6040
6041 if (flash.options.streamDelimiter) {
6042 flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
6043 }
6044
6045 if (flash.options.proxyType) {
6046 flashVars.push('proxytype=' + flash.options.proxyType);
6047 }
6048
6049 mediaElement.appendChild(flash.flashWrapper);
6050 mediaElement.originalNode.style.display = 'none';
6051
6052 var settings = [];
6053
6054 if (_constants.IS_IE || _constants.IS_EDGE) {
6055 var specialIEContainer = _document2.default.createElement('div');
6056 flash.flashWrapper.appendChild(specialIEContainer);
6057
6058 if (_constants.IS_EDGE) {
6059 settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
6060 } else {
6061 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 + '"'];
6062 }
6063
6064 if (!isVideo) {
6065 settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
6066 }
6067
6068 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>';
6069 } else {
6070
6071 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('&') + '"'];
6072
6073 if (isVideo) {
6074 settings.push('width="' + flashWidth + '"');
6075 settings.push('height="' + flashHeight + '"');
6076 } else {
6077 settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6078 }
6079
6080 flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6081 }
6082
6083 flash.flashNode = flash.flashWrapper.lastChild;
6084
6085 flash.hide = function () {
6086 isActive = false;
6087 if (isVideo) {
6088 flash.flashNode.style.display = 'none';
6089 }
6090 };
6091 flash.show = function () {
6092 isActive = true;
6093 if (isVideo) {
6094 flash.flashNode.style.display = '';
6095 }
6096 };
6097 flash.setSize = function (width, height) {
6098 flash.flashNode.style.width = width + 'px';
6099 flash.flashNode.style.height = height + 'px';
6100
6101 if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6102 flash.flashApi.fire_setSize(width, height);
6103 }
6104 };
6105
6106 flash.destroy = function () {
6107 flash.flashNode.remove();
6108 };
6109
6110 if (mediaFiles && mediaFiles.length > 0) {
6111 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6112 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6113 flash.setSrc(mediaFiles[_i4].src);
6114 break;
6115 }
6116 }
6117 }
6118
6119 return flash;
6120 }
6121};
6122
6123var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6124
6125if (hasFlash) {
6126 _media.typeChecks.push(function (url) {
6127 url = url.toLowerCase();
6128
6129 if (url.startsWith('rtmp')) {
6130 if (~url.indexOf('.mp3')) {
6131 return 'audio/rtmp';
6132 } else {
6133 return 'video/rtmp';
6134 }
6135 } else if (/\.og(a|g)/i.test(url)) {
6136 return 'audio/ogg';
6137 } else if (~url.indexOf('.m3u8')) {
6138 return 'application/x-mpegURL';
6139 } else if (~url.indexOf('.mpd')) {
6140 return 'application/dash+xml';
6141 } else if (~url.indexOf('.flv')) {
6142 return 'video/flv';
6143 } else {
6144 return null;
6145 }
6146 });
6147
6148 var FlashMediaElementVideoRenderer = {
6149 name: 'flash_video',
6150 options: {
6151 prefix: 'flash_video',
6152 filename: 'mediaelement-flash-video.swf',
6153 enablePseudoStreaming: false,
6154
6155 pseudoStreamingStartQueryParam: 'start',
6156
6157 pseudoStreamingType: 'byte',
6158
6159 proxyType: '',
6160
6161 streamDelimiter: ''
6162 },
6163
6164 canPlayType: function canPlayType(type) {
6165 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6166 },
6167
6168 create: FlashMediaElementRenderer.create
6169
6170 };
6171 _renderer.renderer.add(FlashMediaElementVideoRenderer);
6172
6173 var FlashMediaElementHlsVideoRenderer = {
6174 name: 'flash_hls',
6175 options: {
6176 prefix: 'flash_hls',
6177 filename: 'mediaelement-flash-video-hls.swf'
6178 },
6179
6180 canPlayType: function canPlayType(type) {
6181 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6182 },
6183
6184 create: FlashMediaElementRenderer.create
6185 };
6186 _renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6187
6188 var FlashMediaElementMdashVideoRenderer = {
6189 name: 'flash_dash',
6190 options: {
6191 prefix: 'flash_dash',
6192 filename: 'mediaelement-flash-video-mdash.swf'
6193 },
6194
6195 canPlayType: function canPlayType(type) {
6196 return ~['application/dash+xml'].indexOf(type.toLowerCase());
6197 },
6198
6199 create: FlashMediaElementRenderer.create
6200 };
6201 _renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6202
6203 var FlashMediaElementAudioRenderer = {
6204 name: 'flash_audio',
6205 options: {
6206 prefix: 'flash_audio',
6207 filename: 'mediaelement-flash-audio.swf'
6208 },
6209
6210 canPlayType: function canPlayType(type) {
6211 return ~['audio/mp3'].indexOf(type.toLowerCase());
6212 },
6213
6214 create: FlashMediaElementRenderer.create
6215 };
6216 _renderer.renderer.add(FlashMediaElementAudioRenderer);
6217
6218 var FlashMediaElementAudioOggRenderer = {
6219 name: 'flash_audio_ogg',
6220 options: {
6221 prefix: 'flash_audio_ogg',
6222 filename: 'mediaelement-flash-audio-ogg.swf'
6223 },
6224
6225 canPlayType: function canPlayType(type) {
6226 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6227 },
6228
6229 create: FlashMediaElementRenderer.create
6230 };
6231 _renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6232}
6233
6234},{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){
6235'use strict';
6236
6237var _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; };
6238
6239var _window = _dereq_(3);
6240
6241var _window2 = _interopRequireDefault(_window);
6242
6243var _mejs = _dereq_(7);
6244
6245var _mejs2 = _interopRequireDefault(_mejs);
6246
6247var _renderer = _dereq_(8);
6248
6249var _general = _dereq_(27);
6250
6251var _constants = _dereq_(25);
6252
6253var _media = _dereq_(28);
6254
6255var _dom = _dereq_(26);
6256
6257function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6258
6259var NativeFlv = {
6260
6261 promise: null,
6262
6263 load: function load(settings) {
6264 if (typeof flvjs !== 'undefined') {
6265 NativeFlv.promise = new Promise(function (resolve) {
6266 resolve();
6267 }).then(function () {
6268 NativeFlv._createPlayer(settings);
6269 });
6270 } else {
6271 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
6272
6273 NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6274 NativeFlv.promise.then(function () {
6275 NativeFlv._createPlayer(settings);
6276 });
6277 }
6278
6279 return NativeFlv.promise;
6280 },
6281
6282 _createPlayer: function _createPlayer(settings) {
6283 flvjs.LoggingControl.enableDebug = settings.options.debug;
6284 flvjs.LoggingControl.enableVerbose = settings.options.debug;
6285 var player = flvjs.createPlayer(settings.options, settings.configs);
6286 _window2.default['__ready__' + settings.id](player);
6287 return player;
6288 }
6289};
6290
6291var FlvNativeRenderer = {
6292 name: 'native_flv',
6293 options: {
6294 prefix: 'native_flv',
6295 flv: {
6296 path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
6297
6298 cors: true,
6299 debug: false
6300 }
6301 },
6302
6303 canPlayType: function canPlayType(type) {
6304 return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6305 },
6306
6307 create: function create(mediaElement, options, mediaFiles) {
6308
6309 var originalNode = mediaElement.originalNode,
6310 id = mediaElement.id + '_' + options.prefix;
6311
6312 var node = null,
6313 flvPlayer = null;
6314
6315 node = originalNode.cloneNode(true);
6316 options = Object.assign(options, mediaElement.options);
6317
6318 var props = _mejs2.default.html5media.properties,
6319 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6320 return e !== 'error';
6321 }),
6322 attachNativeEvents = function attachNativeEvents(e) {
6323 var event = (0, _general.createEvent)(e.type, mediaElement);
6324 mediaElement.dispatchEvent(event);
6325 },
6326 assignGettersSetters = function assignGettersSetters(propName) {
6327 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6328
6329 node['get' + capName] = function () {
6330 return flvPlayer !== null ? node[propName] : null;
6331 };
6332
6333 node['set' + capName] = function (value) {
6334 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6335 if (propName === 'src') {
6336 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6337 if (flvPlayer !== null) {
6338 var _flvOptions = {};
6339 _flvOptions.type = 'flv';
6340 _flvOptions.url = value;
6341 _flvOptions.cors = options.flv.cors;
6342 _flvOptions.debug = options.flv.debug;
6343 _flvOptions.path = options.flv.path;
6344 var _flvConfigs = options.flv.configs;
6345
6346 flvPlayer.destroy();
6347 for (var i = 0, total = events.length; i < total; i++) {
6348 node.removeEventListener(events[i], attachNativeEvents);
6349 }
6350 flvPlayer = NativeFlv._createPlayer({
6351 options: _flvOptions,
6352 configs: _flvConfigs,
6353 id: id
6354 });
6355 flvPlayer.attachMediaElement(node);
6356 flvPlayer.load();
6357 }
6358 } else {
6359 node[propName] = value;
6360 }
6361 }
6362 };
6363 };
6364
6365 for (var i = 0, total = props.length; i < total; i++) {
6366 assignGettersSetters(props[i]);
6367 }
6368
6369 _window2.default['__ready__' + id] = function (_flvPlayer) {
6370 mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6371
6372 var flvEvents = flvjs.Events,
6373 assignEvents = function assignEvents(eventName) {
6374 if (eventName === 'loadedmetadata') {
6375 flvPlayer.unload();
6376 flvPlayer.detachMediaElement();
6377 flvPlayer.attachMediaElement(node);
6378 flvPlayer.load();
6379 }
6380
6381 node.addEventListener(eventName, attachNativeEvents);
6382 };
6383
6384 for (var _i = 0, _total = events.length; _i < _total; _i++) {
6385 assignEvents(events[_i]);
6386 }
6387
6388 var assignFlvEvents = function assignFlvEvents(name, data) {
6389 if (name === 'error') {
6390 var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6391 mediaElement.generateError(message, node.src);
6392 } else {
6393 var _event = (0, _general.createEvent)(name, mediaElement);
6394 _event.data = data;
6395 mediaElement.dispatchEvent(_event);
6396 }
6397 };
6398
6399 var _loop = function _loop(eventType) {
6400 if (flvEvents.hasOwnProperty(eventType)) {
6401 flvPlayer.on(flvEvents[eventType], function () {
6402 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6403 args[_key] = arguments[_key];
6404 }
6405
6406 return assignFlvEvents(flvEvents[eventType], args);
6407 });
6408 }
6409 };
6410
6411 for (var eventType in flvEvents) {
6412 _loop(eventType);
6413 }
6414 };
6415
6416 if (mediaFiles && mediaFiles.length > 0) {
6417 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6418 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6419 node.setAttribute('src', mediaFiles[_i2].src);
6420 break;
6421 }
6422 }
6423 }
6424
6425 node.setAttribute('id', id);
6426
6427 originalNode.parentNode.insertBefore(node, originalNode);
6428 originalNode.autoplay = false;
6429 originalNode.style.display = 'none';
6430
6431 var flvOptions = {};
6432 flvOptions.type = 'flv';
6433 flvOptions.url = node.src;
6434 flvOptions.cors = options.flv.cors;
6435 flvOptions.debug = options.flv.debug;
6436 flvOptions.path = options.flv.path;
6437 var flvConfigs = options.flv.configs;
6438
6439 node.setSize = function (width, height) {
6440 node.style.width = width + 'px';
6441 node.style.height = height + 'px';
6442 return node;
6443 };
6444
6445 node.hide = function () {
6446 if (flvPlayer !== null) {
6447 flvPlayer.pause();
6448 }
6449 node.style.display = 'none';
6450 return node;
6451 };
6452
6453 node.show = function () {
6454 node.style.display = '';
6455 return node;
6456 };
6457
6458 node.destroy = function () {
6459 if (flvPlayer !== null) {
6460 flvPlayer.destroy();
6461 }
6462 };
6463
6464 var event = (0, _general.createEvent)('rendererready', node);
6465 mediaElement.dispatchEvent(event);
6466
6467 mediaElement.promises.push(NativeFlv.load({
6468 options: flvOptions,
6469 configs: flvConfigs,
6470 id: id
6471 }));
6472
6473 return node;
6474 }
6475};
6476
6477_media.typeChecks.push(function (url) {
6478 return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6479});
6480
6481_renderer.renderer.add(FlvNativeRenderer);
6482
6483},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){
6484'use strict';
6485
6486var _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; };
6487
6488var _window = _dereq_(3);
6489
6490var _window2 = _interopRequireDefault(_window);
6491
6492var _mejs = _dereq_(7);
6493
6494var _mejs2 = _interopRequireDefault(_mejs);
6495
6496var _renderer = _dereq_(8);
6497
6498var _general = _dereq_(27);
6499
6500var _constants = _dereq_(25);
6501
6502var _media = _dereq_(28);
6503
6504var _dom = _dereq_(26);
6505
6506function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6507
6508var NativeHls = {
6509
6510 promise: null,
6511
6512 load: function load(settings) {
6513 if (typeof Hls !== 'undefined') {
6514 NativeHls.promise = new Promise(function (resolve) {
6515 resolve();
6516 }).then(function () {
6517 NativeHls._createPlayer(settings);
6518 });
6519 } else {
6520 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
6521
6522 NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6523 NativeHls.promise.then(function () {
6524 NativeHls._createPlayer(settings);
6525 });
6526 }
6527
6528 return NativeHls.promise;
6529 },
6530
6531 _createPlayer: function _createPlayer(settings) {
6532 var player = new Hls(settings.options);
6533 _window2.default['__ready__' + settings.id](player);
6534 return player;
6535 }
6536};
6537
6538var HlsNativeRenderer = {
6539 name: 'native_hls',
6540 options: {
6541 prefix: 'native_hls',
6542 hls: {
6543 path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
6544
6545 autoStartLoad: false,
6546 debug: false
6547 }
6548 },
6549
6550 canPlayType: function canPlayType(type) {
6551 return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6552 },
6553
6554 create: function create(mediaElement, options, mediaFiles) {
6555
6556 var originalNode = mediaElement.originalNode,
6557 id = mediaElement.id + '_' + options.prefix,
6558 preload = originalNode.getAttribute('preload'),
6559 autoplay = originalNode.autoplay;
6560
6561 var hlsPlayer = null,
6562 node = null,
6563 index = 0,
6564 total = mediaFiles.length;
6565
6566 node = originalNode.cloneNode(true);
6567 options = Object.assign(options, mediaElement.options);
6568 options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6569
6570 var props = _mejs2.default.html5media.properties,
6571 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6572 return e !== 'error';
6573 }),
6574 attachNativeEvents = function attachNativeEvents(e) {
6575 var event = (0, _general.createEvent)(e.type, mediaElement);
6576 mediaElement.dispatchEvent(event);
6577 },
6578 assignGettersSetters = function assignGettersSetters(propName) {
6579 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6580
6581 node['get' + capName] = function () {
6582 return hlsPlayer !== null ? node[propName] : null;
6583 };
6584
6585 node['set' + capName] = function (value) {
6586 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6587 if (propName === 'src') {
6588 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6589 if (hlsPlayer !== null) {
6590 hlsPlayer.destroy();
6591 for (var i = 0, _total = events.length; i < _total; i++) {
6592 node.removeEventListener(events[i], attachNativeEvents);
6593 }
6594 hlsPlayer = NativeHls._createPlayer({
6595 options: options.hls,
6596 id: id
6597 });
6598 hlsPlayer.loadSource(value);
6599 hlsPlayer.attachMedia(node);
6600 }
6601 } else {
6602 node[propName] = value;
6603 }
6604 }
6605 };
6606 };
6607
6608 for (var i = 0, _total2 = props.length; i < _total2; i++) {
6609 assignGettersSetters(props[i]);
6610 }
6611
6612 _window2.default['__ready__' + id] = function (_hlsPlayer) {
6613 mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6614 var hlsEvents = Hls.Events,
6615 assignEvents = function assignEvents(eventName) {
6616 if (eventName === 'loadedmetadata') {
6617 var url = mediaElement.originalNode.src;
6618 hlsPlayer.detachMedia();
6619 hlsPlayer.loadSource(url);
6620 hlsPlayer.attachMedia(node);
6621 }
6622
6623 node.addEventListener(eventName, attachNativeEvents);
6624 };
6625
6626 for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6627 assignEvents(events[_i]);
6628 }
6629
6630 var recoverDecodingErrorDate = void 0,
6631 recoverSwapAudioCodecDate = void 0;
6632 var assignHlsEvents = function assignHlsEvents(name, data) {
6633 if (name === 'hlsError') {
6634 console.warn(data);
6635 data = data[1];
6636
6637 if (data.fatal) {
6638 switch (data.type) {
6639 case 'mediaError':
6640 var now = new Date().getTime();
6641 if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6642 recoverDecodingErrorDate = new Date().getTime();
6643 hlsPlayer.recoverMediaError();
6644 } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6645 recoverSwapAudioCodecDate = new Date().getTime();
6646 console.warn('Attempting to swap Audio Codec and recover from media error');
6647 hlsPlayer.swapAudioCodec();
6648 hlsPlayer.recoverMediaError();
6649 } else {
6650 var message = 'Cannot recover, last media error recovery failed';
6651 mediaElement.generateError(message, node.src);
6652 console.error(message);
6653 }
6654 break;
6655 case 'networkError':
6656 if (data.details === 'manifestLoadError') {
6657 if (index < total && mediaFiles[index + 1] !== undefined) {
6658 node.setSrc(mediaFiles[index++].src);
6659 node.load();
6660 node.play();
6661 } else {
6662 var _message = 'Network error';
6663 mediaElement.generateError(_message, mediaFiles);
6664 console.error(_message);
6665 }
6666 } else {
6667 var _message2 = 'Network error';
6668 mediaElement.generateError(_message2, mediaFiles);
6669 console.error(_message2);
6670 }
6671 break;
6672 default:
6673 hlsPlayer.destroy();
6674 break;
6675 }
6676 return;
6677 }
6678 }
6679 var event = (0, _general.createEvent)(name, mediaElement);
6680 event.data = data;
6681 mediaElement.dispatchEvent(event);
6682 };
6683
6684 var _loop = function _loop(eventType) {
6685 if (hlsEvents.hasOwnProperty(eventType)) {
6686 hlsPlayer.on(hlsEvents[eventType], function () {
6687 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6688 args[_key] = arguments[_key];
6689 }
6690
6691 return assignHlsEvents(hlsEvents[eventType], args);
6692 });
6693 }
6694 };
6695
6696 for (var eventType in hlsEvents) {
6697 _loop(eventType);
6698 }
6699 };
6700
6701 if (total > 0) {
6702 for (; index < total; index++) {
6703 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6704 node.setAttribute('src', mediaFiles[index].src);
6705 break;
6706 }
6707 }
6708 }
6709
6710 if (preload !== 'auto' && !autoplay) {
6711 node.addEventListener('play', function () {
6712 if (hlsPlayer !== null) {
6713 hlsPlayer.startLoad();
6714 }
6715 });
6716
6717 node.addEventListener('pause', function () {
6718 if (hlsPlayer !== null) {
6719 hlsPlayer.stopLoad();
6720 }
6721 });
6722 }
6723
6724 node.setAttribute('id', id);
6725
6726 originalNode.parentNode.insertBefore(node, originalNode);
6727 originalNode.autoplay = false;
6728 originalNode.style.display = 'none';
6729
6730 node.setSize = function (width, height) {
6731 node.style.width = width + 'px';
6732 node.style.height = height + 'px';
6733 return node;
6734 };
6735
6736 node.hide = function () {
6737 node.pause();
6738 node.style.display = 'none';
6739 return node;
6740 };
6741
6742 node.show = function () {
6743 node.style.display = '';
6744 return node;
6745 };
6746
6747 node.destroy = function () {
6748 if (hlsPlayer !== null) {
6749 hlsPlayer.stopLoad();
6750 hlsPlayer.destroy();
6751 }
6752 };
6753
6754 var event = (0, _general.createEvent)('rendererready', node);
6755 mediaElement.dispatchEvent(event);
6756
6757 mediaElement.promises.push(NativeHls.load({
6758 options: options.hls,
6759 id: id
6760 }));
6761
6762 return node;
6763 }
6764};
6765
6766_media.typeChecks.push(function (url) {
6767 return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6768});
6769
6770_renderer.renderer.add(HlsNativeRenderer);
6771
6772},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){
6773'use strict';
6774
6775var _window = _dereq_(3);
6776
6777var _window2 = _interopRequireDefault(_window);
6778
6779var _document = _dereq_(2);
6780
6781var _document2 = _interopRequireDefault(_document);
6782
6783var _mejs = _dereq_(7);
6784
6785var _mejs2 = _interopRequireDefault(_mejs);
6786
6787var _renderer = _dereq_(8);
6788
6789var _general = _dereq_(27);
6790
6791var _constants = _dereq_(25);
6792
6793function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6794
6795var HtmlMediaElement = {
6796 name: 'html5',
6797 options: {
6798 prefix: 'html5'
6799 },
6800
6801 canPlayType: function canPlayType(type) {
6802
6803 var mediaElement = _document2.default.createElement('video');
6804
6805 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) {
6806 return 'yes';
6807 } else if (mediaElement.canPlayType) {
6808 return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6809 } else {
6810 return '';
6811 }
6812 },
6813
6814 create: function create(mediaElement, options, mediaFiles) {
6815
6816 var id = mediaElement.id + '_' + options.prefix;
6817 var isActive = false;
6818
6819 var node = null;
6820
6821 if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6822 node = _document2.default.createElement('audio');
6823 mediaElement.appendChild(node);
6824 } else {
6825 node = mediaElement.originalNode;
6826 }
6827
6828 node.setAttribute('id', id);
6829
6830 var props = _mejs2.default.html5media.properties,
6831 assignGettersSetters = function assignGettersSetters(propName) {
6832 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6833
6834 node['get' + capName] = function () {
6835 return node[propName];
6836 };
6837
6838 node['set' + capName] = function (value) {
6839 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6840 node[propName] = value;
6841 }
6842 };
6843 };
6844
6845 for (var i = 0, _total = props.length; i < _total; i++) {
6846 assignGettersSetters(props[i]);
6847 }
6848
6849 var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6850 return e !== 'error';
6851 }),
6852 assignEvents = function assignEvents(eventName) {
6853 node.addEventListener(eventName, function (e) {
6854 if (isActive) {
6855 var _event = (0, _general.createEvent)(e.type, e.target);
6856 mediaElement.dispatchEvent(_event);
6857 }
6858 });
6859 };
6860
6861 for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6862 assignEvents(events[_i]);
6863 }
6864
6865 node.setSize = function (width, height) {
6866 node.style.width = width + 'px';
6867 node.style.height = height + 'px';
6868 return node;
6869 };
6870
6871 node.hide = function () {
6872 isActive = false;
6873 node.style.display = 'none';
6874
6875 return node;
6876 };
6877
6878 node.show = function () {
6879 isActive = true;
6880 node.style.display = '';
6881
6882 return node;
6883 };
6884
6885 var index = 0,
6886 total = mediaFiles.length;
6887 if (total > 0) {
6888 for (; index < total; index++) {
6889 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6890 node.setAttribute('src', mediaFiles[index].src);
6891 break;
6892 }
6893 }
6894 }
6895
6896 node.addEventListener('error', function (e) {
6897 if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {
6898 if (index < total && mediaFiles[index + 1] !== undefined) {
6899 node.src = mediaFiles[index++].src;
6900 node.load();
6901 node.play();
6902 } else {
6903 mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6904 }
6905 }
6906 });
6907
6908 var event = (0, _general.createEvent)('rendererready', node);
6909 mediaElement.dispatchEvent(event);
6910
6911 return node;
6912 }
6913};
6914
6915_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6916
6917_renderer.renderer.add(HtmlMediaElement);
6918
6919},{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){
6920'use strict';
6921
6922var _window = _dereq_(3);
6923
6924var _window2 = _interopRequireDefault(_window);
6925
6926var _document = _dereq_(2);
6927
6928var _document2 = _interopRequireDefault(_document);
6929
6930var _mejs = _dereq_(7);
6931
6932var _mejs2 = _interopRequireDefault(_mejs);
6933
6934var _renderer = _dereq_(8);
6935
6936var _general = _dereq_(27);
6937
6938var _media = _dereq_(28);
6939
6940var _dom = _dereq_(26);
6941
6942function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6943
6944var YouTubeApi = {
6945 isIframeStarted: false,
6946
6947 isIframeLoaded: false,
6948
6949 iframeQueue: [],
6950
6951 enqueueIframe: function enqueueIframe(settings) {
6952 YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6953
6954 if (YouTubeApi.isLoaded) {
6955 YouTubeApi.createIframe(settings);
6956 } else {
6957 YouTubeApi.loadIframeApi();
6958 YouTubeApi.iframeQueue.push(settings);
6959 }
6960 },
6961
6962 loadIframeApi: function loadIframeApi() {
6963 if (!YouTubeApi.isIframeStarted) {
6964 (0, _dom.loadScript)('https://www.youtube.com/player_api');
6965 YouTubeApi.isIframeStarted = true;
6966 }
6967 },
6968
6969 iFrameReady: function iFrameReady() {
6970
6971 YouTubeApi.isLoaded = true;
6972 YouTubeApi.isIframeLoaded = true;
6973
6974 while (YouTubeApi.iframeQueue.length > 0) {
6975 var settings = YouTubeApi.iframeQueue.pop();
6976 YouTubeApi.createIframe(settings);
6977 }
6978 },
6979
6980 createIframe: function createIframe(settings) {
6981 return new YT.Player(settings.containerId, settings);
6982 },
6983
6984 getYouTubeId: function getYouTubeId(url) {
6985
6986 var youTubeId = '';
6987
6988 if (url.indexOf('?') > 0) {
6989 youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6990
6991 if (youTubeId === '') {
6992 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6993 }
6994 } else {
6995 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6996 }
6997
6998 var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6999 youTubeId = id.split('?');
7000 return youTubeId[0];
7001 },
7002
7003 getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
7004
7005 if (url === undefined || url === null || !url.trim().length) {
7006 return null;
7007 }
7008
7009 var parts = url.split('?'),
7010 parameters = parts[1].split('&');
7011
7012 var youTubeId = '';
7013
7014 for (var i = 0, total = parameters.length; i < total; i++) {
7015 var paramParts = parameters[i].split('=');
7016 if (paramParts[0] === 'v') {
7017 youTubeId = paramParts[1];
7018 break;
7019 }
7020 }
7021
7022 return youTubeId;
7023 },
7024
7025 getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
7026
7027 if (url === undefined || url === null || !url.trim().length) {
7028 return null;
7029 }
7030
7031 var parts = url.split('?');
7032 url = parts[0];
7033 return url.substring(url.lastIndexOf('/') + 1);
7034 },
7035
7036 getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
7037 if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
7038 return url;
7039 }
7040
7041 var parts = url.split('/');
7042 parts[2] = parts[2].replace('.com', '-nocookie.com');
7043 return parts.join('/');
7044 }
7045};
7046
7047var YouTubeIframeRenderer = {
7048 name: 'youtube_iframe',
7049
7050 options: {
7051 prefix: 'youtube_iframe',
7052
7053 youtube: {
7054 autoplay: 0,
7055 controls: 0,
7056 disablekb: 1,
7057 end: 0,
7058 loop: 0,
7059 modestbranding: 0,
7060 playsinline: 0,
7061 rel: 0,
7062 showinfo: 0,
7063 start: 0,
7064 iv_load_policy: 3,
7065
7066 nocookie: false,
7067
7068 imageQuality: null
7069 }
7070 },
7071
7072 canPlayType: function canPlayType(type) {
7073 return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
7074 },
7075
7076 create: function create(mediaElement, options, mediaFiles) {
7077
7078 var youtube = {},
7079 apiStack = [],
7080 readyState = 4;
7081
7082 var youTubeApi = null,
7083 paused = true,
7084 ended = false,
7085 youTubeIframe = null,
7086 volume = 1;
7087
7088 youtube.options = options;
7089 youtube.id = mediaElement.id + '_' + options.prefix;
7090 youtube.mediaElement = mediaElement;
7091
7092 var props = _mejs2.default.html5media.properties,
7093 assignGettersSetters = function assignGettersSetters(propName) {
7094
7095 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7096
7097 youtube['get' + capName] = function () {
7098 if (youTubeApi !== null) {
7099 var value = null;
7100
7101 switch (propName) {
7102 case 'currentTime':
7103 return youTubeApi.getCurrentTime();
7104 case 'duration':
7105 return youTubeApi.getDuration();
7106 case 'volume':
7107 volume = youTubeApi.getVolume() / 100;
7108 return volume;
7109 case 'playbackRate':
7110 return youTubeApi.getPlaybackRate();
7111 case 'paused':
7112 return paused;
7113 case 'ended':
7114 return ended;
7115 case 'muted':
7116 return youTubeApi.isMuted();
7117 case 'buffered':
7118 var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7119 duration = youTubeApi.getDuration();
7120 return {
7121 start: function start() {
7122 return 0;
7123 },
7124 end: function end() {
7125 return percentLoaded * duration;
7126 },
7127 length: 1
7128 };
7129 case 'src':
7130 return youTubeApi.getVideoUrl();
7131 case 'readyState':
7132 return readyState;
7133 }
7134
7135 return value;
7136 } else {
7137 return null;
7138 }
7139 };
7140
7141 youtube['set' + capName] = function (value) {
7142 if (youTubeApi !== null) {
7143 switch (propName) {
7144 case 'src':
7145 var url = typeof value === 'string' ? value : value[0].src,
7146 _videoId = YouTubeApi.getYouTubeId(url);
7147
7148 if (mediaElement.originalNode.autoplay) {
7149 youTubeApi.loadVideoById(_videoId);
7150 } else {
7151 youTubeApi.cueVideoById(_videoId);
7152 }
7153 break;
7154 case 'currentTime':
7155 youTubeApi.seekTo(value);
7156 break;
7157 case 'muted':
7158 if (value) {
7159 youTubeApi.mute();
7160 } else {
7161 youTubeApi.unMute();
7162 }
7163 setTimeout(function () {
7164 var event = (0, _general.createEvent)('volumechange', youtube);
7165 mediaElement.dispatchEvent(event);
7166 }, 50);
7167 break;
7168 case 'volume':
7169 volume = value;
7170 youTubeApi.setVolume(value * 100);
7171 setTimeout(function () {
7172 var event = (0, _general.createEvent)('volumechange', youtube);
7173 mediaElement.dispatchEvent(event);
7174 }, 50);
7175 break;
7176 case 'playbackRate':
7177 youTubeApi.setPlaybackRate(value);
7178 setTimeout(function () {
7179 var event = (0, _general.createEvent)('ratechange', youtube);
7180 mediaElement.dispatchEvent(event);
7181 }, 50);
7182 break;
7183 case 'readyState':
7184 var event = (0, _general.createEvent)('canplay', youtube);
7185 mediaElement.dispatchEvent(event);
7186 break;
7187 default:
7188
7189 break;
7190 }
7191 } else {
7192 apiStack.push({ type: 'set', propName: propName, value: value });
7193 }
7194 };
7195 };
7196
7197 for (var i = 0, total = props.length; i < total; i++) {
7198 assignGettersSetters(props[i]);
7199 }
7200
7201 var methods = _mejs2.default.html5media.methods,
7202 assignMethods = function assignMethods(methodName) {
7203 youtube[methodName] = function () {
7204 if (youTubeApi !== null) {
7205 switch (methodName) {
7206 case 'play':
7207 paused = false;
7208 return youTubeApi.playVideo();
7209 case 'pause':
7210 paused = true;
7211 return youTubeApi.pauseVideo();
7212 case 'load':
7213 return null;
7214 }
7215 } else {
7216 apiStack.push({ type: 'call', methodName: methodName });
7217 }
7218 };
7219 };
7220
7221 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7222 assignMethods(methods[_i]);
7223 }
7224
7225 var errorHandler = function errorHandler(error) {
7226 var message = '';
7227 switch (error.data) {
7228 case 2:
7229 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.';
7230 break;
7231 case 5:
7232 message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
7233 break;
7234 case 100:
7235 message = 'The video requested was not found. Either video has been removed or has been marked as private.';
7236 break;
7237 case 101:
7238 case 105:
7239 message = 'The owner of the requested video does not allow it to be played in embedded players.';
7240 break;
7241 default:
7242 message = 'Unknown error.';
7243 break;
7244 }
7245 mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
7246 };
7247
7248 var youtubeContainer = _document2.default.createElement('div');
7249 youtubeContainer.id = youtube.id;
7250
7251 if (youtube.options.youtube.nocookie) {
7252 mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7253 }
7254
7255 mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7256 mediaElement.originalNode.style.display = 'none';
7257
7258 var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7259 height = isAudio ? '1' : mediaElement.originalNode.height,
7260 width = isAudio ? '1' : mediaElement.originalNode.width,
7261 videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7262 youtubeSettings = {
7263 id: youtube.id,
7264 containerId: youtubeContainer.id,
7265 videoId: videoId,
7266 height: height,
7267 width: width,
7268 host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined,
7269 playerVars: Object.assign({
7270 controls: 0,
7271 rel: 0,
7272 disablekb: 1,
7273 showinfo: 0,
7274 modestbranding: 0,
7275 html5: 1,
7276 iv_load_policy: 3
7277 }, youtube.options.youtube),
7278 origin: _window2.default.location.host,
7279 events: {
7280 onReady: function onReady(e) {
7281 mediaElement.youTubeApi = youTubeApi = e.target;
7282 mediaElement.youTubeState = {
7283 paused: true,
7284 ended: false
7285 };
7286
7287 if (apiStack.length) {
7288 for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7289
7290 var stackItem = apiStack[_i2];
7291
7292 if (stackItem.type === 'set') {
7293 var propName = stackItem.propName,
7294 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7295
7296 youtube['set' + capName](stackItem.value);
7297 } else if (stackItem.type === 'call') {
7298 youtube[stackItem.methodName]();
7299 }
7300 }
7301 }
7302
7303 youTubeIframe = youTubeApi.getIframe();
7304
7305 if (mediaElement.originalNode.muted) {
7306 youTubeApi.mute();
7307 }
7308
7309 var events = ['mouseover', 'mouseout'],
7310 assignEvents = function assignEvents(e) {
7311 var newEvent = (0, _general.createEvent)(e.type, youtube);
7312 mediaElement.dispatchEvent(newEvent);
7313 };
7314
7315 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7316 youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7317 }
7318
7319 var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7320
7321 for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7322 var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7323 mediaElement.dispatchEvent(event);
7324 }
7325 },
7326 onStateChange: function onStateChange(e) {
7327 var events = [];
7328
7329 switch (e.data) {
7330 case -1:
7331 events = ['loadedmetadata'];
7332 paused = true;
7333 ended = false;
7334 break;
7335 case 0:
7336 events = ['ended'];
7337 paused = false;
7338 ended = !youtube.options.youtube.loop;
7339 if (!youtube.options.youtube.loop) {
7340 youtube.stopInterval();
7341 }
7342 break;
7343 case 1:
7344 events = ['play', 'playing'];
7345 paused = false;
7346 ended = false;
7347 youtube.startInterval();
7348 break;
7349 case 2:
7350 events = ['pause'];
7351 paused = true;
7352 ended = false;
7353 youtube.stopInterval();
7354 break;
7355 case 3:
7356 events = ['progress'];
7357 ended = false;
7358 break;
7359 case 5:
7360 events = ['loadeddata', 'loadedmetadata', 'canplay'];
7361 paused = true;
7362 ended = false;
7363 break;
7364 }
7365
7366 for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7367 var event = (0, _general.createEvent)(events[_i5], youtube);
7368 mediaElement.dispatchEvent(event);
7369 }
7370 },
7371 onError: function onError(e) {
7372 return errorHandler(e);
7373 }
7374 }
7375 };
7376
7377 if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
7378 youtubeSettings.playerVars.playsinline = 1;
7379 }
7380
7381 if (mediaElement.originalNode.controls) {
7382 youtubeSettings.playerVars.controls = 1;
7383 }
7384 if (mediaElement.originalNode.autoplay) {
7385 youtubeSettings.playerVars.autoplay = 1;
7386 }
7387 if (mediaElement.originalNode.loop) {
7388 youtubeSettings.playerVars.loop = 1;
7389 }
7390
7391 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) {
7392 youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7393 }
7394
7395 YouTubeApi.enqueueIframe(youtubeSettings);
7396
7397 youtube.onEvent = function (eventName, player, _youTubeState) {
7398 if (_youTubeState !== null && _youTubeState !== undefined) {
7399 mediaElement.youTubeState = _youTubeState;
7400 }
7401 };
7402
7403 youtube.setSize = function (width, height) {
7404 if (youTubeApi !== null) {
7405 youTubeApi.setSize(width, height);
7406 }
7407 };
7408 youtube.hide = function () {
7409 youtube.stopInterval();
7410 youtube.pause();
7411 if (youTubeIframe) {
7412 youTubeIframe.style.display = 'none';
7413 }
7414 };
7415 youtube.show = function () {
7416 if (youTubeIframe) {
7417 youTubeIframe.style.display = '';
7418 }
7419 };
7420 youtube.destroy = function () {
7421 youTubeApi.destroy();
7422 };
7423 youtube.interval = null;
7424
7425 youtube.startInterval = function () {
7426 youtube.interval = setInterval(function () {
7427 var event = (0, _general.createEvent)('timeupdate', youtube);
7428 mediaElement.dispatchEvent(event);
7429 }, 250);
7430 };
7431 youtube.stopInterval = function () {
7432 if (youtube.interval) {
7433 clearInterval(youtube.interval);
7434 }
7435 };
7436 youtube.getPosterUrl = function () {
7437 var quality = options.youtube.imageQuality,
7438 resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7439 id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7440 return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7441 };
7442
7443 return youtube;
7444 }
7445};
7446
7447_window2.default.onYouTubePlayerAPIReady = function () {
7448 YouTubeApi.iFrameReady();
7449};
7450
7451_media.typeChecks.push(function (url) {
7452 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7453 );
7454});
7455
7456_renderer.renderer.add(YouTubeIframeRenderer);
7457
7458},{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){
7459'use strict';
7460
7461Object.defineProperty(exports, "__esModule", {
7462 value: true
7463});
7464exports.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;
7465
7466var _window = _dereq_(3);
7467
7468var _window2 = _interopRequireDefault(_window);
7469
7470var _document = _dereq_(2);
7471
7472var _document2 = _interopRequireDefault(_document);
7473
7474var _mejs = _dereq_(7);
7475
7476var _mejs2 = _interopRequireDefault(_mejs);
7477
7478function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7479
7480var NAV = exports.NAV = _window2.default.navigator;
7481var UA = exports.UA = NAV.userAgent.toLowerCase();
7482var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7483var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7484var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7485var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7486var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7487var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7488var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7489var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7490var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7491var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7492var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7493var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7494var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
7495 var element = _document2.default.createElement('x'),
7496 documentElement = _document2.default.documentElement,
7497 getComputedStyle = _window2.default.getComputedStyle;
7498
7499 if (!('pointerEvents' in element.style)) {
7500 return false;
7501 }
7502
7503 element.style.pointerEvents = 'auto';
7504 element.style.pointerEvents = 'x';
7505 documentElement.appendChild(element);
7506 var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto';
7507 element.remove();
7508 return !!supports;
7509}();
7510
7511var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7512 var supportsPassive = false;
7513 try {
7514 var opts = Object.defineProperty({}, 'passive', {
7515 get: function get() {
7516 supportsPassive = true;
7517 }
7518 });
7519 _window2.default.addEventListener('test', null, opts);
7520 } catch (e) {}
7521
7522 return supportsPassive;
7523}();
7524
7525var html5Elements = ['source', 'track', 'audio', 'video'];
7526var video = void 0;
7527
7528for (var i = 0, total = html5Elements.length; i < total; i++) {
7529 video = _document2.default.createElement(html5Elements[i]);
7530}
7531
7532var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA);
7533
7534var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7535
7536var hasNativeFullscreen = video.requestFullscreen !== undefined;
7537
7538if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7539 hasNativeFullscreen = false;
7540 hasiOSFullScreen = false;
7541}
7542
7543var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7544var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7545var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7546var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7547var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7548var fullScreenEventName = '';
7549var isFullScreen = void 0,
7550 requestFullScreen = void 0,
7551 cancelFullScreen = void 0;
7552
7553if (hasMozNativeFullScreen) {
7554 nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7555} else if (hasMsNativeFullScreen) {
7556 nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7557}
7558
7559if (IS_CHROME) {
7560 hasiOSFullScreen = false;
7561}
7562
7563if (hasTrueNativeFullScreen) {
7564 if (hasWebkitNativeFullScreen) {
7565 fullScreenEventName = 'webkitfullscreenchange';
7566 } else if (hasMozNativeFullScreen) {
7567 fullScreenEventName = 'fullscreenchange';
7568 } else if (hasMsNativeFullScreen) {
7569 fullScreenEventName = 'MSFullscreenChange';
7570 }
7571
7572 exports.isFullScreen = isFullScreen = function isFullScreen() {
7573 if (hasMozNativeFullScreen) {
7574 return _document2.default.mozFullScreen;
7575 } else if (hasWebkitNativeFullScreen) {
7576 return _document2.default.webkitIsFullScreen;
7577 } else if (hasMsNativeFullScreen) {
7578 return _document2.default.msFullscreenElement !== null;
7579 }
7580 };
7581
7582 exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7583 if (hasWebkitNativeFullScreen) {
7584 el.webkitRequestFullScreen();
7585 } else if (hasMozNativeFullScreen) {
7586 el.mozRequestFullScreen();
7587 } else if (hasMsNativeFullScreen) {
7588 el.msRequestFullscreen();
7589 }
7590 };
7591
7592 exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7593 if (hasWebkitNativeFullScreen) {
7594 _document2.default.webkitCancelFullScreen();
7595 } else if (hasMozNativeFullScreen) {
7596 _document2.default.mozCancelFullScreen();
7597 } else if (hasMsNativeFullScreen) {
7598 _document2.default.msExitFullscreen();
7599 }
7600 };
7601}
7602
7603var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7604var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7605var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7606var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7607var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7608var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
7609var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7610var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7611exports.isFullScreen = isFullScreen;
7612exports.requestFullScreen = requestFullScreen;
7613exports.cancelFullScreen = cancelFullScreen;
7614
7615
7616_mejs2.default.Features = _mejs2.default.Features || {};
7617_mejs2.default.Features.isiPad = IS_IPAD;
7618_mejs2.default.Features.isiPod = IS_IPOD;
7619_mejs2.default.Features.isiPhone = IS_IPHONE;
7620_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7621_mejs2.default.Features.isAndroid = IS_ANDROID;
7622_mejs2.default.Features.isIE = IS_IE;
7623_mejs2.default.Features.isEdge = IS_EDGE;
7624_mejs2.default.Features.isChrome = IS_CHROME;
7625_mejs2.default.Features.isFirefox = IS_FIREFOX;
7626_mejs2.default.Features.isSafari = IS_SAFARI;
7627_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7628_mejs2.default.Features.hasMSE = HAS_MSE;
7629_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7630_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7631_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7632_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7633_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7634_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7635_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7636_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7637_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7638_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7639_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7640_mejs2.default.Features.isFullScreen = isFullScreen;
7641_mejs2.default.Features.requestFullScreen = requestFullScreen;
7642_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7643
7644},{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){
7645'use strict';
7646
7647Object.defineProperty(exports, "__esModule", {
7648 value: true
7649});
7650exports.removeClass = exports.addClass = exports.hasClass = undefined;
7651exports.loadScript = loadScript;
7652exports.offset = offset;
7653exports.toggleClass = toggleClass;
7654exports.fadeOut = fadeOut;
7655exports.fadeIn = fadeIn;
7656exports.siblings = siblings;
7657exports.visible = visible;
7658exports.ajax = ajax;
7659
7660var _window = _dereq_(3);
7661
7662var _window2 = _interopRequireDefault(_window);
7663
7664var _document = _dereq_(2);
7665
7666var _document2 = _interopRequireDefault(_document);
7667
7668var _mejs = _dereq_(7);
7669
7670var _mejs2 = _interopRequireDefault(_mejs);
7671
7672function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7673
7674function loadScript(url) {
7675 return new Promise(function (resolve, reject) {
7676 var script = _document2.default.createElement('script');
7677 script.src = url;
7678 script.async = true;
7679 script.onload = function () {
7680 script.remove();
7681 resolve();
7682 };
7683 script.onerror = function () {
7684 script.remove();
7685 reject();
7686 };
7687 _document2.default.head.appendChild(script);
7688 });
7689}
7690
7691function offset(el) {
7692 var rect = el.getBoundingClientRect(),
7693 scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7694 scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7695 return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7696}
7697
7698var hasClassMethod = void 0,
7699 addClassMethod = void 0,
7700 removeClassMethod = void 0;
7701
7702if ('classList' in _document2.default.documentElement) {
7703 hasClassMethod = function hasClassMethod(el, className) {
7704 return el.classList !== undefined && el.classList.contains(className);
7705 };
7706 addClassMethod = function addClassMethod(el, className) {
7707 return el.classList.add(className);
7708 };
7709 removeClassMethod = function removeClassMethod(el, className) {
7710 return el.classList.remove(className);
7711 };
7712} else {
7713 hasClassMethod = function hasClassMethod(el, className) {
7714 return new RegExp('\\b' + className + '\\b').test(el.className);
7715 };
7716 addClassMethod = function addClassMethod(el, className) {
7717 if (!hasClass(el, className)) {
7718 el.className += ' ' + className;
7719 }
7720 };
7721 removeClassMethod = function removeClassMethod(el, className) {
7722 el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7723 };
7724}
7725
7726var hasClass = exports.hasClass = hasClassMethod;
7727var addClass = exports.addClass = addClassMethod;
7728var removeClass = exports.removeClass = removeClassMethod;
7729
7730function toggleClass(el, className) {
7731 hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7732}
7733
7734function fadeOut(el) {
7735 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7736 var callback = arguments[2];
7737
7738 if (!el.style.opacity) {
7739 el.style.opacity = 1;
7740 }
7741
7742 var start = null;
7743 _window2.default.requestAnimationFrame(function animate(timestamp) {
7744 start = start || timestamp;
7745 var progress = timestamp - start;
7746 var opacity = parseFloat(1 - progress / duration, 2);
7747 el.style.opacity = opacity < 0 ? 0 : opacity;
7748 if (progress > duration) {
7749 if (callback && typeof callback === 'function') {
7750 callback();
7751 }
7752 } else {
7753 _window2.default.requestAnimationFrame(animate);
7754 }
7755 });
7756}
7757
7758function fadeIn(el) {
7759 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7760 var callback = arguments[2];
7761
7762 if (!el.style.opacity) {
7763 el.style.opacity = 0;
7764 }
7765
7766 var start = null;
7767 _window2.default.requestAnimationFrame(function animate(timestamp) {
7768 start = start || timestamp;
7769 var progress = timestamp - start;
7770 var opacity = parseFloat(progress / duration, 2);
7771 el.style.opacity = opacity > 1 ? 1 : opacity;
7772 if (progress > duration) {
7773 if (callback && typeof callback === 'function') {
7774 callback();
7775 }
7776 } else {
7777 _window2.default.requestAnimationFrame(animate);
7778 }
7779 });
7780}
7781
7782function siblings(el, filter) {
7783 var siblings = [];
7784 el = el.parentNode.firstChild;
7785 do {
7786 if (!filter || filter(el)) {
7787 siblings.push(el);
7788 }
7789 } while (el = el.nextSibling);
7790 return siblings;
7791}
7792
7793function visible(elem) {
7794 if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
7795 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7796 }
7797 return !!(elem.offsetWidth || elem.offsetHeight);
7798}
7799
7800function ajax(url, dataType, success, error) {
7801 var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7802
7803 var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7804 completed = false,
7805 accept = '*/'.concat('*');
7806
7807 switch (dataType) {
7808 case 'text':
7809 type = 'text/plain';
7810 break;
7811 case 'json':
7812 type = 'application/json, text/javascript';
7813 break;
7814 case 'html':
7815 type = 'text/html';
7816 break;
7817 case 'xml':
7818 type = 'application/xml, text/xml';
7819 break;
7820 }
7821
7822 if (type !== 'application/x-www-form-urlencoded') {
7823 accept = type + ', */*; q=0.01';
7824 }
7825
7826 if (xhr) {
7827 xhr.open('GET', url, true);
7828 xhr.setRequestHeader('Accept', accept);
7829 xhr.onreadystatechange = function () {
7830 if (completed) {
7831 return;
7832 }
7833
7834 if (xhr.readyState === 4) {
7835 if (xhr.status === 200) {
7836 completed = true;
7837 var data = void 0;
7838 switch (dataType) {
7839 case 'json':
7840 data = JSON.parse(xhr.responseText);
7841 break;
7842 case 'xml':
7843 data = xhr.responseXML;
7844 break;
7845 default:
7846 data = xhr.responseText;
7847 break;
7848 }
7849 success(data);
7850 } else if (typeof error === 'function') {
7851 error(xhr.status);
7852 }
7853 }
7854 };
7855
7856 xhr.send();
7857 }
7858}
7859
7860_mejs2.default.Utils = _mejs2.default.Utils || {};
7861_mejs2.default.Utils.offset = offset;
7862_mejs2.default.Utils.hasClass = hasClass;
7863_mejs2.default.Utils.addClass = addClass;
7864_mejs2.default.Utils.removeClass = removeClass;
7865_mejs2.default.Utils.toggleClass = toggleClass;
7866_mejs2.default.Utils.fadeIn = fadeIn;
7867_mejs2.default.Utils.fadeOut = fadeOut;
7868_mejs2.default.Utils.siblings = siblings;
7869_mejs2.default.Utils.visible = visible;
7870_mejs2.default.Utils.ajax = ajax;
7871_mejs2.default.Utils.loadScript = loadScript;
7872
7873},{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){
7874'use strict';
7875
7876Object.defineProperty(exports, "__esModule", {
7877 value: true
7878});
7879exports.escapeHTML = escapeHTML;
7880exports.debounce = debounce;
7881exports.isObjectEmpty = isObjectEmpty;
7882exports.splitEvents = splitEvents;
7883exports.createEvent = createEvent;
7884exports.isNodeAfter = isNodeAfter;
7885exports.isString = isString;
7886
7887var _mejs = _dereq_(7);
7888
7889var _mejs2 = _interopRequireDefault(_mejs);
7890
7891function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7892
7893function escapeHTML(input) {
7894
7895 if (typeof input !== 'string') {
7896 throw new Error('Argument passed must be a string');
7897 }
7898
7899 var map = {
7900 '&': '&',
7901 '<': '<',
7902 '>': '>',
7903 '"': '"'
7904 };
7905
7906 return input.replace(/[&<>"]/g, function (c) {
7907 return map[c];
7908 });
7909}
7910
7911function debounce(func, wait) {
7912 var _this = this,
7913 _arguments = arguments;
7914
7915 var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7916
7917
7918 if (typeof func !== 'function') {
7919 throw new Error('First argument must be a function');
7920 }
7921
7922 if (typeof wait !== 'number') {
7923 throw new Error('Second argument must be a numeric value');
7924 }
7925
7926 var timeout = void 0;
7927 return function () {
7928 var context = _this,
7929 args = _arguments;
7930 var later = function later() {
7931 timeout = null;
7932 if (!immediate) {
7933 func.apply(context, args);
7934 }
7935 };
7936 var callNow = immediate && !timeout;
7937 clearTimeout(timeout);
7938 timeout = setTimeout(later, wait);
7939
7940 if (callNow) {
7941 func.apply(context, args);
7942 }
7943 };
7944}
7945
7946function isObjectEmpty(instance) {
7947 return Object.getOwnPropertyNames(instance).length <= 0;
7948}
7949
7950function splitEvents(events, id) {
7951 var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7952
7953 var ret = { d: [], w: [] };
7954 (events || '').split(' ').forEach(function (v) {
7955 var eventName = '' + v + (id ? '.' + id : '');
7956
7957 if (eventName.startsWith('.')) {
7958 ret.d.push(eventName);
7959 ret.w.push(eventName);
7960 } else {
7961 ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7962 }
7963 });
7964
7965 ret.d = ret.d.join(' ');
7966 ret.w = ret.w.join(' ');
7967 return ret;
7968}
7969
7970function createEvent(eventName, target) {
7971
7972 if (typeof eventName !== 'string') {
7973 throw new Error('Event name must be a string');
7974 }
7975
7976 var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7977 detail = {
7978 target: target
7979 };
7980
7981 if (eventFrags !== null) {
7982 eventName = eventFrags[1];
7983 detail.namespace = eventFrags[2];
7984 }
7985
7986 return new window.CustomEvent(eventName, {
7987 detail: detail
7988 });
7989}
7990
7991function isNodeAfter(sourceNode, targetNode) {
7992
7993 return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7994}
7995
7996function isString(value) {
7997 return typeof value === 'string';
7998}
7999
8000_mejs2.default.Utils = _mejs2.default.Utils || {};
8001_mejs2.default.Utils.escapeHTML = escapeHTML;
8002_mejs2.default.Utils.debounce = debounce;
8003_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
8004_mejs2.default.Utils.splitEvents = splitEvents;
8005_mejs2.default.Utils.createEvent = createEvent;
8006_mejs2.default.Utils.isNodeAfter = isNodeAfter;
8007_mejs2.default.Utils.isString = isString;
8008
8009},{"7":7}],28:[function(_dereq_,module,exports){
8010'use strict';
8011
8012Object.defineProperty(exports, "__esModule", {
8013 value: true
8014});
8015exports.typeChecks = undefined;
8016exports.absolutizeUrl = absolutizeUrl;
8017exports.formatType = formatType;
8018exports.getMimeFromType = getMimeFromType;
8019exports.getTypeFromFile = getTypeFromFile;
8020exports.getExtension = getExtension;
8021exports.normalizeExtension = normalizeExtension;
8022
8023var _mejs = _dereq_(7);
8024
8025var _mejs2 = _interopRequireDefault(_mejs);
8026
8027var _general = _dereq_(27);
8028
8029function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8030
8031var typeChecks = exports.typeChecks = [];
8032
8033function absolutizeUrl(url) {
8034
8035 if (typeof url !== 'string') {
8036 throw new Error('`url` argument must be a string');
8037 }
8038
8039 var el = document.createElement('div');
8040 el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
8041 return el.firstChild.href;
8042}
8043
8044function formatType(url) {
8045 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
8046
8047 return url && !type ? getTypeFromFile(url) : type;
8048}
8049
8050function getMimeFromType(type) {
8051
8052 if (typeof type !== 'string') {
8053 throw new Error('`type` argument must be a string');
8054 }
8055
8056 return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
8057}
8058
8059function getTypeFromFile(url) {
8060
8061 if (typeof url !== 'string') {
8062 throw new Error('`url` argument must be a string');
8063 }
8064
8065 for (var i = 0, total = typeChecks.length; i < total; i++) {
8066 var type = typeChecks[i](url);
8067
8068 if (type) {
8069 return type;
8070 }
8071 }
8072
8073 var ext = getExtension(url),
8074 normalizedExt = normalizeExtension(ext);
8075
8076 var mime = 'video/mp4';
8077
8078 if (normalizedExt) {
8079 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) {
8080 mime = 'video/' + normalizedExt;
8081 } else if ('mov' === normalizedExt) {
8082 mime = 'video/quicktime';
8083 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
8084 mime = 'audio/' + normalizedExt;
8085 }
8086 }
8087
8088 return mime;
8089}
8090
8091function getExtension(url) {
8092
8093 if (typeof url !== 'string') {
8094 throw new Error('`url` argument must be a string');
8095 }
8096
8097 var baseUrl = url.split('?')[0],
8098 baseName = baseUrl.split('\\').pop().split('/').pop();
8099 return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
8100}
8101
8102function normalizeExtension(extension) {
8103
8104 if (typeof extension !== 'string') {
8105 throw new Error('`extension` argument must be a string');
8106 }
8107
8108 switch (extension) {
8109 case 'mp4':
8110 case 'm4v':
8111 return 'mp4';
8112 case 'webm':
8113 case 'webma':
8114 case 'webmv':
8115 return 'webm';
8116 case 'ogg':
8117 case 'oga':
8118 case 'ogv':
8119 return 'ogg';
8120 default:
8121 return extension;
8122 }
8123}
8124
8125_mejs2.default.Utils = _mejs2.default.Utils || {};
8126_mejs2.default.Utils.typeChecks = typeChecks;
8127_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8128_mejs2.default.Utils.formatType = formatType;
8129_mejs2.default.Utils.getMimeFromType = getMimeFromType;
8130_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8131_mejs2.default.Utils.getExtension = getExtension;
8132_mejs2.default.Utils.normalizeExtension = normalizeExtension;
8133
8134},{"27":27,"7":7}],29:[function(_dereq_,module,exports){
8135'use strict';
8136
8137var _document = _dereq_(2);
8138
8139var _document2 = _interopRequireDefault(_document);
8140
8141var _promisePolyfill = _dereq_(4);
8142
8143var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8144
8145function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8146
8147(function (arr) {
8148 arr.forEach(function (item) {
8149 if (item.hasOwnProperty('remove')) {
8150 return;
8151 }
8152 Object.defineProperty(item, 'remove', {
8153 configurable: true,
8154 enumerable: true,
8155 writable: true,
8156 value: function remove() {
8157 this.parentNode.removeChild(this);
8158 }
8159 });
8160 });
8161})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8162
8163(function () {
8164
8165 if (typeof window.CustomEvent === 'function') {
8166 return false;
8167 }
8168
8169 function CustomEvent(event, params) {
8170 params = params || { bubbles: false, cancelable: false, detail: undefined };
8171 var evt = _document2.default.createEvent('CustomEvent');
8172 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8173 return evt;
8174 }
8175
8176 CustomEvent.prototype = window.Event.prototype;
8177 window.CustomEvent = CustomEvent;
8178})();
8179
8180if (typeof Object.assign !== 'function') {
8181 Object.assign = function (target) {
8182
8183 if (target === null || target === undefined) {
8184 throw new TypeError('Cannot convert undefined or null to object');
8185 }
8186
8187 var to = Object(target);
8188
8189 for (var index = 1, total = arguments.length; index < total; index++) {
8190 var nextSource = arguments[index];
8191
8192 if (nextSource !== null) {
8193 for (var nextKey in nextSource) {
8194 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8195 to[nextKey] = nextSource[nextKey];
8196 }
8197 }
8198 }
8199 }
8200 return to;
8201 };
8202}
8203
8204if (!String.prototype.startsWith) {
8205 String.prototype.startsWith = function (searchString, position) {
8206 position = position || 0;
8207 return this.substr(position, searchString.length) === searchString;
8208 };
8209}
8210
8211if (!Element.prototype.matches) {
8212 Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8213 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8214 i = matches.length - 1;
8215 while (--i >= 0 && matches.item(i) !== this) {}
8216 return i > -1;
8217 };
8218}
8219
8220if (window.Element && !Element.prototype.closest) {
8221 Element.prototype.closest = function (s) {
8222 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8223 i = void 0,
8224 el = this;
8225 do {
8226 i = matches.length;
8227 while (--i >= 0 && matches.item(i) !== el) {}
8228 } while (i < 0 && (el = el.parentElement));
8229 return el;
8230 };
8231}
8232
8233(function () {
8234 var lastTime = 0;
8235 var vendors = ['ms', 'moz', 'webkit', 'o'];
8236 for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8237 window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8238 window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8239 }
8240
8241 if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8242 var currTime = new Date().getTime();
8243 var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8244 var id = window.setTimeout(function () {
8245 callback(currTime + timeToCall);
8246 }, timeToCall);
8247 lastTime = currTime + timeToCall;
8248 return id;
8249 };
8250
8251 if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8252 clearTimeout(id);
8253 };
8254})();
8255
8256if (/firefox/i.test(navigator.userAgent)) {
8257 var getComputedStyle = window.getComputedStyle;
8258 window.getComputedStyle = function (el, pseudoEl) {
8259 var t = getComputedStyle(el, pseudoEl);
8260 return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
8261 };
8262}
8263
8264if (!window.Promise) {
8265 window.Promise = _promisePolyfill2.default;
8266}
8267
8268(function (constructor) {
8269 if (constructor && constructor.prototype && constructor.prototype.children === null) {
8270 Object.defineProperty(constructor.prototype, 'children', {
8271 get: function get() {
8272 var i = 0,
8273 node = void 0,
8274 nodes = this.childNodes,
8275 children = [];
8276 while (node = nodes[i++]) {
8277 if (node.nodeType === 1) {
8278 children.push(node);
8279 }
8280 }
8281 return children;
8282 }
8283 });
8284 }
8285})(window.Node || window.Element);
8286
8287},{"2":2,"4":4}],30:[function(_dereq_,module,exports){
8288'use strict';
8289
8290Object.defineProperty(exports, "__esModule", {
8291 value: true
8292});
8293exports.isDropFrame = isDropFrame;
8294exports.secondsToTimeCode = secondsToTimeCode;
8295exports.timeCodeToSeconds = timeCodeToSeconds;
8296exports.calculateTimeFormat = calculateTimeFormat;
8297exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8298
8299var _mejs = _dereq_(7);
8300
8301var _mejs2 = _interopRequireDefault(_mejs);
8302
8303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8304
8305function isDropFrame() {
8306 var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8307
8308 return !(fps % 1 === 0);
8309}
8310function secondsToTimeCode(time) {
8311 var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8312 var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8313 var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8314 var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8315 var timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss';
8316
8317
8318 time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8319
8320 var dropFrames = Math.round(fps * 0.066666),
8321 timeBase = Math.round(fps),
8322 framesPer24Hours = Math.round(fps * 3600) * 24,
8323 framesPer10Minutes = Math.round(fps * 600),
8324 frameSep = isDropFrame(fps) ? ';' : ':',
8325 hours = void 0,
8326 minutes = void 0,
8327 seconds = void 0,
8328 frames = void 0,
8329 f = Math.round(time * fps);
8330
8331 if (isDropFrame(fps)) {
8332
8333 if (f < 0) {
8334 f = framesPer24Hours + f;
8335 }
8336
8337 f = f % framesPer24Hours;
8338
8339 var d = Math.floor(f / framesPer10Minutes);
8340 var m = f % framesPer10Minutes;
8341 f = f + dropFrames * 9 * d;
8342 if (m > dropFrames) {
8343 f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8344 }
8345
8346 var timeBaseDivision = Math.floor(f / timeBase);
8347
8348 hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8349 minutes = Math.floor(timeBaseDivision / 60) % 60;
8350
8351 if (showFrameCount) {
8352 seconds = timeBaseDivision % 60;
8353 } else {
8354 seconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength);
8355 }
8356 } else {
8357 hours = Math.floor(time / 3600) % 24;
8358 minutes = Math.floor(time / 60) % 60;
8359 if (showFrameCount) {
8360 seconds = Math.floor(time % 60);
8361 } else {
8362 seconds = Math.floor(time % 60).toFixed(secondsDecimalLength);
8363 }
8364 }
8365 hours = hours <= 0 ? 0 : hours;
8366 minutes = minutes <= 0 ? 0 : minutes;
8367 seconds = seconds <= 0 ? 0 : seconds;
8368
8369 seconds = seconds === 60 ? 0 : seconds;
8370 minutes = minutes === 60 ? 0 : minutes;
8371
8372 var timeFormatFrags = timeFormat.split(':');
8373 var timeFormatSettings = {};
8374 for (var i = 0, total = timeFormatFrags.length; i < total; ++i) {
8375 var unique = '';
8376 for (var j = 0, t = timeFormatFrags[i].length; j < t; j++) {
8377 if (unique.indexOf(timeFormatFrags[i][j]) < 0) {
8378 unique += timeFormatFrags[i][j];
8379 }
8380 }
8381 if (~['f', 's', 'm', 'h'].indexOf(unique)) {
8382 timeFormatSettings[unique] = timeFormatFrags[i].length;
8383 }
8384 }
8385
8386 var result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : '';
8387 result += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':';
8388 result += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds);
8389
8390 if (showFrameCount) {
8391 frames = (f % timeBase).toFixed(0);
8392 frames = frames <= 0 ? 0 : frames;
8393 result += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames;
8394 }
8395
8396 return result;
8397}
8398
8399function timeCodeToSeconds(time) {
8400 var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8401
8402
8403 if (typeof time !== 'string') {
8404 throw new TypeError('Time must be a string');
8405 }
8406
8407 if (time.indexOf(';') > 0) {
8408 time = time.replace(';', ':');
8409 }
8410
8411 if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8412 throw new TypeError('Time code must have the format `00:00:00`');
8413 }
8414
8415 var parts = time.split(':');
8416
8417 var output = void 0,
8418 hours = 0,
8419 minutes = 0,
8420 seconds = 0,
8421 frames = 0,
8422 totalMinutes = 0,
8423 dropFrames = Math.round(fps * 0.066666),
8424 timeBase = Math.round(fps),
8425 hFrames = timeBase * 3600,
8426 mFrames = timeBase * 60;
8427
8428 switch (parts.length) {
8429 default:
8430 case 1:
8431 seconds = parseInt(parts[0], 10);
8432 break;
8433 case 2:
8434 minutes = parseInt(parts[0], 10);
8435 seconds = parseInt(parts[1], 10);
8436 break;
8437 case 3:
8438 hours = parseInt(parts[0], 10);
8439 minutes = parseInt(parts[1], 10);
8440 seconds = parseInt(parts[2], 10);
8441 break;
8442 case 4:
8443 hours = parseInt(parts[0], 10);
8444 minutes = parseInt(parts[1], 10);
8445 seconds = parseInt(parts[2], 10);
8446 frames = parseInt(parts[3], 10);
8447 break;
8448 }
8449
8450 if (isDropFrame(fps)) {
8451 totalMinutes = 60 * hours + minutes;
8452 output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8453 } else {
8454 output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8455 }
8456
8457 return parseFloat(output.toFixed(3));
8458}
8459
8460function calculateTimeFormat(time, options) {
8461 var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8462
8463
8464 time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8465
8466 var hours = Math.floor(time / 3600) % 24,
8467 minutes = Math.floor(time / 60) % 60,
8468 seconds = Math.floor(time % 60),
8469 frames = Math.floor((time % 1 * fps).toFixed(3)),
8470 lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8471
8472 var format = options.timeFormat,
8473 firstTwoPlaces = format[1] === format[0],
8474 separatorIndex = firstTwoPlaces ? 2 : 1,
8475 separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8476 firstChar = format[0],
8477 required = false;
8478
8479 for (var i = 0, len = lis.length; i < len; i++) {
8480 if (~format.indexOf(lis[i][1])) {
8481 required = true;
8482 } else if (required) {
8483 var hasNextValue = false;
8484 for (var j = i; j < len; j++) {
8485 if (lis[j][0] > 0) {
8486 hasNextValue = true;
8487 break;
8488 }
8489 }
8490
8491 if (!hasNextValue) {
8492 break;
8493 }
8494
8495 if (!firstTwoPlaces) {
8496 format = firstChar + format;
8497 }
8498 format = lis[i][1] + separator + format;
8499 if (firstTwoPlaces) {
8500 format = lis[i][1] + format;
8501 }
8502 firstChar = lis[i][1];
8503 }
8504 }
8505
8506 options.timeFormat = format;
8507}
8508
8509function convertSMPTEtoSeconds(SMPTE) {
8510
8511 if (typeof SMPTE !== 'string') {
8512 throw new TypeError('Argument must be a string value');
8513 }
8514
8515 SMPTE = SMPTE.replace(',', '.');
8516
8517 var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8518
8519 var secs = 0,
8520 multiplier = 1;
8521
8522 SMPTE = SMPTE.split(':').reverse();
8523
8524 for (var i = 0, total = SMPTE.length; i < total; i++) {
8525 multiplier = 1;
8526 if (i > 0) {
8527 multiplier = Math.pow(60, i);
8528 }
8529 secs += Number(SMPTE[i]) * multiplier;
8530 }
8531 return Number(secs.toFixed(decimalLen));
8532}
8533
8534_mejs2.default.Utils = _mejs2.default.Utils || {};
8535_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8536_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8537_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8538_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8539
8540},{"7":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);
8541