3 * http://www.mediaelementjs.com/
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
11 */(function e(t
,n
,r
){function s(o
,u
){if(!n
[o
]){if(!t
[o
]){var a
=typeof require
=="function"&&require
;if(!u
&&a
)return a(o
,!0);if(i
)return i(o
,!0);var f
=new Error("Cannot find module '"+o
+"'");throw f
.code
="MODULE_NOT_FOUND",f
}var l
=n
[o
]={exports
:{}};t
[o
][0].call(l
.exports
,function(e
){var n
=t
[o
][1][e
];return s(n
?n
:e
)},l
,l
.exports
,e
,t
,n
,r
)}return n
[o
].exports
}var i
=typeof require
=="function"&&require
;for(var o
=0;o
<r
.length
;o
++)s(r
[o
]);return s
})({1:[function(_dereq_
,module
,exports
){
13 },{}],2:[function(_dereq_
,module
,exports
){
15 var topLevel
= typeof global
!== 'undefined' ? global
:
16 typeof window
!== 'undefined' ? window
: {}
17 var minDoc
= _dereq_(1);
21 if (typeof document
!== 'undefined') {
24 doccy
= topLevel
['__GLOBAL_DOCUMENT_CACHE@4'];
27 doccy
= topLevel
['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc
;
31 module
.exports
= doccy
;
33 }).call(this,typeof global
!== "undefined" ? global
: typeof self
!== "undefined" ? self
: typeof window
!== "undefined" ? window
: {})
34 },{"1":1}],3:[function(_dereq_
,module
,exports
){
38 if (typeof window
!== "undefined") {
40 } else if (typeof global
!== "undefined") {
42 } else if (typeof self
!== "undefined"){
50 }).call(this,typeof global
!== "undefined" ? global
: typeof self
!== "undefined" ? self
: typeof window
!== "undefined" ? window
: {})
51 },{}],4:[function(_dereq_
,module
,exports
){
54 // Store setTimeout reference so promise-polyfill will be unaffected by
55 // other code modifying setTimeout (like sinon.useFakeTimers())
56 var setTimeoutFunc
= setTimeout
;
60 // Polyfill for Function.prototype.bind
61 function bind(fn
, thisArg
) {
63 fn
.apply(thisArg
, arguments
);
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');
71 this._handled
= false;
72 this._value
= undefined;
78 function handle(self
, deferred
) {
79 while (self
._state
=== 3) {
82 if (self
._state
=== 0) {
83 self
._deferreds
.push(deferred
);
87 Promise
._immediateFn(function () {
88 var cb
= self
._state
=== 1 ? deferred
.onFulfilled
: deferred
.onRejected
;
90 (self
._state
=== 1 ? resolve
: reject
)(deferred
.promise
, self
._value
);
95 ret
= cb(self
._value
);
97 reject(deferred
.promise
, e
);
100 resolve(deferred
.promise
, ret
);
104 function resolve(self
, newValue
) {
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
) {
112 self
._value
= newValue
;
115 } else if (typeof then
=== 'function') {
116 doResolve(bind(then
, newValue
), self
);
121 self
._value
= newValue
;
128 function reject(self
, newValue
) {
130 self
._value
= newValue
;
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
);
143 for (var i
= 0, len
= self
._deferreds
.length
; i
< len
; i
++) {
144 handle(self
, self
._deferreds
[i
]);
146 self
._deferreds
= null;
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
;
156 * Take a potentially misbehaving resolver function and make sure
157 * onFulfilled and onRejected are only called once.
159 * Makes no guarantees about asynchrony.
161 function doResolve(fn
, self
) {
164 fn(function (value
) {
167 resolve(self
, value
);
168 }, function (reason
) {
171 reject(self
, reason
);
180 Promise
.prototype['catch'] = function (onRejected
) {
181 return this.then(null, onRejected
);
184 Promise
.prototype.then = function (onFulfilled
, onRejected
) {
185 var prom
= new (this.constructor)(noop
);
187 handle(this, new Handler(onFulfilled
, onRejected
, prom
));
191 Promise
.all = function (arr
) {
192 var args
= Array
.prototype.slice
.call(arr
);
194 return new Promise(function (resolve
, reject
) {
195 if (args
.length
=== 0) return resolve([]);
196 var remaining
= args
.length
;
198 function res(i
, val
) {
200 if (val
&& (typeof val
=== 'object' || typeof val
=== 'function')) {
202 if (typeof then
=== 'function') {
203 then
.call(val
, function (val
) {
210 if (--remaining
=== 0) {
218 for (var i
= 0; i
< args
.length
; i
++) {
224 Promise
.resolve = function (value
) {
225 if (value
&& typeof value
=== 'object' && value
.constructor === Promise
) {
229 return new Promise(function (resolve
) {
234 Promise
.reject = function (value
) {
235 return new Promise(function (resolve
, reject
) {
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
);
248 // Use polyfill for setImmediate for performance gains
249 Promise
._immediateFn
= (typeof setImmediate
=== 'function' && function (fn
) { setImmediate(fn
); }) ||
251 setTimeoutFunc(fn
, 0);
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
261 * Set the immediate function to execute callbacks
262 * @param fn {function} Function to execute
265 Promise
._setImmediateFn
= function _setImmediateFn(fn
) {
266 Promise
._immediateFn
= fn
;
270 * Change the function to execute on unhandled rejection
271 * @param {function} fn Function to execute on unhandled rejection
274 Promise
._setUnhandledRejectionFn
= function _setUnhandledRejectionFn(fn
) {
275 Promise
._unhandledRejectionFn
= fn
;
278 if (typeof module
!== 'undefined' && module
.exports
) {
279 module
.exports
= Promise
;
280 } else if (!root
.Promise
) {
281 root
.Promise
= Promise
;
286 },{}],5:[function(_dereq_
,module
,exports
){
289 Object
.defineProperty(exports
, "__esModule", {
293 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
295 var _mejs
= _dereq_(7);
297 var _mejs2
= _interopRequireDefault(_mejs
);
299 var _en
= _dereq_(9);
301 var _general
= _dereq_(18);
303 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
305 var i18n
= { lang
: 'en', en
: _en
.EN
};
307 i18n
.language = function () {
308 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
309 args
[_key
] = arguments
[_key
];
312 if (args
!== null && args
!== undefined && args
.length
) {
314 if (typeof args
[0] !== 'string') {
315 throw new TypeError('Language code must be a string value');
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');
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];
335 i18n
.t = function (message
) {
336 var pluralParam
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : null;
339 if (typeof message
=== 'string' && message
.length
) {
344 var language
= i18n
.language();
346 var _plural
= function _plural(input
, number
, form
) {
348 if ((typeof input
=== 'undefined' ? 'undefined' : _typeof(input
)) !== 'object' || typeof number
!== 'number' || typeof form
!== 'number') {
352 var _pluralForms = function () {
353 return [function () {
354 return arguments
.length
<= 1 ? undefined : arguments
[1];
356 return (arguments
.length
<= 0 ? undefined : arguments
[0]) === 1 ? arguments
.length
<= 1 ? undefined : arguments
[1] : arguments
.length
<= 2 ? undefined : arguments
[2];
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];
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];
365 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
375 return arguments
.length
<= 4 ? undefined : arguments
[4];
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];
383 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
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];
399 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
407 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
415 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
425 return arguments
.length
<= 1 ? undefined : arguments
[1];
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];
437 return arguments
.length
<= 5 ? undefined : arguments
[5];
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];
451 return arguments
.length
<= 6 ? undefined : arguments
[6];
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];
461 return arguments
.length
<= 4 ? undefined : arguments
[4];
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];
469 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
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];
479 return arguments
.length
<= 3 ? undefined : arguments
[3];
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];
489 return arguments
.length
<= 4 ? undefined : arguments
[4];
492 return (arguments
.length
<= 0 ? undefined : arguments
[0]) === 0 ? arguments
.length
<= 1 ? undefined : arguments
[1] : arguments
.length
<= 2 ? undefined : arguments
[2];
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];
501 return arguments
.length
<= 4 ? undefined : arguments
[4];
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];
509 return arguments
.length
<= 3 ? undefined : arguments
[3];
514 return _pluralForms
[form
].apply(null, [number
].concat(input
));
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
]);
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
]);
533 str
= str
|| message
;
535 if (pluralParam
!== null && typeof pluralParam
=== 'number') {
536 str
= str
.replace('%1', pluralParam
);
539 return (0, _general
.escapeHTML
)(str
);
545 _mejs2
.default.i18n
= i18n
;
547 if (typeof mejsL10n
!== 'undefined') {
548 _mejs2
.default.i18n
.language(mejsL10n
.language
, mejsL10n
.strings
);
551 exports
.default = i18n
;
553 },{"18":18,"7":7,"9":9}],6:[function(_dereq_
,module
,exports
){
556 Object
.defineProperty(exports
, "__esModule", {
560 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
562 var _window
= _dereq_(3);
564 var _window2
= _interopRequireDefault(_window
);
566 var _document
= _dereq_(2);
568 var _document2
= _interopRequireDefault(_document
);
570 var _mejs
= _dereq_(7);
572 var _mejs2
= _interopRequireDefault(_mejs
);
574 var _general
= _dereq_(18);
576 var _media2
= _dereq_(19);
578 var _renderer
= _dereq_(8);
580 var _constants
= _dereq_(16);
582 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
584 function _classCallCheck(instance
, Constructor
) { if (!(instance
instanceof Constructor
)) { throw new TypeError("Cannot call a class as a function"); } }
586 var MediaElement
= function MediaElement(idOrNode
, options
, sources
) {
589 _classCallCheck(this, MediaElement
);
593 sources
= Array
.isArray(sources
) ? sources
: null;
598 fakeNodeName
: 'mediaelementwrapper',
600 pluginPath
: 'build/',
602 shimScriptAccess
: 'sameDomain'
605 options
= Object
.assign(t
.defaults
, options
);
607 t
.mediaElement
= _document2
.default.createElement(options
.fakeNodeName
);
612 if (typeof idOrNode
=== 'string') {
613 t
.mediaElement
.originalNode
= _document2
.default.getElementById(idOrNode
);
615 t
.mediaElement
.originalNode
= idOrNode
;
619 if (t
.mediaElement
.originalNode
=== undefined || t
.mediaElement
.originalNode
=== null) {
623 t
.mediaElement
.options
= options
;
624 id
= id
|| 'mejs_' + Math
.random().toString().slice(2);
626 t
.mediaElement
.originalNode
.setAttribute('id', id
+ '_from_mejs');
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');
633 t
.mediaElement
.originalNode
.parentNode
.insertBefore(t
.mediaElement
, t
.mediaElement
.originalNode
);
635 t
.mediaElement
.appendChild(t
.mediaElement
.originalNode
);
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
);
649 xhr
.open('GET', url
);
650 xhr
.responseType
= 'blob';
657 var mediaFiles
= void 0;
659 if (sources
!== null) {
660 mediaFiles
= sources
;
661 } else if (t
.mediaElement
.originalNode
!== null) {
665 switch (t
.mediaElement
.originalNode
.nodeName
.toLowerCase()) {
669 src
: t
.mediaElement
.originalNode
.getAttribute('src')
674 var _sources
= t
.mediaElement
.originalNode
.children
.length
,
675 nodeSource
= t
.mediaElement
.originalNode
.getAttribute('src');
678 var node
= t
.mediaElement
.originalNode
,
679 type
= (0, _media2
.formatType
)(nodeSource
, node
.getAttribute('type'));
682 src
: processURL(nodeSource
, type
)
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
) });
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;
705 t
.mediaElement
.changeRenderer = function (rendererName
, mediaFiles
) {
708 media
= Object
.keys(mediaFiles
[0]).length
> 2 ? mediaFiles
[0] : mediaFiles
[0].src
;
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();
715 t
.mediaElement
.renderer
.show();
716 t
.mediaElement
.renderer
.setSrc(media
);
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();
725 t
.mediaElement
.renderer
.hide();
728 var newRenderer
= t
.mediaElement
.renderers
[rendererName
],
729 newRendererType
= null;
731 if (newRenderer
!== undefined && newRenderer
!== null) {
733 newRenderer
.setSrc(media
);
734 t
.mediaElement
.renderer
= newRenderer
;
735 t
.mediaElement
.rendererName
= rendererName
;
739 var rendererArray
= t
.mediaElement
.options
.renderers
.length
? t
.mediaElement
.options
.renderers
: _renderer
.renderer
.order
;
741 for (var _i
= 0, total
= rendererArray
.length
; _i
< total
; _i
++) {
742 var index
= rendererArray
[_i
];
744 if (index
=== rendererName
) {
745 var rendererList
= _renderer
.renderer
.renderers
;
746 newRendererType
= rendererList
[index
];
748 var renderOptions
= Object
.assign(newRendererType
.options
, t
.mediaElement
.options
);
749 newRenderer
= newRendererType
.create(t
.mediaElement
, renderOptions
, mediaFiles
);
750 newRenderer
.name
= rendererName
;
752 t
.mediaElement
.renderers
[newRendererType
.name
] = newRenderer
;
753 t
.mediaElement
.renderer
= newRenderer
;
754 t
.mediaElement
.rendererName
= rendererName
;
763 t
.mediaElement
.setSize = function (width
, height
) {
764 if (t
.mediaElement
.renderer
!== undefined && t
.mediaElement
.renderer
!== null) {
765 t
.mediaElement
.renderer
.setSize(width
, height
);
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
);
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
]);
786 setFn
= function setFn(newValue
) {
787 oldValue
= onSet
.apply(obj
, [newValue
]);
791 Object
.defineProperty(obj
, name
, {
796 assignGettersSetters
= function assignGettersSetters(propName
) {
797 if (propName
!== 'src') {
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;
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
);
809 addProperty(t
.mediaElement
, propName
, getFn
, setFn
);
810 t
.mediaElement
['get' + capName
] = getFn
;
811 t
.mediaElement
['set' + capName
] = setFn
;
814 getSrc
= function getSrc() {
815 return t
.mediaElement
.renderer
!== undefined && t
.mediaElement
.renderer
!== null ? t
.mediaElement
.renderer
.getSrc() : null;
817 setSrc
= function setSrc(value
) {
820 if (typeof value
=== 'string') {
823 type
: value
? (0, _media2
.getTypeFromFile
)(value
) : ''
825 } else if ((typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
!== undefined) {
826 var _src
= (0, _media2
.absolutizeUrl
)(value
.src
),
828 media
= Object
.assign(value
, {
830 type
: (_type2
=== '' || _type2
=== null || _type2
=== undefined) && _src
? (0, _media2
.getTypeFromFile
)(_src
) : _type2
832 mediaFiles
.push(media
);
833 } else if (Array
.isArray(value
)) {
834 for (var _i2
= 0, total
= value
.length
; _i2
< total
; _i2
++) {
836 var _src2
= (0, _media2
.absolutizeUrl
)(value
[_i2
].src
),
837 _type3
= value
[_i2
].type
,
838 _media
= Object
.assign(value
[_i2
], {
840 type
: (_type3
=== '' || _type3
=== null || _type3
=== undefined) && _src2
? (0, _media2
.getTypeFromFile
)(_src2
) : _type3
843 mediaFiles
.push(_media
);
847 var renderInfo
= _renderer
.renderer
.select(mediaFiles
, t
.mediaElement
.options
.renderers
.length
? t
.mediaElement
.options
.renderers
: []),
850 if (!t
.mediaElement
.paused
) {
851 t
.mediaElement
.pause();
852 event
= (0, _general
.createEvent
)('pause', t
.mediaElement
);
853 t
.mediaElement
.dispatchEvent(event
);
855 t
.mediaElement
.originalNode
.src
= mediaFiles
[0].src
|| '';
857 if (renderInfo
=== null && mediaFiles
[0].src
) {
858 t
.mediaElement
.generateError('No renderer found', mediaFiles
);
862 return mediaFiles
[0].src
? t
.mediaElement
.changeRenderer(renderInfo
.rendererName
, mediaFiles
) : null;
864 triggerAction
= function triggerAction(methodName
, args
) {
866 if (methodName
=== 'play' && t
.mediaElement
.rendererName
=== 'native_dash') {
867 var response
= t
.mediaElement
.renderer
[methodName
](args
);
868 if (response
&& typeof response
.then
=== 'function') {
869 response
.catch(function () {
870 if (t
.mediaElement
.paused
) {
871 setTimeout(function () {
872 var tmpResponse
= t
.mediaElement
.renderer
.play();
873 if (tmpResponse
!== undefined) {
874 tmpResponse
.catch(function () {
875 if (!t
.mediaElement
.renderer
.paused
) {
876 t
.mediaElement
.renderer
.pause();
885 t
.mediaElement
.renderer
[methodName
](args
);
888 t
.mediaElement
.generateError(e
, mediaFiles
);
891 assignMethods
= function assignMethods(methodName
) {
892 t
.mediaElement
[methodName
] = function () {
893 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
894 args
[_key
] = arguments
[_key
];
897 if (t
.mediaElement
.renderer
!== undefined && t
.mediaElement
.renderer
!== null && typeof t
.mediaElement
.renderer
[methodName
] === 'function') {
898 if (t
.mediaElement
.promises
.length
) {
899 Promise
.all(t
.mediaElement
.promises
).then(function () {
900 triggerAction(methodName
, args
);
901 }).catch(function (e
) {
902 t
.mediaElement
.generateError(e
, mediaFiles
);
905 triggerAction(methodName
, args
);
912 addProperty(t
.mediaElement
, 'src', getSrc
, setSrc
);
913 t
.mediaElement
.getSrc
= getSrc
;
914 t
.mediaElement
.setSrc
= setSrc
;
916 for (var _i3
= 0, total
= props
.length
; _i3
< total
; _i3
++) {
917 assignGettersSetters(props
[_i3
]);
920 for (var _i4
= 0, _total
= methods
.length
; _i4
< _total
; _i4
++) {
921 assignMethods(methods
[_i4
]);
924 t
.mediaElement
.addEventListener = function (eventName
, callback
) {
925 t
.mediaElement
.events
[eventName
] = t
.mediaElement
.events
[eventName
] || [];
927 t
.mediaElement
.events
[eventName
].push(callback
);
929 t
.mediaElement
.removeEventListener = function (eventName
, callback
) {
931 t
.mediaElement
.events
= {};
935 var callbacks
= t
.mediaElement
.events
[eventName
];
942 t
.mediaElement
.events
[eventName
] = [];
946 for (var _i5
= 0; _i5
< callbacks
.length
; _i5
++) {
947 if (callbacks
[_i5
] === callback
) {
948 t
.mediaElement
.events
[eventName
].splice(_i5
, 1);
955 t
.mediaElement
.dispatchEvent = function (event
) {
956 var callbacks
= t
.mediaElement
.events
[event
.type
];
958 for (var _i6
= 0; _i6
< callbacks
.length
; _i6
++) {
959 callbacks
[_i6
].apply(null, [event
]);
964 t
.mediaElement
.destroy = function () {
965 var mediaElement
= t
.mediaElement
.originalNode
.cloneNode(true);
966 var wrapper
= t
.mediaElement
.parentElement
;
967 mediaElement
.removeAttribute('id');
968 mediaElement
.remove();
969 t
.mediaElement
.remove();
970 wrapper
.append(mediaElement
);
973 if (mediaFiles
.length
) {
974 t
.mediaElement
.src
= mediaFiles
;
977 if (t
.mediaElement
.promises
.length
) {
978 Promise
.all(t
.mediaElement
.promises
).then(function () {
979 if (t
.mediaElement
.options
.success
) {
980 t
.mediaElement
.options
.success(t
.mediaElement
, t
.mediaElement
.originalNode
);
982 }).catch(function () {
983 if (error
&& t
.mediaElement
.options
.error
) {
984 t
.mediaElement
.options
.error(t
.mediaElement
, t
.mediaElement
.originalNode
);
988 if (t
.mediaElement
.options
.success
) {
989 t
.mediaElement
.options
.success(t
.mediaElement
, t
.mediaElement
.originalNode
);
992 if (error
&& t
.mediaElement
.options
.error
) {
993 t
.mediaElement
.options
.error(t
.mediaElement
, t
.mediaElement
.originalNode
);
997 return t
.mediaElement
;
1000 _window2
.default.MediaElement
= MediaElement
;
1001 _mejs2
.default.MediaElement
= MediaElement
;
1003 exports
.default = MediaElement
;
1005 },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_
,module
,exports
){
1008 Object
.defineProperty(exports
, "__esModule", {
1012 var _window
= _dereq_(3);
1014 var _window2
= _interopRequireDefault(_window
);
1016 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1020 mejs
.version
= '4.2.7';
1023 properties
: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1024 readOnlyProperties
: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1026 methods
: ['load', 'play', 'pause', 'canPlayType'],
1028 events
: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1030 mediaTypes
: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1033 _window2
.default.mejs
= mejs
;
1035 exports
.default = mejs
;
1037 },{"3":3}],8:[function(_dereq_
,module
,exports
){
1040 Object
.defineProperty(exports
, "__esModule", {
1043 exports
.renderer
= undefined;
1045 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
1047 var _createClass = function () { function defineProperties(target
, props
) { for (var i
= 0; i
< props
.length
; i
++) { var descriptor
= props
[i
]; descriptor
.enumerable
= descriptor
.enumerable
|| false; descriptor
.configurable
= true; if ("value" in descriptor
) descriptor
.writable
= true; Object
.defineProperty(target
, descriptor
.key
, descriptor
); } } return function (Constructor
, protoProps
, staticProps
) { if (protoProps
) defineProperties(Constructor
.prototype, protoProps
); if (staticProps
) defineProperties(Constructor
, staticProps
); return Constructor
; }; }();
1049 var _mejs
= _dereq_(7);
1051 var _mejs2
= _interopRequireDefault(_mejs
);
1053 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1055 function _classCallCheck(instance
, Constructor
) { if (!(instance
instanceof Constructor
)) { throw new TypeError("Cannot call a class as a function"); } }
1057 var Renderer = function () {
1058 function Renderer() {
1059 _classCallCheck(this, Renderer
);
1061 this.renderers
= {};
1065 _createClass(Renderer
, [{
1067 value
: function add(renderer
) {
1068 if (renderer
.name
=== undefined) {
1069 throw new TypeError('renderer must contain at least `name` property');
1072 this.renderers
[renderer
.name
] = renderer
;
1073 this.order
.push(renderer
.name
);
1077 value
: function select(mediaFiles
) {
1078 var renderers
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : [];
1080 var renderersLength
= renderers
.length
;
1082 renderers
= renderers
.length
? renderers
: this.order
;
1084 if (!renderersLength
) {
1085 var rendererIndicator
= [/^(html5|native)/i, /^flash/i, /iframe$/i],
1086 rendererRanking
= function rendererRanking(renderer
) {
1087 for (var i
= 0, total
= rendererIndicator
.length
; i
< total
; i
++) {
1088 if (rendererIndicator
[i
].test(renderer
)) {
1092 return rendererIndicator
.length
;
1095 renderers
.sort(function (a
, b
) {
1096 return rendererRanking(a
) - rendererRanking(b
);
1100 for (var i
= 0, total
= renderers
.length
; i
< total
; i
++) {
1101 var key
= renderers
[i
],
1102 _renderer
= this.renderers
[key
];
1104 if (_renderer
!== null && _renderer
!== undefined) {
1105 for (var j
= 0, jl
= mediaFiles
.length
; j
< jl
; j
++) {
1106 if (typeof _renderer
.canPlayType
=== 'function' && typeof mediaFiles
[j
].type
=== 'string' && _renderer
.canPlayType(mediaFiles
[j
].type
)) {
1108 rendererName
: _renderer
.name
,
1109 src
: mediaFiles
[j
].src
1120 set: function set(order
) {
1121 if (!Array
.isArray(order
)) {
1122 throw new TypeError('order must be an array of strings.');
1125 this._order
= order
;
1127 get: function get() {
1132 set: function set(renderers
) {
1133 if (renderers
!== null && (typeof renderers
=== 'undefined' ? 'undefined' : _typeof(renderers
)) !== 'object') {
1134 throw new TypeError('renderers must be an array of objects.');
1137 this._renderers
= renderers
;
1139 get: function get() {
1140 return this._renderers
;
1147 var renderer
= exports
.renderer
= new Renderer();
1149 _mejs2
.default.Renderers
= renderer
;
1151 },{"7":7}],9:[function(_dereq_
,module
,exports
){
1154 Object
.defineProperty(exports
, "__esModule", {
1157 var EN
= exports
.EN
= {
1158 'mejs.plural-form': 1,
1160 'mejs.download-file': 'Download File',
1162 'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
1164 'mejs.fullscreen': 'Fullscreen',
1166 'mejs.play': 'Play',
1167 'mejs.pause': 'Pause',
1169 'mejs.time-slider': 'Time Slider',
1170 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
1171 'mejs.live-broadcast': 'Live Broadcast',
1173 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
1174 'mejs.unmute': 'Unmute',
1175 'mejs.mute': 'Mute',
1176 'mejs.volume-slider': 'Volume Slider',
1178 'mejs.video-player': 'Video Player',
1179 'mejs.audio-player': 'Audio Player',
1181 'mejs.captions-subtitles': 'Captions/Subtitles',
1182 'mejs.captions-chapters': 'Chapters',
1183 'mejs.none': 'None',
1184 'mejs.afrikaans': 'Afrikaans',
1185 'mejs.albanian': 'Albanian',
1186 'mejs.arabic': 'Arabic',
1187 'mejs.belarusian': 'Belarusian',
1188 'mejs.bulgarian': 'Bulgarian',
1189 'mejs.catalan': 'Catalan',
1190 'mejs.chinese': 'Chinese',
1191 'mejs.chinese-simplified': 'Chinese (Simplified)',
1192 'mejs.chinese-traditional': 'Chinese (Traditional)',
1193 'mejs.croatian': 'Croatian',
1194 'mejs.czech': 'Czech',
1195 'mejs.danish': 'Danish',
1196 'mejs.dutch': 'Dutch',
1197 'mejs.english': 'English',
1198 'mejs.estonian': 'Estonian',
1199 'mejs.filipino': 'Filipino',
1200 'mejs.finnish': 'Finnish',
1201 'mejs.french': 'French',
1202 'mejs.galician': 'Galician',
1203 'mejs.german': 'German',
1204 'mejs.greek': 'Greek',
1205 'mejs.haitian-creole': 'Haitian Creole',
1206 'mejs.hebrew': 'Hebrew',
1207 'mejs.hindi': 'Hindi',
1208 'mejs.hungarian': 'Hungarian',
1209 'mejs.icelandic': 'Icelandic',
1210 'mejs.indonesian': 'Indonesian',
1211 'mejs.irish': 'Irish',
1212 'mejs.italian': 'Italian',
1213 'mejs.japanese': 'Japanese',
1214 'mejs.korean': 'Korean',
1215 'mejs.latvian': 'Latvian',
1216 'mejs.lithuanian': 'Lithuanian',
1217 'mejs.macedonian': 'Macedonian',
1218 'mejs.malay': 'Malay',
1219 'mejs.maltese': 'Maltese',
1220 'mejs.norwegian': 'Norwegian',
1221 'mejs.persian': 'Persian',
1222 'mejs.polish': 'Polish',
1223 'mejs.portuguese': 'Portuguese',
1224 'mejs.romanian': 'Romanian',
1225 'mejs.russian': 'Russian',
1226 'mejs.serbian': 'Serbian',
1227 'mejs.slovak': 'Slovak',
1228 'mejs.slovenian': 'Slovenian',
1229 'mejs.spanish': 'Spanish',
1230 'mejs.swahili': 'Swahili',
1231 'mejs.swedish': 'Swedish',
1232 'mejs.tagalog': 'Tagalog',
1233 'mejs.thai': 'Thai',
1234 'mejs.turkish': 'Turkish',
1235 'mejs.ukrainian': 'Ukrainian',
1236 'mejs.vietnamese': 'Vietnamese',
1237 'mejs.welsh': 'Welsh',
1238 'mejs.yiddish': 'Yiddish'
1241 },{}],10:[function(_dereq_
,module
,exports
){
1244 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
1246 var _window
= _dereq_(3);
1248 var _window2
= _interopRequireDefault(_window
);
1250 var _mejs
= _dereq_(7);
1252 var _mejs2
= _interopRequireDefault(_mejs
);
1254 var _renderer
= _dereq_(8);
1256 var _general
= _dereq_(18);
1258 var _media
= _dereq_(19);
1260 var _constants
= _dereq_(16);
1262 var _dom
= _dereq_(17);
1264 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1270 load
: function load(settings
) {
1271 if (typeof dashjs
!== 'undefined') {
1272 NativeDash
.promise
= new Promise(function (resolve
) {
1274 }).then(function () {
1275 NativeDash
._createPlayer(settings
);
1278 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdn.dashjs.org/latest/dash.all.min.js';
1280 NativeDash
.promise
= NativeDash
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
1281 NativeDash
.promise
.then(function () {
1282 NativeDash
._createPlayer(settings
);
1286 return NativeDash
.promise
;
1289 _createPlayer
: function _createPlayer(settings
) {
1290 var player
= dashjs
.MediaPlayer().create();
1291 _window2
.default['__ready__' + settings
.id
](player
);
1296 var DashNativeRenderer
= {
1297 name
: 'native_dash',
1299 prefix
: 'native_dash',
1301 path
: 'https://cdn.dashjs.org/latest/dash.all.min.js',
1309 canPlayType
: function canPlayType(type
) {
1310 return _constants
.HAS_MSE
&& ['application/dash+xml'].indexOf(type
.toLowerCase()) > -1;
1313 create
: function create(mediaElement
, options
, mediaFiles
) {
1315 var originalNode
= mediaElement
.originalNode
,
1316 id
= mediaElement
.id
+ '_' + options
.prefix
,
1317 autoplay
= originalNode
.autoplay
,
1318 children
= originalNode
.children
;
1323 originalNode
.removeAttribute('type');
1324 for (var i
= 0, total
= children
.length
; i
< total
; i
++) {
1325 children
[i
].removeAttribute('type');
1328 node
= originalNode
.cloneNode(true);
1329 options
= Object
.assign(options
, mediaElement
.options
);
1331 var props
= _mejs2
.default.html5media
.properties
,
1332 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']).filter(function (e
) {
1333 return e
!== 'error';
1335 attachNativeEvents
= function attachNativeEvents(e
) {
1336 var event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
1337 mediaElement
.dispatchEvent(event
);
1339 assignGettersSetters
= function assignGettersSetters(propName
) {
1340 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1342 node
['get' + capName
] = function () {
1343 return dashPlayer
!== null ? node
[propName
] : null;
1346 node
['set' + capName
] = function (value
) {
1347 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
1348 if (propName
=== 'src') {
1349 var source
= (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
1350 node
[propName
] = source
;
1351 if (dashPlayer
!== null) {
1353 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
1354 node
.removeEventListener(events
[_i
], attachNativeEvents
);
1356 dashPlayer
= NativeDash
._createPlayer({
1357 options
: options
.dash
,
1361 if (value
&& (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && _typeof(value
.drm
) === 'object') {
1362 dashPlayer
.setProtectionData(value
.drm
);
1363 if ((0, _general
.isString
)(options
.dash
.robustnessLevel
) && options
.dash
.robustnessLevel
) {
1364 dashPlayer
.getProtectionController().setRobustnessLevel(options
.dash
.robustnessLevel
);
1367 dashPlayer
.attachSource(source
);
1373 node
[propName
] = value
;
1379 for (var _i2
= 0, _total2
= props
.length
; _i2
< _total2
; _i2
++) {
1380 assignGettersSetters(props
[_i2
]);
1383 _window2
.default['__ready__' + id
] = function (_dashPlayer
) {
1384 mediaElement
.dashPlayer
= dashPlayer
= _dashPlayer
;
1386 var dashEvents
= dashjs
.MediaPlayer
.events
,
1387 assignEvents
= function assignEvents(eventName
) {
1388 if (eventName
=== 'loadedmetadata') {
1389 dashPlayer
.getDebug().setLogToBrowserConsole(options
.dash
.debug
);
1390 dashPlayer
.initialize();
1391 dashPlayer
.setScheduleWhilePaused(false);
1392 dashPlayer
.setFastSwitchEnabled(true);
1393 dashPlayer
.attachView(node
);
1394 dashPlayer
.setAutoPlay(false);
1396 if (_typeof(options
.dash
.drm
) === 'object' && !_mejs2
.default.Utils
.isObjectEmpty(options
.dash
.drm
)) {
1397 dashPlayer
.setProtectionData(options
.dash
.drm
);
1398 if ((0, _general
.isString
)(options
.dash
.robustnessLevel
) && options
.dash
.robustnessLevel
) {
1399 dashPlayer
.getProtectionController().setRobustnessLevel(options
.dash
.robustnessLevel
);
1402 dashPlayer
.attachSource(node
.getSrc());
1405 node
.addEventListener(eventName
, attachNativeEvents
);
1408 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
1409 assignEvents(events
[_i3
]);
1412 var assignMdashEvents
= function assignMdashEvents(e
) {
1413 if (e
.type
.toLowerCase() === 'error') {
1414 mediaElement
.generateError(e
.message
, node
.src
);
1417 var _event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
1419 mediaElement
.dispatchEvent(_event
);
1423 for (var eventType
in dashEvents
) {
1424 if (dashEvents
.hasOwnProperty(eventType
)) {
1425 dashPlayer
.on(dashEvents
[eventType
], function (e
) {
1426 return assignMdashEvents(e
);
1432 if (mediaFiles
&& mediaFiles
.length
> 0) {
1433 for (var _i4
= 0, _total4
= mediaFiles
.length
; _i4
< _total4
; _i4
++) {
1434 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i4
].type
)) {
1435 node
.setAttribute('src', mediaFiles
[_i4
].src
);
1436 if (typeof mediaFiles
[_i4
].drm
!== 'undefined') {
1437 options
.dash
.drm
= mediaFiles
[_i4
].drm
;
1444 node
.setAttribute('id', id
);
1446 originalNode
.parentNode
.insertBefore(node
, originalNode
);
1447 originalNode
.autoplay
= false;
1448 originalNode
.style
.display
= 'none';
1450 node
.setSize = function (width
, height
) {
1451 node
.style
.width
= width
+ 'px';
1452 node
.style
.height
= height
+ 'px';
1456 node
.hide = function () {
1458 node
.style
.display
= 'none';
1462 node
.show = function () {
1463 node
.style
.display
= '';
1467 node
.destroy = function () {
1468 if (dashPlayer
!== null) {
1473 var event
= (0, _general
.createEvent
)('rendererready', node
);
1474 mediaElement
.dispatchEvent(event
);
1476 mediaElement
.promises
.push(NativeDash
.load({
1477 options
: options
.dash
,
1485 _media
.typeChecks
.push(function (url
) {
1486 return ~url
.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
1489 _renderer
.renderer
.add(DashNativeRenderer
);
1491 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_
,module
,exports
){
1494 Object
.defineProperty(exports
, "__esModule", {
1497 exports
.PluginDetector
= undefined;
1499 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
1501 var _window
= _dereq_(3);
1503 var _window2
= _interopRequireDefault(_window
);
1505 var _document
= _dereq_(2);
1507 var _document2
= _interopRequireDefault(_document
);
1509 var _mejs
= _dereq_(7);
1511 var _mejs2
= _interopRequireDefault(_mejs
);
1513 var _i18n
= _dereq_(5);
1515 var _i18n2
= _interopRequireDefault(_i18n
);
1517 var _renderer
= _dereq_(8);
1519 var _general
= _dereq_(18);
1521 var _constants
= _dereq_(16);
1523 var _media
= _dereq_(19);
1525 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1527 var PluginDetector
= exports
.PluginDetector
= {
1530 hasPluginVersion
: function hasPluginVersion(plugin
, v
) {
1531 var pv
= PluginDetector
.plugins
[plugin
];
1534 return pv
[0] > v
[0] || pv
[0] === v
[0] && pv
[1] > v
[1] || pv
[0] === v
[0] && pv
[1] === v
[1] && pv
[2] >= v
[2];
1537 addPlugin
: function addPlugin(p
, pluginName
, mimeType
, activeX
, axDetect
) {
1538 PluginDetector
.plugins
[p
] = PluginDetector
.detectPlugin(pluginName
, mimeType
, activeX
, axDetect
);
1541 detectPlugin
: function detectPlugin(pluginName
, mimeType
, activeX
, axDetect
) {
1543 var version
= [0, 0, 0],
1544 description
= void 0,
1547 if (_constants
.NAV
.plugins
!== null && _constants
.NAV
.plugins
!== undefined && _typeof(_constants
.NAV
.plugins
[pluginName
]) === 'object') {
1548 description
= _constants
.NAV
.plugins
[pluginName
].description
;
1549 if (description
&& !(typeof _constants
.NAV
.mimeTypes
!== 'undefined' && _constants
.NAV
.mimeTypes
[mimeType
] && !_constants
.NAV
.mimeTypes
[mimeType
].enabledPlugin
)) {
1550 version
= description
.replace(pluginName
, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
1551 for (var i
= 0, total
= version
.length
; i
< total
; i
++) {
1552 version
[i
] = parseInt(version
[i
].match(/\d+/), 10);
1555 } else if (_window2
.default.ActiveXObject
!== undefined) {
1557 ax
= new ActiveXObject(activeX
);
1559 version
= axDetect(ax
);
1569 PluginDetector
.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax
) {
1571 d
= ax
.GetVariable("$version");
1574 d
= d
.split(" ")[1].split(",");
1575 version
= [parseInt(d
[0], 10), parseInt(d
[1], 10), parseInt(d
[2], 10)];
1580 var FlashMediaElementRenderer
= {
1581 create
: function create(mediaElement
, options
, mediaFiles
) {
1584 var isActive
= false;
1586 flash
.options
= options
;
1587 flash
.id
= mediaElement
.id
+ '_' + flash
.options
.prefix
;
1588 flash
.mediaElement
= mediaElement
;
1589 flash
.flashState
= {};
1590 flash
.flashApi
= null;
1591 flash
.flashApiStack
= [];
1593 var props
= _mejs2
.default.html5media
.properties
,
1594 assignGettersSetters
= function assignGettersSetters(propName
) {
1595 flash
.flashState
[propName
] = null;
1597 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1599 flash
['get' + capName
] = function () {
1600 if (flash
.flashApi
!== null) {
1601 if (typeof flash
.flashApi
['get_' + propName
] === 'function') {
1602 var value
= flash
.flashApi
['get_' + propName
]();
1604 if (propName
=== 'buffered') {
1606 start
: function start() {
1609 end
: function end() {
1624 flash
['set' + capName
] = function (value
) {
1625 if (propName
=== 'src') {
1626 value
= (0, _media
.absolutizeUrl
)(value
);
1629 if (flash
.flashApi
!== null && flash
.flashApi
['set_' + propName
] !== undefined) {
1631 flash
.flashApi
['set_' + propName
](value
);
1636 flash
.flashApiStack
.push({
1645 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
1646 assignGettersSetters(props
[i
]);
1649 var methods
= _mejs2
.default.html5media
.methods
,
1650 assignMethods
= function assignMethods(methodName
) {
1651 flash
[methodName
] = function () {
1653 if (flash
.flashApi
!== null) {
1654 if (flash
.flashApi
['fire_' + methodName
]) {
1656 flash
.flashApi
['fire_' + methodName
]();
1664 flash
.flashApiStack
.push({
1666 methodName
: methodName
1672 methods
.push('stop');
1673 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
1674 assignMethods(methods
[_i
]);
1677 var initEvents
= ['rendererready'];
1679 for (var _i2
= 0, _total2
= initEvents
.length
; _i2
< _total2
; _i2
++) {
1680 var event
= (0, _general
.createEvent
)(initEvents
[_i2
], flash
);
1681 mediaElement
.dispatchEvent(event
);
1684 _window2
.default['__ready__' + flash
.id
] = function () {
1686 flash
.flashReady
= true;
1687 flash
.flashApi
= _document2
.default.getElementById('__' + flash
.id
);
1689 if (flash
.flashApiStack
.length
) {
1690 for (var _i3
= 0, _total3
= flash
.flashApiStack
.length
; _i3
< _total3
; _i3
++) {
1691 var stackItem
= flash
.flashApiStack
[_i3
];
1693 if (stackItem
.type
=== 'set') {
1694 var propName
= stackItem
.propName
,
1695 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1697 flash
['set' + capName
](stackItem
.value
);
1698 } else if (stackItem
.type
=== 'call') {
1699 flash
[stackItem
.methodName
]();
1705 _window2
.default['__event__' + flash
.id
] = function (eventName
, message
) {
1706 var event
= (0, _general
.createEvent
)(eventName
, flash
);
1709 event
.data
= JSON
.parse(message
);
1710 event
.details
.data
= JSON
.parse(message
);
1712 event
.message
= message
;
1716 flash
.mediaElement
.dispatchEvent(event
);
1719 flash
.flashWrapper
= _document2
.default.createElement('div');
1721 if (['always', 'sameDomain'].indexOf(flash
.options
.shimScriptAccess
) === -1) {
1722 flash
.options
.shimScriptAccess
= 'sameDomain';
1725 var autoplay
= mediaElement
.originalNode
.autoplay
,
1726 flashVars
= ['uid=' + flash
.id
, 'autoplay=' + autoplay
, 'allowScriptAccess=' + flash
.options
.shimScriptAccess
, 'preload=' + (mediaElement
.originalNode
.getAttribute('preload') || '')],
1727 isVideo
= mediaElement
.originalNode
!== null && mediaElement
.originalNode
.tagName
.toLowerCase() === 'video',
1728 flashHeight
= isVideo
? mediaElement
.originalNode
.height
: 1,
1729 flashWidth
= isVideo
? mediaElement
.originalNode
.width
: 1;
1731 if (mediaElement
.originalNode
.getAttribute('src')) {
1732 flashVars
.push('src=' + mediaElement
.originalNode
.getAttribute('src'));
1735 if (flash
.options
.enablePseudoStreaming
=== true) {
1736 flashVars
.push('pseudostreamstart=' + flash
.options
.pseudoStreamingStartQueryParam
);
1737 flashVars
.push('pseudostreamtype=' + flash
.options
.pseudoStreamingType
);
1740 if (flash
.options
.streamDelimiter
) {
1741 flashVars
.push('streamdelimiter=' + encodeURIComponent(flash
.options
.streamDelimiter
));
1744 if (flash
.options
.proxyType
) {
1745 flashVars
.push('proxytype=' + flash
.options
.proxyType
);
1748 mediaElement
.appendChild(flash
.flashWrapper
);
1749 mediaElement
.originalNode
.style
.display
= 'none';
1753 if (_constants
.IS_IE
|| _constants
.IS_EDGE
) {
1754 var specialIEContainer
= _document2
.default.createElement('div');
1755 flash
.flashWrapper
.appendChild(specialIEContainer
);
1757 if (_constants
.IS_EDGE
) {
1758 settings
= ['type="application/x-shockwave-flash"', 'data="' + flash
.options
.pluginPath
+ flash
.options
.filename
+ '"', 'id="__' + flash
.id
+ '"', 'width="' + flashWidth
+ '"', 'height="' + flashHeight
+ '\'"'];
1760 settings
= ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash
.id
+ '"', 'width="' + flashWidth
+ '"', 'height="' + flashHeight
+ '"'];
1764 settings
.push('style="clip: rect(0 0 0 0); position: absolute;"');
1767 specialIEContainer
.outerHTML
= '<object ' + settings
.join(' ') + '>' + ('<param name="movie" value="' + flash
.options
.pluginPath
+ flash
.options
.filename
+ '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars
.join('&') + '" />') + '<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>';
1770 settings
= ['id="__' + flash
.id
+ '"', 'name="__' + flash
.id
+ '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash
.options
.shimScriptAccess
+ '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash
.options
.pluginPath
+ flash
.options
.filename
+ '"', 'flashvars="' + flashVars
.join('&') + '"'];
1773 settings
.push('width="' + flashWidth
+ '"');
1774 settings
.push('height="' + flashHeight
+ '"');
1776 settings
.push('style="position: fixed; left: -9999em; top: -9999em;"');
1779 flash
.flashWrapper
.innerHTML
= '<embed ' + settings
.join(' ') + '>';
1782 flash
.flashNode
= flash
.flashWrapper
.lastChild
;
1784 flash
.hide = function () {
1787 flash
.flashNode
.style
.display
= 'none';
1790 flash
.show = function () {
1793 flash
.flashNode
.style
.display
= '';
1796 flash
.setSize = function (width
, height
) {
1797 flash
.flashNode
.style
.width
= width
+ 'px';
1798 flash
.flashNode
.style
.height
= height
+ 'px';
1800 if (flash
.flashApi
!== null && typeof flash
.flashApi
.fire_setSize
=== 'function') {
1801 flash
.flashApi
.fire_setSize(width
, height
);
1805 flash
.destroy = function () {
1806 flash
.flashNode
.remove();
1809 if (mediaFiles
&& mediaFiles
.length
> 0) {
1810 for (var _i4
= 0, _total4
= mediaFiles
.length
; _i4
< _total4
; _i4
++) {
1811 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i4
].type
)) {
1812 flash
.setSrc(mediaFiles
[_i4
].src
);
1822 var hasFlash
= PluginDetector
.hasPluginVersion('flash', [10, 0, 0]);
1825 _media
.typeChecks
.push(function (url
) {
1826 url
= url
.toLowerCase();
1828 if (url
.startsWith('rtmp')) {
1829 if (~url
.indexOf('.mp3')) {
1830 return 'audio/rtmp';
1832 return 'video/rtmp';
1834 } else if (/\.og(a|g)/i.test(url
)) {
1836 } else if (~url
.indexOf('.m3u8')) {
1837 return 'application/x-mpegURL';
1838 } else if (~url
.indexOf('.mpd')) {
1839 return 'application/dash+xml';
1840 } else if (~url
.indexOf('.flv')) {
1847 var FlashMediaElementVideoRenderer
= {
1848 name
: 'flash_video',
1850 prefix
: 'flash_video',
1851 filename
: 'mediaelement-flash-video.swf',
1852 enablePseudoStreaming
: false,
1854 pseudoStreamingStartQueryParam
: 'start',
1856 pseudoStreamingType
: 'byte',
1863 canPlayType
: function canPlayType(type
) {
1864 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type
.toLowerCase());
1867 create
: FlashMediaElementRenderer
.create
1870 _renderer
.renderer
.add(FlashMediaElementVideoRenderer
);
1872 var FlashMediaElementHlsVideoRenderer
= {
1875 prefix
: 'flash_hls',
1876 filename
: 'mediaelement-flash-video-hls.swf'
1879 canPlayType
: function canPlayType(type
) {
1880 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type
.toLowerCase());
1883 create
: FlashMediaElementRenderer
.create
1885 _renderer
.renderer
.add(FlashMediaElementHlsVideoRenderer
);
1887 var FlashMediaElementMdashVideoRenderer
= {
1890 prefix
: 'flash_dash',
1891 filename
: 'mediaelement-flash-video-mdash.swf'
1894 canPlayType
: function canPlayType(type
) {
1895 return ~['application/dash+xml'].indexOf(type
.toLowerCase());
1898 create
: FlashMediaElementRenderer
.create
1900 _renderer
.renderer
.add(FlashMediaElementMdashVideoRenderer
);
1902 var FlashMediaElementAudioRenderer
= {
1903 name
: 'flash_audio',
1905 prefix
: 'flash_audio',
1906 filename
: 'mediaelement-flash-audio.swf'
1909 canPlayType
: function canPlayType(type
) {
1910 return ~['audio/mp3'].indexOf(type
.toLowerCase());
1913 create
: FlashMediaElementRenderer
.create
1915 _renderer
.renderer
.add(FlashMediaElementAudioRenderer
);
1917 var FlashMediaElementAudioOggRenderer
= {
1918 name
: 'flash_audio_ogg',
1920 prefix
: 'flash_audio_ogg',
1921 filename
: 'mediaelement-flash-audio-ogg.swf'
1924 canPlayType
: function canPlayType(type
) {
1925 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type
.toLowerCase());
1928 create
: FlashMediaElementRenderer
.create
1930 _renderer
.renderer
.add(FlashMediaElementAudioOggRenderer
);
1933 },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_
,module
,exports
){
1936 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
1938 var _window
= _dereq_(3);
1940 var _window2
= _interopRequireDefault(_window
);
1942 var _mejs
= _dereq_(7);
1944 var _mejs2
= _interopRequireDefault(_mejs
);
1946 var _renderer
= _dereq_(8);
1948 var _general
= _dereq_(18);
1950 var _constants
= _dereq_(16);
1952 var _media
= _dereq_(19);
1954 var _dom
= _dereq_(17);
1956 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1962 load
: function load(settings
) {
1963 if (typeof flvjs
!== 'undefined') {
1964 NativeFlv
.promise
= new Promise(function (resolve
) {
1966 }).then(function () {
1967 NativeFlv
._createPlayer(settings
);
1970 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdn.jsdelivr.net/npm/flv.js@latest';
1972 NativeFlv
.promise
= NativeFlv
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
1973 NativeFlv
.promise
.then(function () {
1974 NativeFlv
._createPlayer(settings
);
1978 return NativeFlv
.promise
;
1981 _createPlayer
: function _createPlayer(settings
) {
1982 flvjs
.LoggingControl
.enableDebug
= settings
.options
.debug
;
1983 flvjs
.LoggingControl
.enableVerbose
= settings
.options
.debug
;
1984 var player
= flvjs
.createPlayer(settings
.options
, settings
.configs
);
1985 _window2
.default['__ready__' + settings
.id
](player
);
1990 var FlvNativeRenderer
= {
1993 prefix
: 'native_flv',
1995 path
: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
2002 canPlayType
: function canPlayType(type
) {
2003 return _constants
.HAS_MSE
&& ['video/x-flv', 'video/flv'].indexOf(type
.toLowerCase()) > -1;
2006 create
: function create(mediaElement
, options
, mediaFiles
) {
2008 var originalNode
= mediaElement
.originalNode
,
2009 id
= mediaElement
.id
+ '_' + options
.prefix
;
2014 node
= originalNode
.cloneNode(true);
2015 options
= Object
.assign(options
, mediaElement
.options
);
2017 var props
= _mejs2
.default.html5media
.properties
,
2018 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']).filter(function (e
) {
2019 return e
!== 'error';
2021 attachNativeEvents
= function attachNativeEvents(e
) {
2022 var event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
2023 mediaElement
.dispatchEvent(event
);
2025 assignGettersSetters
= function assignGettersSetters(propName
) {
2026 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2028 node
['get' + capName
] = function () {
2029 return flvPlayer
!== null ? node
[propName
] : null;
2032 node
['set' + capName
] = function (value
) {
2033 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
2034 if (propName
=== 'src') {
2035 node
[propName
] = (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
2036 if (flvPlayer
!== null) {
2037 var _flvOptions
= {};
2038 _flvOptions
.type
= 'flv';
2039 _flvOptions
.url
= value
;
2040 _flvOptions
.cors
= options
.flv
.cors
;
2041 _flvOptions
.debug
= options
.flv
.debug
;
2042 _flvOptions
.path
= options
.flv
.path
;
2043 var _flvConfigs
= options
.flv
.configs
;
2045 flvPlayer
.destroy();
2046 for (var i
= 0, total
= events
.length
; i
< total
; i
++) {
2047 node
.removeEventListener(events
[i
], attachNativeEvents
);
2049 flvPlayer
= NativeFlv
._createPlayer({
2050 options
: _flvOptions
,
2051 configs
: _flvConfigs
,
2054 flvPlayer
.attachMediaElement(node
);
2058 node
[propName
] = value
;
2064 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2065 assignGettersSetters(props
[i
]);
2068 _window2
.default['__ready__' + id
] = function (_flvPlayer
) {
2069 mediaElement
.flvPlayer
= flvPlayer
= _flvPlayer
;
2071 var flvEvents
= flvjs
.Events
,
2072 assignEvents
= function assignEvents(eventName
) {
2073 if (eventName
=== 'loadedmetadata') {
2075 flvPlayer
.detachMediaElement();
2076 flvPlayer
.attachMediaElement(node
);
2080 node
.addEventListener(eventName
, attachNativeEvents
);
2083 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
2084 assignEvents(events
[_i
]);
2087 var assignFlvEvents
= function assignFlvEvents(name
, data
) {
2088 if (name
=== 'error') {
2089 var message
= data
[0] + ': ' + data
[1] + ' ' + data
[2].msg
;
2090 mediaElement
.generateError(message
, node
.src
);
2092 var _event
= (0, _general
.createEvent
)(name
, mediaElement
);
2094 mediaElement
.dispatchEvent(_event
);
2098 var _loop
= function _loop(eventType
) {
2099 if (flvEvents
.hasOwnProperty(eventType
)) {
2100 flvPlayer
.on(flvEvents
[eventType
], function () {
2101 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
2102 args
[_key
] = arguments
[_key
];
2105 return assignFlvEvents(flvEvents
[eventType
], args
);
2110 for (var eventType
in flvEvents
) {
2115 if (mediaFiles
&& mediaFiles
.length
> 0) {
2116 for (var _i2
= 0, _total2
= mediaFiles
.length
; _i2
< _total2
; _i2
++) {
2117 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i2
].type
)) {
2118 node
.setAttribute('src', mediaFiles
[_i2
].src
);
2124 node
.setAttribute('id', id
);
2126 originalNode
.parentNode
.insertBefore(node
, originalNode
);
2127 originalNode
.autoplay
= false;
2128 originalNode
.style
.display
= 'none';
2130 var flvOptions
= {};
2131 flvOptions
.type
= 'flv';
2132 flvOptions
.url
= node
.src
;
2133 flvOptions
.cors
= options
.flv
.cors
;
2134 flvOptions
.debug
= options
.flv
.debug
;
2135 flvOptions
.path
= options
.flv
.path
;
2136 var flvConfigs
= options
.flv
.configs
;
2138 node
.setSize = function (width
, height
) {
2139 node
.style
.width
= width
+ 'px';
2140 node
.style
.height
= height
+ 'px';
2144 node
.hide = function () {
2145 if (flvPlayer
!== null) {
2148 node
.style
.display
= 'none';
2152 node
.show = function () {
2153 node
.style
.display
= '';
2157 node
.destroy = function () {
2158 if (flvPlayer
!== null) {
2159 flvPlayer
.destroy();
2163 var event
= (0, _general
.createEvent
)('rendererready', node
);
2164 mediaElement
.dispatchEvent(event
);
2166 mediaElement
.promises
.push(NativeFlv
.load({
2167 options
: flvOptions
,
2168 configs
: flvConfigs
,
2176 _media
.typeChecks
.push(function (url
) {
2177 return ~url
.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
2180 _renderer
.renderer
.add(FlvNativeRenderer
);
2182 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_
,module
,exports
){
2185 var _typeof
= typeof Symbol
=== "function" && typeof Symbol
.iterator
=== "symbol" ? function (obj
) { return typeof obj
; } : function (obj
) { return obj
&& typeof Symbol
=== "function" && obj
.constructor === Symbol
&& obj
!== Symbol
.prototype ? "symbol" : typeof obj
; };
2187 var _window
= _dereq_(3);
2189 var _window2
= _interopRequireDefault(_window
);
2191 var _mejs
= _dereq_(7);
2193 var _mejs2
= _interopRequireDefault(_mejs
);
2195 var _renderer
= _dereq_(8);
2197 var _general
= _dereq_(18);
2199 var _constants
= _dereq_(16);
2201 var _media
= _dereq_(19);
2203 var _dom
= _dereq_(17);
2205 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2211 load
: function load(settings
) {
2212 if (typeof Hls
!== 'undefined') {
2213 NativeHls
.promise
= new Promise(function (resolve
) {
2215 }).then(function () {
2216 NativeHls
._createPlayer(settings
);
2219 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdn.jsdelivr.net/npm/hls.js@latest';
2221 NativeHls
.promise
= NativeHls
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
2222 NativeHls
.promise
.then(function () {
2223 NativeHls
._createPlayer(settings
);
2227 return NativeHls
.promise
;
2230 _createPlayer
: function _createPlayer(settings
) {
2231 var player
= new Hls(settings
.options
);
2232 _window2
.default['__ready__' + settings
.id
](player
);
2237 var HlsNativeRenderer
= {
2240 prefix
: 'native_hls',
2242 path
: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
2244 autoStartLoad
: false,
2249 canPlayType
: function canPlayType(type
) {
2250 return _constants
.HAS_MSE
&& ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type
.toLowerCase()) > -1;
2253 create
: function create(mediaElement
, options
, mediaFiles
) {
2255 var originalNode
= mediaElement
.originalNode
,
2256 id
= mediaElement
.id
+ '_' + options
.prefix
,
2257 preload
= originalNode
.getAttribute('preload'),
2258 autoplay
= originalNode
.autoplay
;
2260 var hlsPlayer
= null,
2263 total
= mediaFiles
.length
;
2265 node
= originalNode
.cloneNode(true);
2266 options
= Object
.assign(options
, mediaElement
.options
);
2267 options
.hls
.autoStartLoad
= preload
&& preload
!== 'none' || autoplay
;
2269 var props
= _mejs2
.default.html5media
.properties
,
2270 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']).filter(function (e
) {
2271 return e
!== 'error';
2273 attachNativeEvents
= function attachNativeEvents(e
) {
2274 var event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
2275 mediaElement
.dispatchEvent(event
);
2277 assignGettersSetters
= function assignGettersSetters(propName
) {
2278 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2280 node
['get' + capName
] = function () {
2281 return hlsPlayer
!== null ? node
[propName
] : null;
2284 node
['set' + capName
] = function (value
) {
2285 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
2286 if (propName
=== 'src') {
2287 node
[propName
] = (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
2288 if (hlsPlayer
!== null) {
2289 hlsPlayer
.destroy();
2290 for (var i
= 0, _total
= events
.length
; i
< _total
; i
++) {
2291 node
.removeEventListener(events
[i
], attachNativeEvents
);
2293 hlsPlayer
= NativeHls
._createPlayer({
2294 options
: options
.hls
,
2297 hlsPlayer
.loadSource(value
);
2298 hlsPlayer
.attachMedia(node
);
2301 node
[propName
] = value
;
2307 for (var i
= 0, _total2
= props
.length
; i
< _total2
; i
++) {
2308 assignGettersSetters(props
[i
]);
2311 _window2
.default['__ready__' + id
] = function (_hlsPlayer
) {
2312 mediaElement
.hlsPlayer
= hlsPlayer
= _hlsPlayer
;
2313 var hlsEvents
= Hls
.Events
,
2314 assignEvents
= function assignEvents(eventName
) {
2315 if (eventName
=== 'loadedmetadata') {
2316 var url
= mediaElement
.originalNode
.src
;
2317 hlsPlayer
.detachMedia();
2318 hlsPlayer
.loadSource(url
);
2319 hlsPlayer
.attachMedia(node
);
2322 node
.addEventListener(eventName
, attachNativeEvents
);
2325 for (var _i
= 0, _total3
= events
.length
; _i
< _total3
; _i
++) {
2326 assignEvents(events
[_i
]);
2329 var recoverDecodingErrorDate
= void 0,
2330 recoverSwapAudioCodecDate
= void 0;
2331 var assignHlsEvents
= function assignHlsEvents(name
, data
) {
2332 if (name
=== 'hlsError') {
2337 switch (data
.type
) {
2339 var now
= new Date().getTime();
2340 if (!recoverDecodingErrorDate
|| now
- recoverDecodingErrorDate
> 3000) {
2341 recoverDecodingErrorDate
= new Date().getTime();
2342 hlsPlayer
.recoverMediaError();
2343 } else if (!recoverSwapAudioCodecDate
|| now
- recoverSwapAudioCodecDate
> 3000) {
2344 recoverSwapAudioCodecDate
= new Date().getTime();
2345 console
.warn('Attempting to swap Audio Codec and recover from media error');
2346 hlsPlayer
.swapAudioCodec();
2347 hlsPlayer
.recoverMediaError();
2349 var message
= 'Cannot recover, last media error recovery failed';
2350 mediaElement
.generateError(message
, node
.src
);
2351 console
.error(message
);
2354 case 'networkError':
2355 if (data
.details
=== 'manifestLoadError') {
2356 if (index
< total
&& mediaFiles
[index
+ 1] !== undefined) {
2357 node
.setSrc(mediaFiles
[index
++].src
);
2361 var _message
= 'Network error';
2362 mediaElement
.generateError(_message
, mediaFiles
);
2363 console
.error(_message
);
2366 var _message2
= 'Network error';
2367 mediaElement
.generateError(_message2
, mediaFiles
);
2368 console
.error(_message2
);
2372 hlsPlayer
.destroy();
2377 var _event
= (0, _general
.createEvent
)(name
, mediaElement
);
2379 mediaElement
.dispatchEvent(_event
);
2383 var _loop
= function _loop(eventType
) {
2384 if (hlsEvents
.hasOwnProperty(eventType
)) {
2385 hlsPlayer
.on(hlsEvents
[eventType
], function () {
2386 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
2387 args
[_key
] = arguments
[_key
];
2390 return assignHlsEvents(hlsEvents
[eventType
], args
);
2395 for (var eventType
in hlsEvents
) {
2401 for (; index
< total
; index
++) {
2402 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[index
].type
)) {
2403 node
.setAttribute('src', mediaFiles
[index
].src
);
2409 if (preload
!== 'auto' && !autoplay
) {
2410 node
.addEventListener('play', function () {
2411 if (hlsPlayer
!== null) {
2412 hlsPlayer
.startLoad();
2416 node
.addEventListener('pause', function () {
2417 if (hlsPlayer
!== null) {
2418 hlsPlayer
.stopLoad();
2423 node
.setAttribute('id', id
);
2425 originalNode
.parentNode
.insertBefore(node
, originalNode
);
2426 originalNode
.autoplay
= false;
2427 originalNode
.style
.display
= 'none';
2429 node
.setSize = function (width
, height
) {
2430 node
.style
.width
= width
+ 'px';
2431 node
.style
.height
= height
+ 'px';
2435 node
.hide = function () {
2437 node
.style
.display
= 'none';
2441 node
.show = function () {
2442 node
.style
.display
= '';
2446 node
.destroy = function () {
2447 if (hlsPlayer
!== null) {
2448 hlsPlayer
.stopLoad();
2449 hlsPlayer
.destroy();
2453 var event
= (0, _general
.createEvent
)('rendererready', node
);
2454 mediaElement
.dispatchEvent(event
);
2456 mediaElement
.promises
.push(NativeHls
.load({
2457 options
: options
.hls
,
2465 _media
.typeChecks
.push(function (url
) {
2466 return ~url
.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
2469 _renderer
.renderer
.add(HlsNativeRenderer
);
2471 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_
,module
,exports
){
2474 var _window
= _dereq_(3);
2476 var _window2
= _interopRequireDefault(_window
);
2478 var _document
= _dereq_(2);
2480 var _document2
= _interopRequireDefault(_document
);
2482 var _mejs
= _dereq_(7);
2484 var _mejs2
= _interopRequireDefault(_mejs
);
2486 var _renderer
= _dereq_(8);
2488 var _general
= _dereq_(18);
2490 var _constants
= _dereq_(16);
2492 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2494 var HtmlMediaElement
= {
2500 canPlayType
: function canPlayType(type
) {
2502 var mediaElement
= _document2
.default.createElement('video');
2504 if (_constants
.IS_ANDROID
&& /\/mp(3|4)$/i.test(type
) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type
.toLowerCase()) && _constants
.SUPPORTS_NATIVE_HLS
) {
2506 } else if (mediaElement
.canPlayType
) {
2507 return mediaElement
.canPlayType(type
.toLowerCase()).replace(/no/, '');
2513 create
: function create(mediaElement
, options
, mediaFiles
) {
2515 var id
= mediaElement
.id
+ '_' + options
.prefix
;
2516 var isActive
= false;
2520 if (mediaElement
.originalNode
=== undefined || mediaElement
.originalNode
=== null) {
2521 node
= _document2
.default.createElement('audio');
2522 mediaElement
.appendChild(node
);
2524 node
= mediaElement
.originalNode
;
2527 node
.setAttribute('id', id
);
2529 var props
= _mejs2
.default.html5media
.properties
,
2530 assignGettersSetters
= function assignGettersSetters(propName
) {
2531 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2533 node
['get' + capName
] = function () {
2534 return node
[propName
];
2537 node
['set' + capName
] = function (value
) {
2538 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
2539 node
[propName
] = value
;
2544 for (var i
= 0, _total
= props
.length
; i
< _total
; i
++) {
2545 assignGettersSetters(props
[i
]);
2548 var events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']).filter(function (e
) {
2549 return e
!== 'error';
2551 assignEvents
= function assignEvents(eventName
) {
2552 node
.addEventListener(eventName
, function (e
) {
2554 var _event
= (0, _general
.createEvent
)(e
.type
, e
.target
);
2555 mediaElement
.dispatchEvent(_event
);
2560 for (var _i
= 0, _total2
= events
.length
; _i
< _total2
; _i
++) {
2561 assignEvents(events
[_i
]);
2564 node
.setSize = function (width
, height
) {
2565 node
.style
.width
= width
+ 'px';
2566 node
.style
.height
= height
+ 'px';
2570 node
.hide = function () {
2572 node
.style
.display
= 'none';
2577 node
.show = function () {
2579 node
.style
.display
= '';
2585 total
= mediaFiles
.length
;
2587 for (; index
< total
; index
++) {
2588 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[index
].type
)) {
2589 node
.setAttribute('src', mediaFiles
[index
].src
);
2595 node
.addEventListener('error', function (e
) {
2596 if (e
.target
.error
.code
=== 4 && isActive
) {
2597 if (index
< total
&& mediaFiles
[index
+ 1] !== undefined) {
2598 node
.src
= mediaFiles
[index
++].src
;
2602 mediaElement
.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles
);
2607 var event
= (0, _general
.createEvent
)('rendererready', node
);
2608 mediaElement
.dispatchEvent(event
);
2614 _window2
.default.HtmlMediaElement
= _mejs2
.default.HtmlMediaElement
= HtmlMediaElement
;
2616 _renderer
.renderer
.add(HtmlMediaElement
);
2618 },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_
,module
,exports
){
2621 var _window
= _dereq_(3);
2623 var _window2
= _interopRequireDefault(_window
);
2625 var _document
= _dereq_(2);
2627 var _document2
= _interopRequireDefault(_document
);
2629 var _mejs
= _dereq_(7);
2631 var _mejs2
= _interopRequireDefault(_mejs
);
2633 var _renderer
= _dereq_(8);
2635 var _general
= _dereq_(18);
2637 var _media
= _dereq_(19);
2639 var _dom
= _dereq_(17);
2641 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2644 isIframeStarted
: false,
2646 isIframeLoaded
: false,
2650 enqueueIframe
: function enqueueIframe(settings
) {
2651 YouTubeApi
.isLoaded
= typeof YT
!== 'undefined' && YT
.loaded
;
2653 if (YouTubeApi
.isLoaded
) {
2654 YouTubeApi
.createIframe(settings
);
2656 YouTubeApi
.loadIframeApi();
2657 YouTubeApi
.iframeQueue
.push(settings
);
2661 loadIframeApi
: function loadIframeApi() {
2662 if (!YouTubeApi
.isIframeStarted
) {
2663 (0, _dom
.loadScript
)('https://www.youtube.com/player_api');
2664 YouTubeApi
.isIframeStarted
= true;
2668 iFrameReady
: function iFrameReady() {
2670 YouTubeApi
.isLoaded
= true;
2671 YouTubeApi
.isIframeLoaded
= true;
2673 while (YouTubeApi
.iframeQueue
.length
> 0) {
2674 var settings
= YouTubeApi
.iframeQueue
.pop();
2675 YouTubeApi
.createIframe(settings
);
2679 createIframe
: function createIframe(settings
) {
2680 return new YT
.Player(settings
.containerId
, settings
);
2683 getYouTubeId
: function getYouTubeId(url
) {
2687 if (url
.indexOf('?') > 0) {
2688 youTubeId
= YouTubeApi
.getYouTubeIdFromParam(url
);
2690 if (youTubeId
=== '') {
2691 youTubeId
= YouTubeApi
.getYouTubeIdFromUrl(url
);
2694 youTubeId
= YouTubeApi
.getYouTubeIdFromUrl(url
);
2697 var id
= youTubeId
.substring(youTubeId
.lastIndexOf('/') + 1);
2698 youTubeId
= id
.split('?');
2699 return youTubeId
[0];
2702 getYouTubeIdFromParam
: function getYouTubeIdFromParam(url
) {
2704 if (url
=== undefined || url
=== null || !url
.trim().length
) {
2708 var parts
= url
.split('?'),
2709 parameters
= parts
[1].split('&');
2713 for (var i
= 0, total
= parameters
.length
; i
< total
; i
++) {
2714 var paramParts
= parameters
[i
].split('=');
2715 if (paramParts
[0] === 'v') {
2716 youTubeId
= paramParts
[1];
2724 getYouTubeIdFromUrl
: function getYouTubeIdFromUrl(url
) {
2726 if (url
=== undefined || url
=== null || !url
.trim().length
) {
2730 var parts
= url
.split('?');
2732 return url
.substring(url
.lastIndexOf('/') + 1);
2735 getYouTubeNoCookieUrl
: function getYouTubeNoCookieUrl(url
) {
2736 if (url
=== undefined || url
=== null || !url
.trim().length
|| url
.indexOf('//www.youtube') === -1) {
2740 var parts
= url
.split('/');
2741 parts
[2] = parts
[2].replace('.com', '-nocookie.com');
2742 return parts
.join('/');
2746 var YouTubeIframeRenderer
= {
2747 name
: 'youtube_iframe',
2750 prefix
: 'youtube_iframe',
2771 canPlayType
: function canPlayType(type
) {
2772 return ~['video/youtube', 'video/x-youtube'].indexOf(type
.toLowerCase());
2775 create
: function create(mediaElement
, options
, mediaFiles
) {
2781 var youTubeApi
= null,
2784 youTubeIframe
= null,
2787 youtube
.options
= options
;
2788 youtube
.id
= mediaElement
.id
+ '_' + options
.prefix
;
2789 youtube
.mediaElement
= mediaElement
;
2791 var props
= _mejs2
.default.html5media
.properties
,
2792 assignGettersSetters
= function assignGettersSetters(propName
) {
2794 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2796 youtube
['get' + capName
] = function () {
2797 if (youTubeApi
!== null) {
2802 return youTubeApi
.getCurrentTime();
2804 return youTubeApi
.getDuration();
2806 volume
= youTubeApi
.getVolume() / 100;
2813 return youTubeApi
.isMuted();
2815 var percentLoaded
= youTubeApi
.getVideoLoadedFraction(),
2816 duration
= youTubeApi
.getDuration();
2818 start
: function start() {
2821 end
: function end() {
2822 return percentLoaded
* duration
;
2827 return youTubeApi
.getVideoUrl();
2838 youtube
['set' + capName
] = function (value
) {
2839 if (youTubeApi
!== null) {
2842 var url
= typeof value
=== 'string' ? value
: value
[0].src
,
2843 _videoId
= YouTubeApi
.getYouTubeId(url
);
2845 if (mediaElement
.originalNode
.autoplay
) {
2846 youTubeApi
.loadVideoById(_videoId
);
2848 youTubeApi
.cueVideoById(_videoId
);
2852 youTubeApi
.seekTo(value
);
2858 youTubeApi
.unMute();
2860 setTimeout(function () {
2861 var event
= (0, _general
.createEvent
)('volumechange', youtube
);
2862 mediaElement
.dispatchEvent(event
);
2867 youTubeApi
.setVolume(value
* 100);
2868 setTimeout(function () {
2869 var event
= (0, _general
.createEvent
)('volumechange', youtube
);
2870 mediaElement
.dispatchEvent(event
);
2874 var event
= (0, _general
.createEvent
)('canplay', youtube
);
2875 mediaElement
.dispatchEvent(event
);
2882 apiStack
.push({ type
: 'set', propName
: propName
, value
: value
});
2887 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2888 assignGettersSetters(props
[i
]);
2891 var methods
= _mejs2
.default.html5media
.methods
,
2892 assignMethods
= function assignMethods(methodName
) {
2893 youtube
[methodName
] = function () {
2894 if (youTubeApi
!== null) {
2895 switch (methodName
) {
2898 return youTubeApi
.playVideo();
2901 return youTubeApi
.pauseVideo();
2906 apiStack
.push({ type
: 'call', methodName
: methodName
});
2911 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
2912 assignMethods(methods
[_i
]);
2915 var errorHandler
= function errorHandler(error
) {
2917 switch (error
.data
) {
2919 message
= 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
2922 message
= 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
2925 message
= 'The video requested was not found. Either video has been removed or has been marked as private.';
2929 message
= 'The owner of the requested video does not allow it to be played in embedded players.';
2932 message
= 'Unknown error.';
2935 mediaElement
.generateError('Code ' + error
.data
+ ': ' + message
, mediaFiles
);
2938 var youtubeContainer
= _document2
.default.createElement('div');
2939 youtubeContainer
.id
= youtube
.id
;
2941 if (youtube
.options
.youtube
.nocookie
) {
2942 mediaElement
.originalNode
.src
= YouTubeApi
.getYouTubeNoCookieUrl(mediaFiles
[0].src
);
2945 mediaElement
.originalNode
.parentNode
.insertBefore(youtubeContainer
, mediaElement
.originalNode
);
2946 mediaElement
.originalNode
.style
.display
= 'none';
2948 var isAudio
= mediaElement
.originalNode
.tagName
.toLowerCase() === 'audio',
2949 height
= isAudio
? '1' : mediaElement
.originalNode
.height
,
2950 width
= isAudio
? '1' : mediaElement
.originalNode
.width
,
2951 videoId
= YouTubeApi
.getYouTubeId(mediaFiles
[0].src
),
2954 containerId
: youtubeContainer
.id
,
2958 playerVars
: Object
.assign({
2966 }, youtube
.options
.youtube
),
2967 origin
: _window2
.default.location
.host
,
2969 onReady
: function onReady(e
) {
2970 mediaElement
.youTubeApi
= youTubeApi
= e
.target
;
2971 mediaElement
.youTubeState
= {
2976 if (apiStack
.length
) {
2977 for (var _i2
= 0, _total2
= apiStack
.length
; _i2
< _total2
; _i2
++) {
2979 var stackItem
= apiStack
[_i2
];
2981 if (stackItem
.type
=== 'set') {
2982 var propName
= stackItem
.propName
,
2983 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2985 youtube
['set' + capName
](stackItem
.value
);
2986 } else if (stackItem
.type
=== 'call') {
2987 youtube
[stackItem
.methodName
]();
2992 youTubeIframe
= youTubeApi
.getIframe();
2994 if (mediaElement
.originalNode
.muted
) {
2998 var events
= ['mouseover', 'mouseout'],
2999 assignEvents
= function assignEvents(e
) {
3000 var newEvent
= (0, _general
.createEvent
)(e
.type
, youtube
);
3001 mediaElement
.dispatchEvent(newEvent
);
3004 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
3005 youTubeIframe
.addEventListener(events
[_i3
], assignEvents
, false);
3008 var initEvents
= ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
3010 for (var _i4
= 0, _total4
= initEvents
.length
; _i4
< _total4
; _i4
++) {
3011 var event
= (0, _general
.createEvent
)(initEvents
[_i4
], youtube
);
3012 mediaElement
.dispatchEvent(event
);
3015 onStateChange
: function onStateChange(e
) {
3020 events
= ['loadedmetadata'];
3027 ended
= !youtube
.options
.youtube
.loop
;
3028 if (!youtube
.options
.youtube
.loop
) {
3029 youtube
.stopInterval();
3033 events
= ['play', 'playing'];
3036 youtube
.startInterval();
3042 youtube
.stopInterval();
3045 events
= ['progress'];
3049 events
= ['loadeddata', 'loadedmetadata', 'canplay'];
3055 for (var _i5
= 0, _total5
= events
.length
; _i5
< _total5
; _i5
++) {
3056 var event
= (0, _general
.createEvent
)(events
[_i5
], youtube
);
3057 mediaElement
.dispatchEvent(event
);
3060 onError
: function onError(e
) {
3061 return errorHandler(e
);
3066 if (isAudio
|| mediaElement
.originalNode
.hasAttribute('playsinline')) {
3067 youtubeSettings
.playerVars
.playsinline
= 1;
3070 if (mediaElement
.originalNode
.controls
) {
3071 youtubeSettings
.playerVars
.controls
= 1;
3073 if (mediaElement
.originalNode
.autoplay
) {
3074 youtubeSettings
.playerVars
.autoplay
= 1;
3076 if (mediaElement
.originalNode
.loop
) {
3077 youtubeSettings
.playerVars
.loop
= 1;
3080 if ((youtubeSettings
.playerVars
.loop
&& parseInt(youtubeSettings
.playerVars
.loop
, 10) === 1 || mediaElement
.originalNode
.src
.indexOf('loop=') > -1) && !youtubeSettings
.playerVars
.playlist
&& mediaElement
.originalNode
.src
.indexOf('playlist=') === -1) {
3081 youtubeSettings
.playerVars
.playlist
= YouTubeApi
.getYouTubeId(mediaElement
.originalNode
.src
);
3084 YouTubeApi
.enqueueIframe(youtubeSettings
);
3086 youtube
.onEvent = function (eventName
, player
, _youTubeState
) {
3087 if (_youTubeState
!== null && _youTubeState
!== undefined) {
3088 mediaElement
.youTubeState
= _youTubeState
;
3092 youtube
.setSize = function (width
, height
) {
3093 if (youTubeApi
!== null) {
3094 youTubeApi
.setSize(width
, height
);
3097 youtube
.hide = function () {
3098 youtube
.stopInterval();
3100 if (youTubeIframe
) {
3101 youTubeIframe
.style
.display
= 'none';
3104 youtube
.show = function () {
3105 if (youTubeIframe
) {
3106 youTubeIframe
.style
.display
= '';
3109 youtube
.destroy = function () {
3110 youTubeApi
.destroy();
3112 youtube
.interval
= null;
3114 youtube
.startInterval = function () {
3115 youtube
.interval
= setInterval(function () {
3116 var event
= (0, _general
.createEvent
)('timeupdate', youtube
);
3117 mediaElement
.dispatchEvent(event
);
3120 youtube
.stopInterval = function () {
3121 if (youtube
.interval
) {
3122 clearInterval(youtube
.interval
);
3125 youtube
.getPosterUrl = function () {
3126 var quality
= options
.youtube
.imageQuality
,
3127 resolutions
= ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
3128 id
= YouTubeApi
.getYouTubeId(mediaElement
.originalNode
.src
);
3129 return quality
&& resolutions
.indexOf(quality
) > -1 && id
? 'https://img.youtube.com/vi/' + id
+ '/' + quality
+ '.jpg' : '';
3136 _window2
.default.onYouTubePlayerAPIReady = function () {
3137 YouTubeApi
.iFrameReady();
3140 _media
.typeChecks
.push(function (url
) {
3141 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url
) ? 'video/x-youtube' : null
3145 _renderer
.renderer
.add(YouTubeIframeRenderer
);
3147 },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_
,module
,exports
){
3150 Object
.defineProperty(exports
, "__esModule", {
3153 exports
.cancelFullScreen
= exports
.requestFullScreen
= exports
.isFullScreen
= exports
.FULLSCREEN_EVENT_NAME
= exports
.HAS_NATIVE_FULLSCREEN_ENABLED
= exports
.HAS_TRUE_NATIVE_FULLSCREEN
= exports
.HAS_IOS_FULLSCREEN
= exports
.HAS_MS_NATIVE_FULLSCREEN
= exports
.HAS_MOZ_NATIVE_FULLSCREEN
= exports
.HAS_WEBKIT_NATIVE_FULLSCREEN
= exports
.HAS_NATIVE_FULLSCREEN
= exports
.SUPPORTS_NATIVE_HLS
= exports
.SUPPORT_PASSIVE_EVENT
= exports
.SUPPORT_POINTER_EVENTS
= exports
.HAS_MSE
= exports
.IS_STOCK_ANDROID
= exports
.IS_SAFARI
= exports
.IS_FIREFOX
= exports
.IS_CHROME
= exports
.IS_EDGE
= exports
.IS_IE
= exports
.IS_ANDROID
= exports
.IS_IOS
= exports
.IS_IPOD
= exports
.IS_IPHONE
= exports
.IS_IPAD
= exports
.UA
= exports
.NAV
= undefined;
3155 var _window
= _dereq_(3);
3157 var _window2
= _interopRequireDefault(_window
);
3159 var _document
= _dereq_(2);
3161 var _document2
= _interopRequireDefault(_document
);
3163 var _mejs
= _dereq_(7);
3165 var _mejs2
= _interopRequireDefault(_mejs
);
3167 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3169 var NAV
= exports
.NAV
= _window2
.default.navigator
;
3170 var UA
= exports
.UA
= NAV
.userAgent
.toLowerCase();
3171 var IS_IPAD
= exports
.IS_IPAD
= /ipad/i.test(UA
) && !_window2
.default.MSStream
;
3172 var IS_IPHONE
= exports
.IS_IPHONE
= /iphone/i.test(UA
) && !_window2
.default.MSStream
;
3173 var IS_IPOD
= exports
.IS_IPOD
= /ipod/i.test(UA
) && !_window2
.default.MSStream
;
3174 var IS_IOS
= exports
.IS_IOS
= /ipad|iphone|ipod/i.test(UA
) && !_window2
.default.MSStream
;
3175 var IS_ANDROID
= exports
.IS_ANDROID
= /android/i.test(UA
);
3176 var IS_IE
= exports
.IS_IE
= /(trident|microsoft)/i.test(NAV
.appName
);
3177 var IS_EDGE
= exports
.IS_EDGE
= 'msLaunchUri' in NAV
&& !('documentMode' in _document2
.default);
3178 var IS_CHROME
= exports
.IS_CHROME
= /chrome/i.test(UA
);
3179 var IS_FIREFOX
= exports
.IS_FIREFOX
= /firefox/i.test(UA
);
3180 var IS_SAFARI
= exports
.IS_SAFARI
= /safari/i.test(UA
) && !IS_CHROME
;
3181 var IS_STOCK_ANDROID
= exports
.IS_STOCK_ANDROID
= /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA
);
3182 var HAS_MSE
= exports
.HAS_MSE
= 'MediaSource' in _window2
.default;
3183 var SUPPORT_POINTER_EVENTS
= exports
.SUPPORT_POINTER_EVENTS = function () {
3184 var element
= _document2
.default.createElement('x'),
3185 documentElement
= _document2
.default.documentElement
,
3186 getComputedStyle
= _window2
.default.getComputedStyle
;
3188 if (!('pointerEvents' in element
.style
)) {
3192 element
.style
.pointerEvents
= 'auto';
3193 element
.style
.pointerEvents
= 'x';
3194 documentElement
.appendChild(element
);
3195 var supports
= getComputedStyle
&& getComputedStyle(element
, '').pointerEvents
=== 'auto';
3200 var SUPPORT_PASSIVE_EVENT
= exports
.SUPPORT_PASSIVE_EVENT = function () {
3201 var supportsPassive
= false;
3203 var opts
= Object
.defineProperty({}, 'passive', {
3204 get: function get() {
3205 supportsPassive
= true;
3208 _window2
.default.addEventListener('test', null, opts
);
3211 return supportsPassive
;
3214 var html5Elements
= ['source', 'track', 'audio', 'video'];
3217 for (var i
= 0, total
= html5Elements
.length
; i
< total
; i
++) {
3218 video
= _document2
.default.createElement(html5Elements
[i
]);
3221 var SUPPORTS_NATIVE_HLS
= exports
.SUPPORTS_NATIVE_HLS
= IS_SAFARI
|| IS_ANDROID
&& (IS_CHROME
|| IS_STOCK_ANDROID
) || IS_IE
&& /edge/i.test(UA
);
3223 var hasiOSFullScreen
= video
.webkitEnterFullscreen
!== undefined;
3225 var hasNativeFullscreen
= video
.requestFullscreen
!== undefined;
3227 if (hasiOSFullScreen
&& /mac os x 10_5/i.test(UA
)) {
3228 hasNativeFullscreen
= false;
3229 hasiOSFullScreen
= false;
3232 var hasWebkitNativeFullScreen
= video
.webkitRequestFullScreen
!== undefined;
3233 var hasMozNativeFullScreen
= video
.mozRequestFullScreen
!== undefined;
3234 var hasMsNativeFullScreen
= video
.msRequestFullscreen
!== undefined;
3235 var hasTrueNativeFullScreen
= hasWebkitNativeFullScreen
|| hasMozNativeFullScreen
|| hasMsNativeFullScreen
;
3236 var nativeFullScreenEnabled
= hasTrueNativeFullScreen
;
3237 var fullScreenEventName
= '';
3238 var isFullScreen
= void 0,
3239 requestFullScreen
= void 0,
3240 cancelFullScreen
= void 0;
3242 if (hasMozNativeFullScreen
) {
3243 nativeFullScreenEnabled
= _document2
.default.mozFullScreenEnabled
;
3244 } else if (hasMsNativeFullScreen
) {
3245 nativeFullScreenEnabled
= _document2
.default.msFullscreenEnabled
;
3249 hasiOSFullScreen
= false;
3252 if (hasTrueNativeFullScreen
) {
3253 if (hasWebkitNativeFullScreen
) {
3254 fullScreenEventName
= 'webkitfullscreenchange';
3255 } else if (hasMozNativeFullScreen
) {
3256 fullScreenEventName
= 'mozfullscreenchange';
3257 } else if (hasMsNativeFullScreen
) {
3258 fullScreenEventName
= 'MSFullscreenChange';
3261 exports
.isFullScreen
= isFullScreen
= function isFullScreen() {
3262 if (hasMozNativeFullScreen
) {
3263 return _document2
.default.mozFullScreen
;
3264 } else if (hasWebkitNativeFullScreen
) {
3265 return _document2
.default.webkitIsFullScreen
;
3266 } else if (hasMsNativeFullScreen
) {
3267 return _document2
.default.msFullscreenElement
!== null;
3271 exports
.requestFullScreen
= requestFullScreen
= function requestFullScreen(el
) {
3272 if (hasWebkitNativeFullScreen
) {
3273 el
.webkitRequestFullScreen();
3274 } else if (hasMozNativeFullScreen
) {
3275 el
.mozRequestFullScreen();
3276 } else if (hasMsNativeFullScreen
) {
3277 el
.msRequestFullscreen();
3281 exports
.cancelFullScreen
= cancelFullScreen
= function cancelFullScreen() {
3282 if (hasWebkitNativeFullScreen
) {
3283 _document2
.default.webkitCancelFullScreen();
3284 } else if (hasMozNativeFullScreen
) {
3285 _document2
.default.mozCancelFullScreen();
3286 } else if (hasMsNativeFullScreen
) {
3287 _document2
.default.msExitFullscreen();
3292 var HAS_NATIVE_FULLSCREEN
= exports
.HAS_NATIVE_FULLSCREEN
= hasNativeFullscreen
;
3293 var HAS_WEBKIT_NATIVE_FULLSCREEN
= exports
.HAS_WEBKIT_NATIVE_FULLSCREEN
= hasWebkitNativeFullScreen
;
3294 var HAS_MOZ_NATIVE_FULLSCREEN
= exports
.HAS_MOZ_NATIVE_FULLSCREEN
= hasMozNativeFullScreen
;
3295 var HAS_MS_NATIVE_FULLSCREEN
= exports
.HAS_MS_NATIVE_FULLSCREEN
= hasMsNativeFullScreen
;
3296 var HAS_IOS_FULLSCREEN
= exports
.HAS_IOS_FULLSCREEN
= hasiOSFullScreen
;
3297 var HAS_TRUE_NATIVE_FULLSCREEN
= exports
.HAS_TRUE_NATIVE_FULLSCREEN
= hasTrueNativeFullScreen
;
3298 var HAS_NATIVE_FULLSCREEN_ENABLED
= exports
.HAS_NATIVE_FULLSCREEN_ENABLED
= nativeFullScreenEnabled
;
3299 var FULLSCREEN_EVENT_NAME
= exports
.FULLSCREEN_EVENT_NAME
= fullScreenEventName
;
3300 exports
.isFullScreen
= isFullScreen
;
3301 exports
.requestFullScreen
= requestFullScreen
;
3302 exports
.cancelFullScreen
= cancelFullScreen
;
3305 _mejs2
.default.Features
= _mejs2
.default.Features
|| {};
3306 _mejs2
.default.Features
.isiPad
= IS_IPAD
;
3307 _mejs2
.default.Features
.isiPod
= IS_IPOD
;
3308 _mejs2
.default.Features
.isiPhone
= IS_IPHONE
;
3309 _mejs2
.default.Features
.isiOS
= _mejs2
.default.Features
.isiPhone
|| _mejs2
.default.Features
.isiPad
;
3310 _mejs2
.default.Features
.isAndroid
= IS_ANDROID
;
3311 _mejs2
.default.Features
.isIE
= IS_IE
;
3312 _mejs2
.default.Features
.isEdge
= IS_EDGE
;
3313 _mejs2
.default.Features
.isChrome
= IS_CHROME
;
3314 _mejs2
.default.Features
.isFirefox
= IS_FIREFOX
;
3315 _mejs2
.default.Features
.isSafari
= IS_SAFARI
;
3316 _mejs2
.default.Features
.isStockAndroid
= IS_STOCK_ANDROID
;
3317 _mejs2
.default.Features
.hasMSE
= HAS_MSE
;
3318 _mejs2
.default.Features
.supportsNativeHLS
= SUPPORTS_NATIVE_HLS
;
3319 _mejs2
.default.Features
.supportsPointerEvents
= SUPPORT_POINTER_EVENTS
;
3320 _mejs2
.default.Features
.supportsPassiveEvent
= SUPPORT_PASSIVE_EVENT
;
3321 _mejs2
.default.Features
.hasiOSFullScreen
= HAS_IOS_FULLSCREEN
;
3322 _mejs2
.default.Features
.hasNativeFullscreen
= HAS_NATIVE_FULLSCREEN
;
3323 _mejs2
.default.Features
.hasWebkitNativeFullScreen
= HAS_WEBKIT_NATIVE_FULLSCREEN
;
3324 _mejs2
.default.Features
.hasMozNativeFullScreen
= HAS_MOZ_NATIVE_FULLSCREEN
;
3325 _mejs2
.default.Features
.hasMsNativeFullScreen
= HAS_MS_NATIVE_FULLSCREEN
;
3326 _mejs2
.default.Features
.hasTrueNativeFullScreen
= HAS_TRUE_NATIVE_FULLSCREEN
;
3327 _mejs2
.default.Features
.nativeFullScreenEnabled
= HAS_NATIVE_FULLSCREEN_ENABLED
;
3328 _mejs2
.default.Features
.fullScreenEventName
= FULLSCREEN_EVENT_NAME
;
3329 _mejs2
.default.Features
.isFullScreen
= isFullScreen
;
3330 _mejs2
.default.Features
.requestFullScreen
= requestFullScreen
;
3331 _mejs2
.default.Features
.cancelFullScreen
= cancelFullScreen
;
3333 },{"2":2,"3":3,"7":7}],17:[function(_dereq_
,module
,exports
){
3336 Object
.defineProperty(exports
, "__esModule", {
3339 exports
.removeClass
= exports
.addClass
= exports
.hasClass
= undefined;
3340 exports
.loadScript
= loadScript
;
3341 exports
.offset
= offset
;
3342 exports
.toggleClass
= toggleClass
;
3343 exports
.fadeOut
= fadeOut
;
3344 exports
.fadeIn
= fadeIn
;
3345 exports
.siblings
= siblings
;
3346 exports
.visible
= visible
;
3347 exports
.ajax
= ajax
;
3349 var _window
= _dereq_(3);
3351 var _window2
= _interopRequireDefault(_window
);
3353 var _document
= _dereq_(2);
3355 var _document2
= _interopRequireDefault(_document
);
3357 var _mejs
= _dereq_(7);
3359 var _mejs2
= _interopRequireDefault(_mejs
);
3361 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3363 function loadScript(url
) {
3364 return new Promise(function (resolve
, reject
) {
3365 var script
= _document2
.default.createElement('script');
3367 script
.async
= true;
3368 script
.onload = function () {
3372 script
.onerror = function () {
3376 _document2
.default.head
.appendChild(script
);
3380 function offset(el
) {
3381 var rect
= el
.getBoundingClientRect(),
3382 scrollLeft
= _window2
.default.pageXOffset
|| _document2
.default.documentElement
.scrollLeft
,
3383 scrollTop
= _window2
.default.pageYOffset
|| _document2
.default.documentElement
.scrollTop
;
3384 return { top
: rect
.top
+ scrollTop
, left
: rect
.left
+ scrollLeft
};
3387 var hasClassMethod
= void 0,
3388 addClassMethod
= void 0,
3389 removeClassMethod
= void 0;
3391 if ('classList' in _document2
.default.documentElement
) {
3392 hasClassMethod
= function hasClassMethod(el
, className
) {
3393 return el
.classList
!== undefined && el
.classList
.contains(className
);
3395 addClassMethod
= function addClassMethod(el
, className
) {
3396 return el
.classList
.add(className
);
3398 removeClassMethod
= function removeClassMethod(el
, className
) {
3399 return el
.classList
.remove(className
);
3402 hasClassMethod
= function hasClassMethod(el
, className
) {
3403 return new RegExp('\\b' + className
+ '\\b').test(el
.className
);
3405 addClassMethod
= function addClassMethod(el
, className
) {
3406 if (!hasClass(el
, className
)) {
3407 el
.className
+= ' ' + className
;
3410 removeClassMethod
= function removeClassMethod(el
, className
) {
3411 el
.className
= el
.className
.replace(new RegExp('\\b' + className
+ '\\b', 'g'), '');
3415 var hasClass
= exports
.hasClass
= hasClassMethod
;
3416 var addClass
= exports
.addClass
= addClassMethod
;
3417 var removeClass
= exports
.removeClass
= removeClassMethod
;
3419 function toggleClass(el
, className
) {
3420 hasClass(el
, className
) ? removeClass(el
, className
) : addClass(el
, className
);
3423 function fadeOut(el
) {
3424 var duration
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : 400;
3425 var callback
= arguments
[2];
3427 if (!el
.style
.opacity
) {
3428 el
.style
.opacity
= 1;
3432 _window2
.default.requestAnimationFrame(function animate(timestamp
) {
3433 start
= start
|| timestamp
;
3434 var progress
= timestamp
- start
;
3435 var opacity
= parseFloat(1 - progress
/ duration
, 2);
3436 el
.style
.opacity
= opacity
< 0 ? 0 : opacity
;
3437 if (progress
> duration
) {
3438 if (callback
&& typeof callback
=== 'function') {
3442 _window2
.default.requestAnimationFrame(animate
);
3447 function fadeIn(el
) {
3448 var duration
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : 400;
3449 var callback
= arguments
[2];
3451 if (!el
.style
.opacity
) {
3452 el
.style
.opacity
= 0;
3456 _window2
.default.requestAnimationFrame(function animate(timestamp
) {
3457 start
= start
|| timestamp
;
3458 var progress
= timestamp
- start
;
3459 var opacity
= parseFloat(progress
/ duration
, 2);
3460 el
.style
.opacity
= opacity
> 1 ? 1 : opacity
;
3461 if (progress
> duration
) {
3462 if (callback
&& typeof callback
=== 'function') {
3466 _window2
.default.requestAnimationFrame(animate
);
3471 function siblings(el
, filter
) {
3473 el
= el
.parentNode
.firstChild
;
3475 if (!filter
|| filter(el
)) {
3478 } while (el
= el
.nextSibling
);
3482 function visible(elem
) {
3483 if (elem
.getClientRects
!== undefined && elem
.getClientRects
=== 'function') {
3484 return !!(elem
.offsetWidth
|| elem
.offsetHeight
|| elem
.getClientRects().length
);
3486 return !!(elem
.offsetWidth
|| elem
.offsetHeight
);
3489 function ajax(url
, dataType
, success
, error
) {
3490 var xhr
= _window2
.default.XMLHttpRequest
? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
3492 var type
= 'application/x-www-form-urlencoded; charset=UTF-8',
3494 accept
= '*/'.concat('*');
3498 type
= 'text/plain';
3501 type
= 'application/json, text/javascript';
3507 type
= 'application/xml, text/xml';
3511 if (type
!== 'application/x-www-form-urlencoded') {
3512 accept
= type
+ ', */*; q=0.01';
3516 xhr
.open('GET', url
, true);
3517 xhr
.setRequestHeader('Accept', accept
);
3518 xhr
.onreadystatechange = function () {
3523 if (xhr
.readyState
=== 4) {
3524 if (xhr
.status
=== 200) {
3529 data
= JSON
.parse(xhr
.responseText
);
3532 data
= xhr
.responseXML
;
3535 data
= xhr
.responseText
;
3539 } else if (typeof error
=== 'function') {
3549 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3550 _mejs2
.default.Utils
.offset
= offset
;
3551 _mejs2
.default.Utils
.hasClass
= hasClass
;
3552 _mejs2
.default.Utils
.addClass
= addClass
;
3553 _mejs2
.default.Utils
.removeClass
= removeClass
;
3554 _mejs2
.default.Utils
.toggleClass
= toggleClass
;
3555 _mejs2
.default.Utils
.fadeIn
= fadeIn
;
3556 _mejs2
.default.Utils
.fadeOut
= fadeOut
;
3557 _mejs2
.default.Utils
.siblings
= siblings
;
3558 _mejs2
.default.Utils
.visible
= visible
;
3559 _mejs2
.default.Utils
.ajax
= ajax
;
3560 _mejs2
.default.Utils
.loadScript
= loadScript
;
3562 },{"2":2,"3":3,"7":7}],18:[function(_dereq_
,module
,exports
){
3565 Object
.defineProperty(exports
, "__esModule", {
3568 exports
.escapeHTML
= escapeHTML
;
3569 exports
.debounce
= debounce
;
3570 exports
.isObjectEmpty
= isObjectEmpty
;
3571 exports
.splitEvents
= splitEvents
;
3572 exports
.createEvent
= createEvent
;
3573 exports
.isNodeAfter
= isNodeAfter
;
3574 exports
.isString
= isString
;
3576 var _mejs
= _dereq_(7);
3578 var _mejs2
= _interopRequireDefault(_mejs
);
3580 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3582 function escapeHTML(input
) {
3584 if (typeof input
!== 'string') {
3585 throw new Error('Argument passed must be a string');
3595 return input
.replace(/[&<>"]/g, function (c
) {
3600 function debounce(func
, wait
) {
3602 _arguments
= arguments
;
3604 var immediate
= arguments
.length
> 2 && arguments
[2] !== undefined ? arguments
[2] : false;
3607 if (typeof func
!== 'function') {
3608 throw new Error('First argument must be a function');
3611 if (typeof wait
!== 'number') {
3612 throw new Error('Second argument must be a numeric value');
3615 var timeout
= void 0;
3616 return function () {
3617 var context
= _this
,
3619 var later
= function later() {
3622 func
.apply(context
, args
);
3625 var callNow
= immediate
&& !timeout
;
3626 clearTimeout(timeout
);
3627 timeout
= setTimeout(later
, wait
);
3630 func
.apply(context
, args
);
3635 function isObjectEmpty(instance
) {
3636 return Object
.getOwnPropertyNames(instance
).length
<= 0;
3639 function splitEvents(events
, id
) {
3640 var rwindow
= /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
3642 var ret
= { d
: [], w
: [] };
3643 (events
|| '').split(' ').forEach(function (v
) {
3644 var eventName
= '' + v
+ (id
? '.' + id
: '');
3646 if (eventName
.startsWith('.')) {
3647 ret
.d
.push(eventName
);
3648 ret
.w
.push(eventName
);
3650 ret
[rwindow
.test(v
) ? 'w' : 'd'].push(eventName
);
3654 ret
.d
= ret
.d
.join(' ');
3655 ret
.w
= ret
.w
.join(' ');
3659 function createEvent(eventName
, target
) {
3661 if (typeof eventName
!== 'string') {
3662 throw new Error('Event name must be a string');
3665 var eventFrags
= eventName
.match(/([a-z]+\.([a-z]+))/i),
3670 if (eventFrags
!== null) {
3671 eventName
= eventFrags
[1];
3672 detail
.namespace = eventFrags
[2];
3675 return new window
.CustomEvent(eventName
, {
3680 function isNodeAfter(sourceNode
, targetNode
) {
3682 return !!(sourceNode
&& targetNode
&& sourceNode
.compareDocumentPosition(targetNode
) & 2);
3685 function isString(value
) {
3686 return typeof value
=== 'string';
3689 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3690 _mejs2
.default.Utils
.escapeHTML
= escapeHTML
;
3691 _mejs2
.default.Utils
.debounce
= debounce
;
3692 _mejs2
.default.Utils
.isObjectEmpty
= isObjectEmpty
;
3693 _mejs2
.default.Utils
.splitEvents
= splitEvents
;
3694 _mejs2
.default.Utils
.createEvent
= createEvent
;
3695 _mejs2
.default.Utils
.isNodeAfter
= isNodeAfter
;
3696 _mejs2
.default.Utils
.isString
= isString
;
3698 },{"7":7}],19:[function(_dereq_
,module
,exports
){
3701 Object
.defineProperty(exports
, "__esModule", {
3704 exports
.typeChecks
= undefined;
3705 exports
.absolutizeUrl
= absolutizeUrl
;
3706 exports
.formatType
= formatType
;
3707 exports
.getMimeFromType
= getMimeFromType
;
3708 exports
.getTypeFromFile
= getTypeFromFile
;
3709 exports
.getExtension
= getExtension
;
3710 exports
.normalizeExtension
= normalizeExtension
;
3712 var _mejs
= _dereq_(7);
3714 var _mejs2
= _interopRequireDefault(_mejs
);
3716 var _general
= _dereq_(18);
3718 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3720 var typeChecks
= exports
.typeChecks
= [];
3722 function absolutizeUrl(url
) {
3724 if (typeof url
!== 'string') {
3725 throw new Error('`url` argument must be a string');
3728 var el
= document
.createElement('div');
3729 el
.innerHTML
= '<a href="' + (0, _general
.escapeHTML
)(url
) + '">x</a>';
3730 return el
.firstChild
.href
;
3733 function formatType(url
) {
3734 var type
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : '';
3736 return url
&& !type
? getTypeFromFile(url
) : type
;
3739 function getMimeFromType(type
) {
3741 if (typeof type
!== 'string') {
3742 throw new Error('`type` argument must be a string');
3745 return type
&& type
.indexOf(';') > -1 ? type
.substr(0, type
.indexOf(';')) : type
;
3748 function getTypeFromFile(url
) {
3750 if (typeof url
!== 'string') {
3751 throw new Error('`url` argument must be a string');
3754 for (var i
= 0, total
= typeChecks
.length
; i
< total
; i
++) {
3755 var type
= typeChecks
[i
](url
);
3762 var ext
= getExtension(url
),
3763 normalizedExt
= normalizeExtension(ext
);
3765 var mime
= 'video/mp4';
3767 if (normalizedExt
) {
3768 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt
)) {
3769 mime
= 'video/' + normalizedExt
;
3770 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt
)) {
3771 mime
= 'audio/' + normalizedExt
;
3778 function getExtension(url
) {
3780 if (typeof url
!== 'string') {
3781 throw new Error('`url` argument must be a string');
3784 var baseUrl
= url
.split('?')[0],
3785 baseName
= baseUrl
.split('\\').pop().split('/').pop();
3786 return ~baseName
.indexOf('.') ? baseName
.substring(baseName
.lastIndexOf('.') + 1) : '';
3789 function normalizeExtension(extension
) {
3791 if (typeof extension
!== 'string') {
3792 throw new Error('`extension` argument must be a string');
3795 switch (extension
) {
3812 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3813 _mejs2
.default.Utils
.typeChecks
= typeChecks
;
3814 _mejs2
.default.Utils
.absolutizeUrl
= absolutizeUrl
;
3815 _mejs2
.default.Utils
.formatType
= formatType
;
3816 _mejs2
.default.Utils
.getMimeFromType
= getMimeFromType
;
3817 _mejs2
.default.Utils
.getTypeFromFile
= getTypeFromFile
;
3818 _mejs2
.default.Utils
.getExtension
= getExtension
;
3819 _mejs2
.default.Utils
.normalizeExtension
= normalizeExtension
;
3821 },{"18":18,"7":7}],20:[function(_dereq_
,module
,exports
){
3824 var _document
= _dereq_(2);
3826 var _document2
= _interopRequireDefault(_document
);
3828 var _promisePolyfill
= _dereq_(4);
3830 var _promisePolyfill2
= _interopRequireDefault(_promisePolyfill
);
3832 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3835 arr
.forEach(function (item
) {
3836 if (item
.hasOwnProperty('remove')) {
3839 Object
.defineProperty(item
, 'remove', {
3843 value
: function remove() {
3844 this.parentNode
.removeChild(this);
3848 })([Element
.prototype, CharacterData
.prototype, DocumentType
.prototype]);
3852 if (typeof window
.CustomEvent
=== 'function') {
3856 function CustomEvent(event
, params
) {
3857 params
= params
|| { bubbles
: false, cancelable
: false, detail
: undefined };
3858 var evt
= _document2
.default.createEvent('CustomEvent');
3859 evt
.initCustomEvent(event
, params
.bubbles
, params
.cancelable
, params
.detail
);
3863 CustomEvent
.prototype = window
.Event
.prototype;
3864 window
.CustomEvent
= CustomEvent
;
3867 if (typeof Object
.assign
!== 'function') {
3868 Object
.assign = function (target
) {
3870 if (target
=== null || target
=== undefined) {
3871 throw new TypeError('Cannot convert undefined or null to object');
3874 var to
= Object(target
);
3876 for (var index
= 1, total
= arguments
.length
; index
< total
; index
++) {
3877 var nextSource
= arguments
[index
];
3879 if (nextSource
!== null) {
3880 for (var nextKey
in nextSource
) {
3881 if (Object
.prototype.hasOwnProperty
.call(nextSource
, nextKey
)) {
3882 to
[nextKey
] = nextSource
[nextKey
];
3891 if (!String
.prototype.startsWith
) {
3892 String
.prototype.startsWith = function (searchString
, position
) {
3893 position
= position
|| 0;
3894 return this.substr(position
, searchString
.length
) === searchString
;
3898 if (!Element
.prototype.matches
) {
3899 Element
.prototype.matches
= Element
.prototype.matchesSelector
|| Element
.prototype.mozMatchesSelector
|| Element
.prototype.msMatchesSelector
|| Element
.prototype.oMatchesSelector
|| Element
.prototype.webkitMatchesSelector
|| function (s
) {
3900 var matches
= (this.document
|| this.ownerDocument
).querySelectorAll(s
),
3901 i
= matches
.length
- 1;
3902 while (--i
>= 0 && matches
.item(i
) !== this) {}
3907 if (window
.Element
&& !Element
.prototype.closest
) {
3908 Element
.prototype.closest = function (s
) {
3909 var matches
= (this.document
|| this.ownerDocument
).querySelectorAll(s
),
3914 while (--i
>= 0 && matches
.item(i
) !== el
) {}
3915 } while (i
< 0 && (el
= el
.parentElement
));
3922 var vendors
= ['ms', 'moz', 'webkit', 'o'];
3923 for (var x
= 0; x
< vendors
.length
&& !window
.requestAnimationFrame
; ++x
) {
3924 window
.requestAnimationFrame
= window
[vendors
[x
] + 'RequestAnimationFrame'];
3925 window
.cancelAnimationFrame
= window
[vendors
[x
] + 'CancelAnimationFrame'] || window
[vendors
[x
] + 'CancelRequestAnimationFrame'];
3928 if (!window
.requestAnimationFrame
) window
.requestAnimationFrame = function (callback
) {
3929 var currTime
= new Date().getTime();
3930 var timeToCall
= Math
.max(0, 16 - (currTime
- lastTime
));
3931 var id
= window
.setTimeout(function () {
3932 callback(currTime
+ timeToCall
);
3934 lastTime
= currTime
+ timeToCall
;
3938 if (!window
.cancelAnimationFrame
) window
.cancelAnimationFrame = function (id
) {
3943 if (/firefox/i.test(navigator
.userAgent
)) {
3944 var getComputedStyle
= window
.getComputedStyle
;
3945 window
.getComputedStyle = function (el
, pseudoEl
) {
3946 var t
= getComputedStyle(el
, pseudoEl
);
3947 return t
=== null ? { getPropertyValue
: function getPropertyValue() {} } : t
;
3951 if (!window
.Promise
) {
3952 window
.Promise
= _promisePolyfill2
.default;
3955 (function (constructor) {
3956 if (constructor && constructor.prototype && constructor.prototype.children
=== null) {
3957 Object
.defineProperty(constructor.prototype, 'children', {
3958 get: function get() {
3961 nodes
= this.childNodes
,
3963 while (node
= nodes
[i
++]) {
3964 if (node
.nodeType
=== 1) {
3965 children
.push(node
);
3972 })(window
.Node
|| window
.Element
);
3974 },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]);