run:R W Run
DIR
2026-03-11 16:18:51
R W Run
259.6 KB
2026-03-11 16:18:51
R W Run
154.3 KB
2026-03-11 16:18:51
R W Run
2.77 KB
2026-03-11 16:18:51
R W Run
1.16 KB
2026-03-11 16:18:51
R W Run
119.71 KB
2026-03-11 16:18:51
R W Run
66.71 KB
2026-03-11 16:18:51
R W Run
15.39 KB
2026-03-11 16:18:51
R W Run
10.99 KB
2026-03-11 16:18:51
R W Run
15.53 KB
2026-03-11 16:18:51
R W Run
11.14 KB
2026-03-11 16:18:51
R W Run
2.82 KB
2026-03-11 16:18:51
R W Run
4.49 KB
2026-03-11 16:18:51
R W Run
4.84 KB
2026-03-11 16:18:51
R W Run
2.69 KB
2026-03-11 16:18:51
R W Run
4.09 KB
2026-03-11 16:18:51
R W Run
1.08 KB
2026-03-11 16:18:51
R W Run
5.28 KB
2026-03-11 16:18:51
R W Run
3.36 KB
2026-03-11 16:18:51
R W Run
error_log
📄mediaelement-and-player.js
1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function(){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('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
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 '&': '&amp;',
7901 '<': '&lt;',
7902 '>': '&gt;',
7903 '"': '&quot;'
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
Ui Ux Design – Teachers Night Out https://cardgames4educators.com Wed, 16 Oct 2024 22:24:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://cardgames4educators.com/wp-content/uploads/2024/06/cropped-Card-4-Educators-logo-32x32.png Ui Ux Design – Teachers Night Out https://cardgames4educators.com 32 32 Masters In English How English Speaker https://cardgames4educators.com/masters-in-english-how-english-speaker/ https://cardgames4educators.com/masters-in-english-how-english-speaker/#comments Mon, 27 May 2024 08:54:45 +0000 https://themexriver.com/wp/kadu/?p=1

Erat himenaeos neque id sagittis massa. Hac suscipit pulvinar dignissim platea magnis eu. Don tellus a pharetra inceptos efficitur dui pulvinar. Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent pulvinar odio volutpat parturient. Quisque risus finibus suspendisse mus purus magnis facilisi condimentum consectetur dui. Curae elit suspendisse cursus vehicula.

Turpis taciti class non vel pretium quis pulvinar tempor lobortis nunc. Libero phasellus parturient sapien volutpat malesuada ornare. Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae. Porta est tempor ex eget feugiat vulputate ipsum. Justo nec iaculis habitant diam arcu fermentum.

We offer comprehen sive emplo ment services such as assistance wit employer compliance.Our company is your strategic HR partner as instead of HR. john smithson

Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae.

Exploring Learning Landscapes in Academic

Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent.

]]>
https://cardgames4educators.com/masters-in-english-how-english-speaker/feed/ 1