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}(\-[a-z]{2})?$/i.test(args
[0])) {
319 throw new TypeError('Language code must have format `xx` or `xx-xx`');
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 setTimeout(function () {
868 t
.mediaElement
.renderer
[methodName
](args
);
871 t
.mediaElement
.renderer
[methodName
](args
);
874 t
.mediaElement
.generateError(e
, mediaFiles
);
877 assignMethods
= function assignMethods(methodName
) {
878 t
.mediaElement
[methodName
] = function () {
879 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
880 args
[_key
] = arguments
[_key
];
883 if (t
.mediaElement
.renderer
!== undefined && t
.mediaElement
.renderer
!== null && typeof t
.mediaElement
.renderer
[methodName
] === 'function') {
884 if (t
.mediaElement
.promises
.length
) {
885 Promise
.all(t
.mediaElement
.promises
).then(function () {
886 triggerAction(methodName
, args
);
887 }).catch(function (e
) {
888 t
.mediaElement
.generateError(e
, mediaFiles
);
891 triggerAction(methodName
, args
);
898 addProperty(t
.mediaElement
, 'src', getSrc
, setSrc
);
899 t
.mediaElement
.getSrc
= getSrc
;
900 t
.mediaElement
.setSrc
= setSrc
;
902 for (var _i3
= 0, total
= props
.length
; _i3
< total
; _i3
++) {
903 assignGettersSetters(props
[_i3
]);
906 for (var _i4
= 0, _total
= methods
.length
; _i4
< _total
; _i4
++) {
907 assignMethods(methods
[_i4
]);
910 t
.mediaElement
.addEventListener = function (eventName
, callback
) {
911 t
.mediaElement
.events
[eventName
] = t
.mediaElement
.events
[eventName
] || [];
913 t
.mediaElement
.events
[eventName
].push(callback
);
915 t
.mediaElement
.removeEventListener = function (eventName
, callback
) {
917 t
.mediaElement
.events
= {};
921 var callbacks
= t
.mediaElement
.events
[eventName
];
928 t
.mediaElement
.events
[eventName
] = [];
932 for (var _i5
= 0; _i5
< callbacks
.length
; _i5
++) {
933 if (callbacks
[_i5
] === callback
) {
934 t
.mediaElement
.events
[eventName
].splice(_i5
, 1);
941 t
.mediaElement
.dispatchEvent = function (event
) {
942 var callbacks
= t
.mediaElement
.events
[event
.type
];
944 for (var _i6
= 0; _i6
< callbacks
.length
; _i6
++) {
945 callbacks
[_i6
].apply(null, [event
]);
950 if (mediaFiles
.length
) {
951 t
.mediaElement
.src
= mediaFiles
;
954 if (t
.mediaElement
.promises
.length
) {
955 Promise
.all(t
.mediaElement
.promises
).then(function () {
956 if (t
.mediaElement
.options
.success
) {
957 t
.mediaElement
.options
.success(t
.mediaElement
, t
.mediaElement
.originalNode
);
959 }).catch(function () {
960 if (error
&& t
.mediaElement
.options
.error
) {
961 t
.mediaElement
.options
.error(t
.mediaElement
, t
.mediaElement
.originalNode
);
965 if (t
.mediaElement
.options
.success
) {
966 t
.mediaElement
.options
.success(t
.mediaElement
, t
.mediaElement
.originalNode
);
969 if (error
&& t
.mediaElement
.options
.error
) {
970 t
.mediaElement
.options
.error(t
.mediaElement
, t
.mediaElement
.originalNode
);
974 return t
.mediaElement
;
977 _window2
.default.MediaElement
= MediaElement
;
979 exports
.default = MediaElement
;
981 },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_
,module
,exports
){
984 Object
.defineProperty(exports
, "__esModule", {
988 var _window
= _dereq_(3);
990 var _window2
= _interopRequireDefault(_window
);
992 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
996 mejs
.version
= '4.2.5';
999 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'],
1000 readOnlyProperties
: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1002 methods
: ['load', 'play', 'pause', 'canPlayType'],
1004 events
: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1006 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']
1009 _window2
.default.mejs
= mejs
;
1011 exports
.default = mejs
;
1013 },{"3":3}],8:[function(_dereq_
,module
,exports
){
1016 Object
.defineProperty(exports
, "__esModule", {
1019 exports
.renderer
= undefined;
1021 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
; };
1023 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
; }; }();
1025 var _mejs
= _dereq_(7);
1027 var _mejs2
= _interopRequireDefault(_mejs
);
1029 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1031 function _classCallCheck(instance
, Constructor
) { if (!(instance
instanceof Constructor
)) { throw new TypeError("Cannot call a class as a function"); } }
1033 var Renderer = function () {
1034 function Renderer() {
1035 _classCallCheck(this, Renderer
);
1037 this.renderers
= {};
1041 _createClass(Renderer
, [{
1043 value
: function add(renderer
) {
1044 if (renderer
.name
=== undefined) {
1045 throw new TypeError('renderer must contain at least `name` property');
1048 this.renderers
[renderer
.name
] = renderer
;
1049 this.order
.push(renderer
.name
);
1053 value
: function select(mediaFiles
) {
1054 var renderers
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : [];
1056 var renderersLength
= renderers
.length
;
1058 renderers
= renderers
.length
? renderers
: this.order
;
1060 if (!renderersLength
) {
1061 var rendererIndicator
= [/^(html5|native)/i, /^flash/i, /iframe$/i],
1062 rendererRanking
= function rendererRanking(renderer
) {
1063 for (var i
= 0, total
= rendererIndicator
.length
; i
< total
; i
++) {
1064 if (rendererIndicator
[i
].test(renderer
)) {
1068 return rendererIndicator
.length
;
1071 renderers
.sort(function (a
, b
) {
1072 return rendererRanking(a
) - rendererRanking(b
);
1076 for (var i
= 0, total
= renderers
.length
; i
< total
; i
++) {
1077 var key
= renderers
[i
],
1078 _renderer
= this.renderers
[key
];
1080 if (_renderer
!== null && _renderer
!== undefined) {
1081 for (var j
= 0, jl
= mediaFiles
.length
; j
< jl
; j
++) {
1082 if (typeof _renderer
.canPlayType
=== 'function' && typeof mediaFiles
[j
].type
=== 'string' && _renderer
.canPlayType(mediaFiles
[j
].type
)) {
1084 rendererName
: _renderer
.name
,
1085 src
: mediaFiles
[j
].src
1096 set: function set(order
) {
1097 if (!Array
.isArray(order
)) {
1098 throw new TypeError('order must be an array of strings.');
1101 this._order
= order
;
1103 get: function get() {
1108 set: function set(renderers
) {
1109 if (renderers
!== null && (typeof renderers
=== 'undefined' ? 'undefined' : _typeof(renderers
)) !== 'object') {
1110 throw new TypeError('renderers must be an array of objects.');
1113 this._renderers
= renderers
;
1115 get: function get() {
1116 return this._renderers
;
1123 var renderer
= exports
.renderer
= new Renderer();
1125 _mejs2
.default.Renderers
= renderer
;
1127 },{"7":7}],9:[function(_dereq_
,module
,exports
){
1130 Object
.defineProperty(exports
, "__esModule", {
1133 var EN
= exports
.EN
= {
1134 'mejs.plural-form': 1,
1136 'mejs.download-file': 'Download File',
1138 '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/',
1140 'mejs.fullscreen': 'Fullscreen',
1142 'mejs.play': 'Play',
1143 'mejs.pause': 'Pause',
1145 'mejs.time-slider': 'Time Slider',
1146 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
1147 'mejs.live-broadcast': 'Live Broadcast',
1149 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
1150 'mejs.unmute': 'Unmute',
1151 'mejs.mute': 'Mute',
1152 'mejs.volume-slider': 'Volume Slider',
1154 'mejs.video-player': 'Video Player',
1155 'mejs.audio-player': 'Audio Player',
1157 'mejs.captions-subtitles': 'Captions/Subtitles',
1158 'mejs.captions-chapters': 'Chapters',
1159 'mejs.none': 'None',
1160 'mejs.afrikaans': 'Afrikaans',
1161 'mejs.albanian': 'Albanian',
1162 'mejs.arabic': 'Arabic',
1163 'mejs.belarusian': 'Belarusian',
1164 'mejs.bulgarian': 'Bulgarian',
1165 'mejs.catalan': 'Catalan',
1166 'mejs.chinese': 'Chinese',
1167 'mejs.chinese-simplified': 'Chinese (Simplified)',
1168 'mejs.chinese-traditional': 'Chinese (Traditional)',
1169 'mejs.croatian': 'Croatian',
1170 'mejs.czech': 'Czech',
1171 'mejs.danish': 'Danish',
1172 'mejs.dutch': 'Dutch',
1173 'mejs.english': 'English',
1174 'mejs.estonian': 'Estonian',
1175 'mejs.filipino': 'Filipino',
1176 'mejs.finnish': 'Finnish',
1177 'mejs.french': 'French',
1178 'mejs.galician': 'Galician',
1179 'mejs.german': 'German',
1180 'mejs.greek': 'Greek',
1181 'mejs.haitian-creole': 'Haitian Creole',
1182 'mejs.hebrew': 'Hebrew',
1183 'mejs.hindi': 'Hindi',
1184 'mejs.hungarian': 'Hungarian',
1185 'mejs.icelandic': 'Icelandic',
1186 'mejs.indonesian': 'Indonesian',
1187 'mejs.irish': 'Irish',
1188 'mejs.italian': 'Italian',
1189 'mejs.japanese': 'Japanese',
1190 'mejs.korean': 'Korean',
1191 'mejs.latvian': 'Latvian',
1192 'mejs.lithuanian': 'Lithuanian',
1193 'mejs.macedonian': 'Macedonian',
1194 'mejs.malay': 'Malay',
1195 'mejs.maltese': 'Maltese',
1196 'mejs.norwegian': 'Norwegian',
1197 'mejs.persian': 'Persian',
1198 'mejs.polish': 'Polish',
1199 'mejs.portuguese': 'Portuguese',
1200 'mejs.romanian': 'Romanian',
1201 'mejs.russian': 'Russian',
1202 'mejs.serbian': 'Serbian',
1203 'mejs.slovak': 'Slovak',
1204 'mejs.slovenian': 'Slovenian',
1205 'mejs.spanish': 'Spanish',
1206 'mejs.swahili': 'Swahili',
1207 'mejs.swedish': 'Swedish',
1208 'mejs.tagalog': 'Tagalog',
1209 'mejs.thai': 'Thai',
1210 'mejs.turkish': 'Turkish',
1211 'mejs.ukrainian': 'Ukrainian',
1212 'mejs.vietnamese': 'Vietnamese',
1213 'mejs.welsh': 'Welsh',
1214 'mejs.yiddish': 'Yiddish'
1217 },{}],10:[function(_dereq_
,module
,exports
){
1220 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
; };
1222 var _window
= _dereq_(3);
1224 var _window2
= _interopRequireDefault(_window
);
1226 var _mejs
= _dereq_(7);
1228 var _mejs2
= _interopRequireDefault(_mejs
);
1230 var _renderer
= _dereq_(8);
1232 var _general
= _dereq_(18);
1234 var _media
= _dereq_(19);
1236 var _constants
= _dereq_(16);
1238 var _dom
= _dereq_(17);
1240 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1246 load
: function load(settings
) {
1247 if (typeof dashjs
!== 'undefined') {
1248 NativeDash
.promise
= new Promise(function (resolve
) {
1250 }).then(function () {
1251 NativeDash
._createPlayer(settings
);
1254 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdn.dashjs.org/latest/dash.all.min.js';
1256 NativeDash
.promise
= NativeDash
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
1257 NativeDash
.promise
.then(function () {
1258 NativeDash
._createPlayer(settings
);
1262 return NativeDash
.promise
;
1265 _createPlayer
: function _createPlayer(settings
) {
1266 var player
= dashjs
.MediaPlayer().create();
1267 _window2
.default['__ready__' + settings
.id
](player
);
1272 var DashNativeRenderer
= {
1273 name
: 'native_dash',
1275 prefix
: 'native_dash',
1277 path
: 'https://cdn.dashjs.org/latest/dash.all.min.js',
1285 canPlayType
: function canPlayType(type
) {
1286 return _constants
.HAS_MSE
&& ['application/dash+xml'].indexOf(type
.toLowerCase()) > -1;
1289 create
: function create(mediaElement
, options
, mediaFiles
) {
1291 var originalNode
= mediaElement
.originalNode
,
1292 id
= mediaElement
.id
+ '_' + options
.prefix
,
1293 autoplay
= originalNode
.autoplay
,
1294 children
= originalNode
.children
;
1299 originalNode
.removeAttribute('type');
1300 for (var i
= 0, total
= children
.length
; i
< total
; i
++) {
1301 children
[i
].removeAttribute('type');
1304 node
= originalNode
.cloneNode(true);
1305 options
= Object
.assign(options
, mediaElement
.options
);
1307 var props
= _mejs2
.default.html5media
.properties
,
1308 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']),
1309 attachNativeEvents
= function attachNativeEvents(e
) {
1310 if (e
.type
!== 'error') {
1311 var _event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
1312 mediaElement
.dispatchEvent(_event
);
1315 assignGettersSetters
= function assignGettersSetters(propName
) {
1316 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1318 node
['get' + capName
] = function () {
1319 return dashPlayer
!== null ? node
[propName
] : null;
1322 node
['set' + capName
] = function (value
) {
1323 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
1324 if (propName
=== 'src') {
1325 var source
= (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
1326 node
[propName
] = source
;
1327 if (dashPlayer
!== null) {
1329 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
1330 node
.removeEventListener(events
[_i
], attachNativeEvents
);
1332 dashPlayer
= NativeDash
._createPlayer({
1333 options
: options
.dash
,
1337 if (value
&& (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && _typeof(value
.drm
) === 'object') {
1338 dashPlayer
.setProtectionData(value
.drm
);
1339 if ((0, _general
.isString
)(options
.dash
.robustnessLevel
) && options
.dash
.robustnessLevel
) {
1340 dashPlayer
.getProtectionController().setRobustnessLevel(options
.dash
.robustnessLevel
);
1343 dashPlayer
.attachSource(source
);
1349 node
[propName
] = value
;
1355 for (var _i2
= 0, _total2
= props
.length
; _i2
< _total2
; _i2
++) {
1356 assignGettersSetters(props
[_i2
]);
1359 _window2
.default['__ready__' + id
] = function (_dashPlayer
) {
1360 mediaElement
.dashPlayer
= dashPlayer
= _dashPlayer
;
1362 var dashEvents
= dashjs
.MediaPlayer
.events
,
1363 assignEvents
= function assignEvents(eventName
) {
1364 if (eventName
=== 'loadedmetadata') {
1365 dashPlayer
.getDebug().setLogToBrowserConsole(options
.dash
.debug
);
1366 dashPlayer
.initialize();
1367 dashPlayer
.setScheduleWhilePaused(false);
1368 dashPlayer
.setFastSwitchEnabled(true);
1369 dashPlayer
.attachView(node
);
1370 dashPlayer
.setAutoPlay(false);
1372 if (_typeof(options
.dash
.drm
) === 'object' && !_mejs2
.default.Utils
.isObjectEmpty(options
.dash
.drm
)) {
1373 dashPlayer
.setProtectionData(options
.dash
.drm
);
1374 if ((0, _general
.isString
)(options
.dash
.robustnessLevel
) && options
.dash
.robustnessLevel
) {
1375 dashPlayer
.getProtectionController().setRobustnessLevel(options
.dash
.robustnessLevel
);
1378 dashPlayer
.attachSource(node
.getSrc());
1381 node
.addEventListener(eventName
, attachNativeEvents
);
1384 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
1385 assignEvents(events
[_i3
]);
1388 var assignMdashEvents
= function assignMdashEvents(name
, data
) {
1389 if (name
.toLowerCase() === 'error') {
1390 mediaElement
.generateError(data
.message
, node
.src
);
1391 console
.error(data
);
1393 var _event2
= (0, _general
.createEvent
)(name
, mediaElement
);
1394 _event2
.data
= data
;
1395 mediaElement
.dispatchEvent(_event2
);
1399 for (var eventType
in dashEvents
) {
1400 if (dashEvents
.hasOwnProperty(eventType
)) {
1401 dashPlayer
.on(dashEvents
[eventType
], function (e
) {
1402 for (var _len
= arguments
.length
, args
= Array(_len
> 1 ? _len
- 1 : 0), _key
= 1; _key
< _len
; _key
++) {
1403 args
[_key
- 1] = arguments
[_key
];
1406 return assignMdashEvents(e
.type
, args
);
1412 if (mediaFiles
&& mediaFiles
.length
> 0) {
1413 for (var _i4
= 0, _total4
= mediaFiles
.length
; _i4
< _total4
; _i4
++) {
1414 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i4
].type
)) {
1415 node
.setAttribute('src', mediaFiles
[_i4
].src
);
1416 if (typeof mediaFiles
[_i4
].drm
!== 'undefined') {
1417 options
.dash
.drm
= mediaFiles
[_i4
].drm
;
1424 node
.setAttribute('id', id
);
1426 originalNode
.parentNode
.insertBefore(node
, originalNode
);
1427 originalNode
.autoplay
= false;
1428 originalNode
.style
.display
= 'none';
1430 node
.setSize = function (width
, height
) {
1431 node
.style
.width
= width
+ 'px';
1432 node
.style
.height
= height
+ 'px';
1436 node
.hide = function () {
1438 node
.style
.display
= 'none';
1442 node
.show = function () {
1443 node
.style
.display
= '';
1447 node
.destroy = function () {
1448 if (dashPlayer
!== null) {
1453 var event
= (0, _general
.createEvent
)('rendererready', node
);
1454 mediaElement
.dispatchEvent(event
);
1456 mediaElement
.promises
.push(NativeDash
.load({
1457 options
: options
.dash
,
1465 _media
.typeChecks
.push(function (url
) {
1466 return ~url
.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
1469 _renderer
.renderer
.add(DashNativeRenderer
);
1471 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_
,module
,exports
){
1474 Object
.defineProperty(exports
, "__esModule", {
1477 exports
.PluginDetector
= undefined;
1479 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
; };
1481 var _window
= _dereq_(3);
1483 var _window2
= _interopRequireDefault(_window
);
1485 var _document
= _dereq_(2);
1487 var _document2
= _interopRequireDefault(_document
);
1489 var _mejs
= _dereq_(7);
1491 var _mejs2
= _interopRequireDefault(_mejs
);
1493 var _i18n
= _dereq_(5);
1495 var _i18n2
= _interopRequireDefault(_i18n
);
1497 var _renderer
= _dereq_(8);
1499 var _general
= _dereq_(18);
1501 var _constants
= _dereq_(16);
1503 var _media
= _dereq_(19);
1505 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1507 var PluginDetector
= exports
.PluginDetector
= {
1510 hasPluginVersion
: function hasPluginVersion(plugin
, v
) {
1511 var pv
= PluginDetector
.plugins
[plugin
];
1514 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];
1517 addPlugin
: function addPlugin(p
, pluginName
, mimeType
, activeX
, axDetect
) {
1518 PluginDetector
.plugins
[p
] = PluginDetector
.detectPlugin(pluginName
, mimeType
, activeX
, axDetect
);
1521 detectPlugin
: function detectPlugin(pluginName
, mimeType
, activeX
, axDetect
) {
1523 var version
= [0, 0, 0],
1524 description
= void 0,
1527 if (_constants
.NAV
.plugins
!== null && _constants
.NAV
.plugins
!== undefined && _typeof(_constants
.NAV
.plugins
[pluginName
]) === 'object') {
1528 description
= _constants
.NAV
.plugins
[pluginName
].description
;
1529 if (description
&& !(typeof _constants
.NAV
.mimeTypes
!== 'undefined' && _constants
.NAV
.mimeTypes
[mimeType
] && !_constants
.NAV
.mimeTypes
[mimeType
].enabledPlugin
)) {
1530 version
= description
.replace(pluginName
, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
1531 for (var i
= 0, total
= version
.length
; i
< total
; i
++) {
1532 version
[i
] = parseInt(version
[i
].match(/\d+/), 10);
1535 } else if (_window2
.default.ActiveXObject
!== undefined) {
1537 ax
= new ActiveXObject(activeX
);
1539 version
= axDetect(ax
);
1549 PluginDetector
.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax
) {
1551 d
= ax
.GetVariable("$version");
1554 d
= d
.split(" ")[1].split(",");
1555 version
= [parseInt(d
[0], 10), parseInt(d
[1], 10), parseInt(d
[2], 10)];
1560 var FlashMediaElementRenderer
= {
1561 create
: function create(mediaElement
, options
, mediaFiles
) {
1565 flash
.options
= options
;
1566 flash
.id
= mediaElement
.id
+ '_' + flash
.options
.prefix
;
1567 flash
.mediaElement
= mediaElement
;
1568 flash
.flashState
= {};
1569 flash
.flashApi
= null;
1570 flash
.flashApiStack
= [];
1572 var props
= _mejs2
.default.html5media
.properties
,
1573 assignGettersSetters
= function assignGettersSetters(propName
) {
1574 flash
.flashState
[propName
] = null;
1576 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1578 flash
['get' + capName
] = function () {
1579 if (flash
.flashApi
!== null) {
1580 if (typeof flash
.flashApi
['get_' + propName
] === 'function') {
1581 var value
= flash
.flashApi
['get_' + propName
]();
1583 if (propName
=== 'buffered') {
1585 start
: function start() {
1588 end
: function end() {
1603 flash
['set' + capName
] = function (value
) {
1604 if (propName
=== 'src') {
1605 value
= (0, _media
.absolutizeUrl
)(value
);
1608 if (flash
.flashApi
!== null && flash
.flashApi
['set_' + propName
] !== undefined) {
1610 flash
.flashApi
['set_' + propName
](value
);
1615 flash
.flashApiStack
.push({
1624 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
1625 assignGettersSetters(props
[i
]);
1628 var methods
= _mejs2
.default.html5media
.methods
,
1629 assignMethods
= function assignMethods(methodName
) {
1630 flash
[methodName
] = function () {
1631 if (flash
.flashApi
!== null) {
1632 if (flash
.flashApi
['fire_' + methodName
]) {
1634 flash
.flashApi
['fire_' + methodName
]();
1642 flash
.flashApiStack
.push({
1644 methodName
: methodName
1649 methods
.push('stop');
1650 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
1651 assignMethods(methods
[_i
]);
1654 var initEvents
= ['rendererready'];
1656 for (var _i2
= 0, _total2
= initEvents
.length
; _i2
< _total2
; _i2
++) {
1657 var event
= (0, _general
.createEvent
)(initEvents
[_i2
], flash
);
1658 mediaElement
.dispatchEvent(event
);
1661 _window2
.default['__ready__' + flash
.id
] = function () {
1663 flash
.flashReady
= true;
1664 flash
.flashApi
= _document2
.default.getElementById('__' + flash
.id
);
1666 if (flash
.flashApiStack
.length
) {
1667 for (var _i3
= 0, _total3
= flash
.flashApiStack
.length
; _i3
< _total3
; _i3
++) {
1668 var stackItem
= flash
.flashApiStack
[_i3
];
1670 if (stackItem
.type
=== 'set') {
1671 var propName
= stackItem
.propName
,
1672 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1674 flash
['set' + capName
](stackItem
.value
);
1675 } else if (stackItem
.type
=== 'call') {
1676 flash
[stackItem
.methodName
]();
1682 _window2
.default['__event__' + flash
.id
] = function (eventName
, message
) {
1683 var event
= (0, _general
.createEvent
)(eventName
, flash
);
1686 event
.data
= JSON
.parse(message
);
1687 event
.details
.data
= JSON
.parse(message
);
1689 event
.message
= message
;
1693 flash
.mediaElement
.dispatchEvent(event
);
1696 flash
.flashWrapper
= _document2
.default.createElement('div');
1698 if (['always', 'sameDomain'].indexOf(flash
.options
.shimScriptAccess
) === -1) {
1699 flash
.options
.shimScriptAccess
= 'sameDomain';
1702 var autoplay
= mediaElement
.originalNode
.autoplay
,
1703 flashVars
= ['uid=' + flash
.id
, 'autoplay=' + autoplay
, 'allowScriptAccess=' + flash
.options
.shimScriptAccess
, 'preload=' + (mediaElement
.originalNode
.getAttribute('preload') || '')],
1704 isVideo
= mediaElement
.originalNode
!== null && mediaElement
.originalNode
.tagName
.toLowerCase() === 'video',
1705 flashHeight
= isVideo
? mediaElement
.originalNode
.height
: 1,
1706 flashWidth
= isVideo
? mediaElement
.originalNode
.width
: 1;
1708 if (mediaElement
.originalNode
.getAttribute('src')) {
1709 flashVars
.push('src=' + mediaElement
.originalNode
.getAttribute('src'));
1712 if (flash
.options
.enablePseudoStreaming
=== true) {
1713 flashVars
.push('pseudostreamstart=' + flash
.options
.pseudoStreamingStartQueryParam
);
1714 flashVars
.push('pseudostreamtype=' + flash
.options
.pseudoStreamingType
);
1717 mediaElement
.appendChild(flash
.flashWrapper
);
1718 mediaElement
.originalNode
.style
.display
= 'none';
1722 if (_constants
.IS_IE
) {
1723 var specialIEContainer
= _document2
.default.createElement('div');
1724 flash
.flashWrapper
.appendChild(specialIEContainer
);
1726 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
+ '"'];
1729 settings
.push('style="clip: rect(0 0 0 0); position: absolute;"');
1732 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>';
1735 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('&') + '"', 'width="' + flashWidth
+ '"', 'height="' + flashHeight
+ '"'];
1738 settings
.push('style="clip: rect(0 0 0 0); position: absolute;"');
1741 flash
.flashWrapper
.innerHTML
= '<embed ' + settings
.join(' ') + '>';
1744 flash
.flashNode
= flash
.flashWrapper
.lastChild
;
1746 flash
.hide = function () {
1748 flash
.flashNode
.style
.display
= 'none';
1751 flash
.show = function () {
1753 flash
.flashNode
.style
.display
= '';
1756 flash
.setSize = function (width
, height
) {
1757 flash
.flashNode
.style
.width
= width
+ 'px';
1758 flash
.flashNode
.style
.height
= height
+ 'px';
1760 if (flash
.flashApi
!== null && typeof flash
.flashApi
.fire_setSize
=== 'function') {
1761 flash
.flashApi
.fire_setSize(width
, height
);
1765 flash
.destroy = function () {
1766 flash
.flashNode
.remove();
1769 if (mediaFiles
&& mediaFiles
.length
> 0) {
1770 for (var _i4
= 0, _total4
= mediaFiles
.length
; _i4
< _total4
; _i4
++) {
1771 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i4
].type
)) {
1772 flash
.setSrc(mediaFiles
[_i4
].src
);
1782 var hasFlash
= PluginDetector
.hasPluginVersion('flash', [10, 0, 0]);
1785 _media
.typeChecks
.push(function (url
) {
1786 url
= url
.toLowerCase();
1788 if (url
.startsWith('rtmp')) {
1789 if (~url
.indexOf('.mp3')) {
1790 return 'audio/rtmp';
1792 return 'video/rtmp';
1794 } else if (/\.og(a|g)/i.test(url
)) {
1796 } else if (~url
.indexOf('.m3u8')) {
1797 return 'application/x-mpegURL';
1798 } else if (~url
.indexOf('.mpd')) {
1799 return 'application/dash+xml';
1800 } else if (~url
.indexOf('.flv')) {
1807 var FlashMediaElementVideoRenderer
= {
1808 name
: 'flash_video',
1810 prefix
: 'flash_video',
1811 filename
: 'mediaelement-flash-video.swf',
1812 enablePseudoStreaming
: false,
1814 pseudoStreamingStartQueryParam
: 'start',
1816 pseudoStreamingType
: 'byte'
1819 canPlayType
: function canPlayType(type
) {
1820 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type
.toLowerCase());
1823 create
: FlashMediaElementRenderer
.create
1826 _renderer
.renderer
.add(FlashMediaElementVideoRenderer
);
1828 var FlashMediaElementHlsVideoRenderer
= {
1831 prefix
: 'flash_hls',
1832 filename
: 'mediaelement-flash-video-hls.swf'
1835 canPlayType
: function canPlayType(type
) {
1836 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type
.toLowerCase());
1839 create
: FlashMediaElementRenderer
.create
1841 _renderer
.renderer
.add(FlashMediaElementHlsVideoRenderer
);
1843 var FlashMediaElementMdashVideoRenderer
= {
1846 prefix
: 'flash_dash',
1847 filename
: 'mediaelement-flash-video-mdash.swf'
1850 canPlayType
: function canPlayType(type
) {
1851 return ~['application/dash+xml'].indexOf(type
.toLowerCase());
1854 create
: FlashMediaElementRenderer
.create
1856 _renderer
.renderer
.add(FlashMediaElementMdashVideoRenderer
);
1858 var FlashMediaElementAudioRenderer
= {
1859 name
: 'flash_audio',
1861 prefix
: 'flash_audio',
1862 filename
: 'mediaelement-flash-audio.swf'
1865 canPlayType
: function canPlayType(type
) {
1866 return ~['audio/mp3'].indexOf(type
.toLowerCase());
1869 create
: FlashMediaElementRenderer
.create
1871 _renderer
.renderer
.add(FlashMediaElementAudioRenderer
);
1873 var FlashMediaElementAudioOggRenderer
= {
1874 name
: 'flash_audio_ogg',
1876 prefix
: 'flash_audio_ogg',
1877 filename
: 'mediaelement-flash-audio-ogg.swf'
1880 canPlayType
: function canPlayType(type
) {
1881 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type
.toLowerCase());
1884 create
: FlashMediaElementRenderer
.create
1886 _renderer
.renderer
.add(FlashMediaElementAudioOggRenderer
);
1889 },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_
,module
,exports
){
1892 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
; };
1894 var _window
= _dereq_(3);
1896 var _window2
= _interopRequireDefault(_window
);
1898 var _mejs
= _dereq_(7);
1900 var _mejs2
= _interopRequireDefault(_mejs
);
1902 var _renderer
= _dereq_(8);
1904 var _general
= _dereq_(18);
1906 var _constants
= _dereq_(16);
1908 var _media
= _dereq_(19);
1910 var _dom
= _dereq_(17);
1912 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
1918 load
: function load(settings
) {
1919 if (typeof flvjs
!== 'undefined') {
1920 NativeFlv
.promise
= new Promise(function (resolve
) {
1922 }).then(function () {
1923 NativeFlv
._createPlayer(settings
);
1926 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js';
1928 NativeFlv
.promise
= NativeFlv
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
1929 NativeFlv
.promise
.then(function () {
1930 NativeFlv
._createPlayer(settings
);
1934 return NativeFlv
.promise
;
1937 _createPlayer
: function _createPlayer(settings
) {
1938 flvjs
.LoggingControl
.enableDebug
= settings
.options
.debug
;
1939 flvjs
.LoggingControl
.enableVerbose
= settings
.options
.debug
;
1940 var player
= flvjs
.createPlayer(settings
.options
);
1941 _window2
.default['__ready__' + settings
.id
](player
);
1946 var FlvNativeRenderer
= {
1949 prefix
: 'native_flv',
1951 path
: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js',
1958 canPlayType
: function canPlayType(type
) {
1959 return _constants
.HAS_MSE
&& ['video/x-flv', 'video/flv'].indexOf(type
.toLowerCase()) > -1;
1962 create
: function create(mediaElement
, options
, mediaFiles
) {
1964 var originalNode
= mediaElement
.originalNode
,
1965 id
= mediaElement
.id
+ '_' + options
.prefix
;
1970 node
= originalNode
.cloneNode(true);
1971 options
= Object
.assign(options
, mediaElement
.options
);
1973 var props
= _mejs2
.default.html5media
.properties
,
1974 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']),
1975 attachNativeEvents
= function attachNativeEvents(e
) {
1976 if (e
.type
!== 'error') {
1977 var _event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
1978 mediaElement
.dispatchEvent(_event
);
1981 assignGettersSetters
= function assignGettersSetters(propName
) {
1982 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
1984 node
['get' + capName
] = function () {
1985 return flvPlayer
!== null ? node
[propName
] : null;
1988 node
['set' + capName
] = function (value
) {
1989 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
1990 if (propName
=== 'src') {
1991 node
[propName
] = (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
1992 if (flvPlayer
!== null) {
1993 var _flvOptions
= {};
1994 _flvOptions
.type
= 'flv';
1995 _flvOptions
.url
= value
;
1996 _flvOptions
.cors
= options
.flv
.cors
;
1997 _flvOptions
.debug
= options
.flv
.debug
;
1998 _flvOptions
.path
= options
.flv
.path
;
2000 flvPlayer
.destroy();
2001 for (var i
= 0, total
= events
.length
; i
< total
; i
++) {
2002 node
.removeEventListener(events
[i
], attachNativeEvents
);
2004 flvPlayer
= NativeFlv
._createPlayer({
2005 options
: _flvOptions
,
2008 flvPlayer
.attachMediaElement(node
);
2012 node
[propName
] = value
;
2018 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2019 assignGettersSetters(props
[i
]);
2022 _window2
.default['__ready__' + id
] = function (_flvPlayer
) {
2023 mediaElement
.flvPlayer
= flvPlayer
= _flvPlayer
;
2025 var flvEvents
= flvjs
.Events
,
2026 assignEvents
= function assignEvents(eventName
) {
2027 if (eventName
=== 'loadedmetadata') {
2029 flvPlayer
.detachMediaElement();
2030 flvPlayer
.attachMediaElement(node
);
2034 node
.addEventListener(eventName
, attachNativeEvents
);
2037 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
2038 assignEvents(events
[_i
]);
2041 var assignFlvEvents
= function assignFlvEvents(name
, data
) {
2042 if (name
=== 'error') {
2043 var message
= data
[0] + ': ' + data
[1] + ' ' + data
[2].msg
;
2044 mediaElement
.generateError(message
, node
.src
);
2046 var _event2
= (0, _general
.createEvent
)(name
, mediaElement
);
2047 _event2
.data
= data
;
2048 mediaElement
.dispatchEvent(_event2
);
2052 var _loop
= function _loop(eventType
) {
2053 if (flvEvents
.hasOwnProperty(eventType
)) {
2054 flvPlayer
.on(flvEvents
[eventType
], function () {
2055 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
2056 args
[_key
] = arguments
[_key
];
2059 return assignFlvEvents(flvEvents
[eventType
], args
);
2064 for (var eventType
in flvEvents
) {
2069 if (mediaFiles
&& mediaFiles
.length
> 0) {
2070 for (var _i2
= 0, _total2
= mediaFiles
.length
; _i2
< _total2
; _i2
++) {
2071 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i2
].type
)) {
2072 node
.setAttribute('src', mediaFiles
[_i2
].src
);
2078 node
.setAttribute('id', id
);
2080 originalNode
.parentNode
.insertBefore(node
, originalNode
);
2081 originalNode
.autoplay
= false;
2082 originalNode
.style
.display
= 'none';
2084 var flvOptions
= {};
2085 flvOptions
.type
= 'flv';
2086 flvOptions
.url
= node
.src
;
2087 flvOptions
.cors
= options
.flv
.cors
;
2088 flvOptions
.debug
= options
.flv
.debug
;
2089 flvOptions
.path
= options
.flv
.path
;
2091 node
.setSize = function (width
, height
) {
2092 node
.style
.width
= width
+ 'px';
2093 node
.style
.height
= height
+ 'px';
2097 node
.hide = function () {
2098 if (flvPlayer
!== null) {
2101 node
.style
.display
= 'none';
2105 node
.show = function () {
2106 node
.style
.display
= '';
2110 node
.destroy = function () {
2111 if (flvPlayer
!== null) {
2112 flvPlayer
.destroy();
2116 var event
= (0, _general
.createEvent
)('rendererready', node
);
2117 mediaElement
.dispatchEvent(event
);
2119 mediaElement
.promises
.push(NativeFlv
.load({
2120 options
: flvOptions
,
2128 _media
.typeChecks
.push(function (url
) {
2129 return ~url
.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
2132 _renderer
.renderer
.add(FlvNativeRenderer
);
2134 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_
,module
,exports
){
2137 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
; };
2139 var _window
= _dereq_(3);
2141 var _window2
= _interopRequireDefault(_window
);
2143 var _mejs
= _dereq_(7);
2145 var _mejs2
= _interopRequireDefault(_mejs
);
2147 var _renderer
= _dereq_(8);
2149 var _general
= _dereq_(18);
2151 var _constants
= _dereq_(16);
2153 var _media
= _dereq_(19);
2155 var _dom
= _dereq_(17);
2157 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2163 load
: function load(settings
) {
2164 if (typeof Hls
!== 'undefined') {
2165 NativeHls
.promise
= new Promise(function (resolve
) {
2167 }).then(function () {
2168 NativeHls
._createPlayer(settings
);
2171 settings
.options
.path
= typeof settings
.options
.path
=== 'string' ? settings
.options
.path
: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js';
2173 NativeHls
.promise
= NativeHls
.promise
|| (0, _dom
.loadScript
)(settings
.options
.path
);
2174 NativeHls
.promise
.then(function () {
2175 NativeHls
._createPlayer(settings
);
2179 return NativeHls
.promise
;
2182 _createPlayer
: function _createPlayer(settings
) {
2183 var player
= new Hls(settings
.options
);
2184 _window2
.default['__ready__' + settings
.id
](player
);
2189 var HlsNativeRenderer
= {
2192 prefix
: 'native_hls',
2194 path
: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js',
2196 autoStartLoad
: false,
2201 canPlayType
: function canPlayType(type
) {
2202 return _constants
.HAS_MSE
&& ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type
.toLowerCase()) > -1;
2205 create
: function create(mediaElement
, options
, mediaFiles
) {
2207 var originalNode
= mediaElement
.originalNode
,
2208 id
= mediaElement
.id
+ '_' + options
.prefix
,
2209 preload
= originalNode
.getAttribute('preload'),
2210 autoplay
= originalNode
.autoplay
;
2212 var hlsPlayer
= null,
2215 node
= originalNode
.cloneNode(true);
2216 options
= Object
.assign(options
, mediaElement
.options
);
2217 options
.hls
.autoStartLoad
= preload
&& preload
!== 'none' || autoplay
;
2219 var props
= _mejs2
.default.html5media
.properties
,
2220 events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']),
2221 attachNativeEvents
= function attachNativeEvents(e
) {
2222 if (e
.type
!== 'error') {
2223 var _event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
2224 mediaElement
.dispatchEvent(_event
);
2227 assignGettersSetters
= function assignGettersSetters(propName
) {
2228 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2230 node
['get' + capName
] = function () {
2231 return hlsPlayer
!== null ? node
[propName
] : null;
2234 node
['set' + capName
] = function (value
) {
2235 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
2236 if (propName
=== 'src') {
2237 node
[propName
] = (typeof value
=== 'undefined' ? 'undefined' : _typeof(value
)) === 'object' && value
.src
? value
.src
: value
;
2238 if (hlsPlayer
!== null) {
2239 hlsPlayer
.destroy();
2240 for (var i
= 0, total
= events
.length
; i
< total
; i
++) {
2241 node
.removeEventListener(events
[i
], attachNativeEvents
);
2243 hlsPlayer
= NativeHls
._createPlayer({
2244 options
: options
.hls
,
2247 hlsPlayer
.loadSource(value
);
2248 hlsPlayer
.attachMedia(node
);
2251 node
[propName
] = value
;
2257 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2258 assignGettersSetters(props
[i
]);
2261 _window2
.default['__ready__' + id
] = function (_hlsPlayer
) {
2262 mediaElement
.hlsPlayer
= hlsPlayer
= _hlsPlayer
;
2263 var hlsEvents
= Hls
.Events
,
2264 assignEvents
= function assignEvents(eventName
) {
2265 if (eventName
=== 'loadedmetadata') {
2266 var url
= mediaElement
.originalNode
.src
;
2267 hlsPlayer
.detachMedia();
2268 hlsPlayer
.loadSource(url
);
2269 hlsPlayer
.attachMedia(node
);
2272 node
.addEventListener(eventName
, attachNativeEvents
);
2275 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
2276 assignEvents(events
[_i
]);
2279 var recoverDecodingErrorDate
= void 0,
2280 recoverSwapAudioCodecDate
= void 0;
2281 var assignHlsEvents
= function assignHlsEvents(name
, data
) {
2282 if (name
=== 'hlsError') {
2283 console
.warn(name
, data
);
2286 switch (data
.type
) {
2288 var now
= new Date().getTime();
2289 if (!recoverDecodingErrorDate
|| now
- recoverDecodingErrorDate
> 3000) {
2290 recoverDecodingErrorDate
= new Date().getTime();
2291 hlsPlayer
.recoverMediaError();
2292 } else if (!recoverSwapAudioCodecDate
|| now
- recoverSwapAudioCodecDate
> 3000) {
2293 recoverSwapAudioCodecDate
= new Date().getTime();
2294 console
.warn('Attempting to swap Audio Codec and recover from media error');
2295 hlsPlayer
.swapAudioCodec();
2296 hlsPlayer
.recoverMediaError();
2298 var _message
= 'Cannot recover, last media error recovery failed';
2299 mediaElement
.generateError(_message
, node
.src
);
2300 console
.error(_message
);
2303 case 'networkError':
2304 var message
= 'Network error';
2305 mediaElement
.generateError(message
, node
.src
);
2306 console
.error(message
);
2309 hlsPlayer
.destroy();
2314 var _event2
= (0, _general
.createEvent
)(name
, mediaElement
);
2315 _event2
.data
= data
;
2316 mediaElement
.dispatchEvent(_event2
);
2320 var _loop
= function _loop(eventType
) {
2321 if (hlsEvents
.hasOwnProperty(eventType
)) {
2322 hlsPlayer
.on(hlsEvents
[eventType
], function () {
2323 for (var _len
= arguments
.length
, args
= Array(_len
), _key
= 0; _key
< _len
; _key
++) {
2324 args
[_key
] = arguments
[_key
];
2327 return assignHlsEvents(hlsEvents
[eventType
], args
);
2332 for (var eventType
in hlsEvents
) {
2337 if (mediaFiles
&& mediaFiles
.length
> 0) {
2338 for (var _i2
= 0, _total2
= mediaFiles
.length
; _i2
< _total2
; _i2
++) {
2339 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i2
].type
)) {
2340 node
.setAttribute('src', mediaFiles
[_i2
].src
);
2346 if (preload
!== 'auto' && !autoplay
) {
2347 node
.addEventListener('play', function () {
2348 if (hlsPlayer
!== null) {
2349 hlsPlayer
.startLoad();
2353 node
.addEventListener('pause', function () {
2354 if (hlsPlayer
!== null) {
2355 hlsPlayer
.stopLoad();
2360 node
.setAttribute('id', id
);
2362 originalNode
.parentNode
.insertBefore(node
, originalNode
);
2363 originalNode
.autoplay
= false;
2364 originalNode
.style
.display
= 'none';
2366 node
.setSize = function (width
, height
) {
2367 node
.style
.width
= width
+ 'px';
2368 node
.style
.height
= height
+ 'px';
2372 node
.hide = function () {
2374 node
.style
.display
= 'none';
2378 node
.show = function () {
2379 node
.style
.display
= '';
2383 node
.destroy = function () {
2384 if (hlsPlayer
!== null) {
2385 hlsPlayer
.stopLoad();
2386 hlsPlayer
.destroy();
2390 var event
= (0, _general
.createEvent
)('rendererready', node
);
2391 mediaElement
.dispatchEvent(event
);
2393 mediaElement
.promises
.push(NativeHls
.load({
2394 options
: options
.hls
,
2402 _media
.typeChecks
.push(function (url
) {
2403 return ~url
.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
2406 _renderer
.renderer
.add(HlsNativeRenderer
);
2408 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_
,module
,exports
){
2411 var _window
= _dereq_(3);
2413 var _window2
= _interopRequireDefault(_window
);
2415 var _document
= _dereq_(2);
2417 var _document2
= _interopRequireDefault(_document
);
2419 var _mejs
= _dereq_(7);
2421 var _mejs2
= _interopRequireDefault(_mejs
);
2423 var _renderer
= _dereq_(8);
2425 var _general
= _dereq_(18);
2427 var _constants
= _dereq_(16);
2429 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2431 var HtmlMediaElement
= {
2437 canPlayType
: function canPlayType(type
) {
2439 var mediaElement
= _document2
.default.createElement('video');
2441 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
) {
2443 } else if (mediaElement
.canPlayType
) {
2444 return mediaElement
.canPlayType(type
.toLowerCase()).replace(/no/, '');
2450 create
: function create(mediaElement
, options
, mediaFiles
) {
2452 var id
= mediaElement
.id
+ '_' + options
.prefix
;
2456 if (mediaElement
.originalNode
=== undefined || mediaElement
.originalNode
=== null) {
2457 node
= _document2
.default.createElement('audio');
2458 mediaElement
.appendChild(node
);
2460 node
= mediaElement
.originalNode
;
2463 node
.setAttribute('id', id
);
2465 var props
= _mejs2
.default.html5media
.properties
,
2466 assignGettersSetters
= function assignGettersSetters(propName
) {
2467 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2469 node
['get' + capName
] = function () {
2470 return node
[propName
];
2473 node
['set' + capName
] = function (value
) {
2474 if (_mejs2
.default.html5media
.readOnlyProperties
.indexOf(propName
) === -1) {
2475 node
[propName
] = value
;
2480 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2481 assignGettersSetters(props
[i
]);
2484 var events
= _mejs2
.default.html5media
.events
.concat(['click', 'mouseover', 'mouseout']),
2485 assignEvents
= function assignEvents(eventName
) {
2486 node
.addEventListener(eventName
, function (e
) {
2487 var event
= (0, _general
.createEvent
)(e
.type
, mediaElement
);
2488 mediaElement
.dispatchEvent(event
);
2492 for (var _i
= 0, _total
= events
.length
; _i
< _total
; _i
++) {
2493 assignEvents(events
[_i
]);
2496 node
.setSize = function (width
, height
) {
2497 node
.style
.width
= width
+ 'px';
2498 node
.style
.height
= height
+ 'px';
2502 node
.hide = function () {
2503 node
.style
.display
= 'none';
2508 node
.show = function () {
2509 node
.style
.display
= '';
2514 if (mediaFiles
&& mediaFiles
.length
> 0) {
2515 for (var _i2
= 0, _total2
= mediaFiles
.length
; _i2
< _total2
; _i2
++) {
2516 if (_renderer
.renderer
.renderers
[options
.prefix
].canPlayType(mediaFiles
[_i2
].type
)) {
2517 node
.setAttribute('src', mediaFiles
[_i2
].src
);
2523 var event
= (0, _general
.createEvent
)('rendererready', node
);
2524 mediaElement
.dispatchEvent(event
);
2530 _window2
.default.HtmlMediaElement
= _mejs2
.default.HtmlMediaElement
= HtmlMediaElement
;
2532 _renderer
.renderer
.add(HtmlMediaElement
);
2534 },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_
,module
,exports
){
2537 var _window
= _dereq_(3);
2539 var _window2
= _interopRequireDefault(_window
);
2541 var _document
= _dereq_(2);
2543 var _document2
= _interopRequireDefault(_document
);
2545 var _mejs
= _dereq_(7);
2547 var _mejs2
= _interopRequireDefault(_mejs
);
2549 var _renderer
= _dereq_(8);
2551 var _general
= _dereq_(18);
2553 var _media
= _dereq_(19);
2555 var _dom
= _dereq_(17);
2557 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
2560 isIframeStarted
: false,
2562 isIframeLoaded
: false,
2566 enqueueIframe
: function enqueueIframe(settings
) {
2567 YouTubeApi
.isLoaded
= typeof YT
!== 'undefined' && YT
.loaded
;
2569 if (YouTubeApi
.isLoaded
) {
2570 YouTubeApi
.createIframe(settings
);
2572 YouTubeApi
.loadIframeApi();
2573 YouTubeApi
.iframeQueue
.push(settings
);
2577 loadIframeApi
: function loadIframeApi() {
2578 if (!YouTubeApi
.isIframeStarted
) {
2579 (0, _dom
.loadScript
)('https://www.youtube.com/player_api');
2580 YouTubeApi
.isIframeStarted
= true;
2584 iFrameReady
: function iFrameReady() {
2586 YouTubeApi
.isLoaded
= true;
2587 YouTubeApi
.isIframeLoaded
= true;
2589 while (YouTubeApi
.iframeQueue
.length
> 0) {
2590 var settings
= YouTubeApi
.iframeQueue
.pop();
2591 YouTubeApi
.createIframe(settings
);
2595 createIframe
: function createIframe(settings
) {
2596 return new YT
.Player(settings
.containerId
, settings
);
2599 getYouTubeId
: function getYouTubeId(url
) {
2603 if (url
.indexOf('?') > 0) {
2604 youTubeId
= YouTubeApi
.getYouTubeIdFromParam(url
);
2606 if (youTubeId
=== '') {
2607 youTubeId
= YouTubeApi
.getYouTubeIdFromUrl(url
);
2610 youTubeId
= YouTubeApi
.getYouTubeIdFromUrl(url
);
2613 var id
= youTubeId
.substring(youTubeId
.lastIndexOf('/') + 1);
2614 youTubeId
= id
.split('?');
2615 return youTubeId
[0];
2618 getYouTubeIdFromParam
: function getYouTubeIdFromParam(url
) {
2620 if (url
=== undefined || url
=== null || !url
.trim().length
) {
2624 var parts
= url
.split('?'),
2625 parameters
= parts
[1].split('&');
2629 for (var i
= 0, total
= parameters
.length
; i
< total
; i
++) {
2630 var paramParts
= parameters
[i
].split('=');
2631 if (paramParts
[0] === 'v') {
2632 youTubeId
= paramParts
[1];
2640 getYouTubeIdFromUrl
: function getYouTubeIdFromUrl(url
) {
2642 if (url
=== undefined || url
=== null || !url
.trim().length
) {
2646 var parts
= url
.split('?');
2648 return url
.substring(url
.lastIndexOf('/') + 1);
2651 getYouTubeNoCookieUrl
: function getYouTubeNoCookieUrl(url
) {
2652 if (url
=== undefined || url
=== null || !url
.trim().length
|| url
.indexOf('//www.youtube') === -1) {
2656 var parts
= url
.split('/');
2657 parts
[2] = parts
[2].replace('.com', '-nocookie.com');
2658 return parts
.join('/');
2662 var YouTubeIframeRenderer
= {
2663 name
: 'youtube_iframe',
2666 prefix
: 'youtube_iframe',
2687 canPlayType
: function canPlayType(type
) {
2688 return ~['video/youtube', 'video/x-youtube'].indexOf(type
.toLowerCase());
2691 create
: function create(mediaElement
, options
, mediaFiles
) {
2697 var youTubeApi
= null,
2700 youTubeIframe
= null,
2703 youtube
.options
= options
;
2704 youtube
.id
= mediaElement
.id
+ '_' + options
.prefix
;
2705 youtube
.mediaElement
= mediaElement
;
2707 var props
= _mejs2
.default.html5media
.properties
,
2708 assignGettersSetters
= function assignGettersSetters(propName
) {
2710 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2712 youtube
['get' + capName
] = function () {
2713 if (youTubeApi
!== null) {
2718 return youTubeApi
.getCurrentTime();
2720 return youTubeApi
.getDuration();
2722 volume
= youTubeApi
.getVolume() / 100;
2729 return youTubeApi
.isMuted();
2731 var percentLoaded
= youTubeApi
.getVideoLoadedFraction(),
2732 duration
= youTubeApi
.getDuration();
2734 start
: function start() {
2737 end
: function end() {
2738 return percentLoaded
* duration
;
2743 return youTubeApi
.getVideoUrl();
2754 youtube
['set' + capName
] = function (value
) {
2755 if (youTubeApi
!== null) {
2758 var url
= typeof value
=== 'string' ? value
: value
[0].src
,
2759 _videoId
= YouTubeApi
.getYouTubeId(url
);
2761 if (mediaElement
.originalNode
.autoplay
) {
2762 youTubeApi
.loadVideoById(_videoId
);
2764 youTubeApi
.cueVideoById(_videoId
);
2768 youTubeApi
.seekTo(value
);
2774 youTubeApi
.unMute();
2776 setTimeout(function () {
2777 var event
= (0, _general
.createEvent
)('volumechange', youtube
);
2778 mediaElement
.dispatchEvent(event
);
2783 youTubeApi
.setVolume(value
* 100);
2784 setTimeout(function () {
2785 var event
= (0, _general
.createEvent
)('volumechange', youtube
);
2786 mediaElement
.dispatchEvent(event
);
2790 var event
= (0, _general
.createEvent
)('canplay', youtube
);
2791 mediaElement
.dispatchEvent(event
);
2798 apiStack
.push({ type
: 'set', propName
: propName
, value
: value
});
2803 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
2804 assignGettersSetters(props
[i
]);
2807 var methods
= _mejs2
.default.html5media
.methods
,
2808 assignMethods
= function assignMethods(methodName
) {
2809 youtube
[methodName
] = function () {
2810 if (youTubeApi
!== null) {
2811 switch (methodName
) {
2814 return youTubeApi
.playVideo();
2817 return youTubeApi
.pauseVideo();
2822 apiStack
.push({ type
: 'call', methodName
: methodName
});
2827 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
2828 assignMethods(methods
[_i
]);
2831 var youtubeContainer
= _document2
.default.createElement('div');
2832 youtubeContainer
.id
= youtube
.id
;
2834 if (youtube
.options
.youtube
.nocookie
) {
2835 mediaElement
.originalNode
.src
= YouTubeApi
.getYouTubeNoCookieUrl(mediaFiles
[0].src
);
2838 mediaElement
.originalNode
.parentNode
.insertBefore(youtubeContainer
, mediaElement
.originalNode
);
2839 mediaElement
.originalNode
.style
.display
= 'none';
2841 var isAudio
= mediaElement
.originalNode
.tagName
.toLowerCase() === 'audio',
2842 height
= isAudio
? '1' : mediaElement
.originalNode
.height
,
2843 width
= isAudio
? '1' : mediaElement
.originalNode
.width
,
2844 videoId
= YouTubeApi
.getYouTubeId(mediaFiles
[0].src
),
2847 containerId
: youtubeContainer
.id
,
2851 playerVars
: Object
.assign({
2862 }, youtube
.options
.youtube
),
2863 origin
: _window2
.default.location
.host
,
2865 onReady
: function onReady(e
) {
2866 mediaElement
.youTubeApi
= youTubeApi
= e
.target
;
2867 mediaElement
.youTubeState
= {
2872 if (apiStack
.length
) {
2873 for (var _i2
= 0, _total2
= apiStack
.length
; _i2
< _total2
; _i2
++) {
2875 var stackItem
= apiStack
[_i2
];
2877 if (stackItem
.type
=== 'set') {
2878 var propName
= stackItem
.propName
,
2879 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
2881 youtube
['set' + capName
](stackItem
.value
);
2882 } else if (stackItem
.type
=== 'call') {
2883 youtube
[stackItem
.methodName
]();
2888 youTubeIframe
= youTubeApi
.getIframe();
2890 if (mediaElement
.originalNode
.getAttribute('muted')) {
2894 var events
= ['mouseover', 'mouseout'],
2895 assignEvents
= function assignEvents(e
) {
2896 var newEvent
= (0, _general
.createEvent
)(e
.type
, youtube
);
2897 mediaElement
.dispatchEvent(newEvent
);
2900 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
2901 youTubeIframe
.addEventListener(events
[_i3
], assignEvents
, false);
2904 var initEvents
= ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
2906 for (var _i4
= 0, _total4
= initEvents
.length
; _i4
< _total4
; _i4
++) {
2907 var event
= (0, _general
.createEvent
)(initEvents
[_i4
], youtube
);
2908 mediaElement
.dispatchEvent(event
);
2911 onStateChange
: function onStateChange(e
) {
2916 events
= ['loadedmetadata'];
2923 ended
= !youtube
.options
.youtube
.loop
;
2924 if (!youtube
.options
.youtube
.loop
) {
2925 youtube
.stopInterval();
2929 events
= ['play', 'playing'];
2932 youtube
.startInterval();
2938 youtube
.stopInterval();
2941 events
= ['progress'];
2945 events
= ['loadeddata', 'loadedmetadata', 'canplay'];
2951 for (var _i5
= 0, _total5
= events
.length
; _i5
< _total5
; _i5
++) {
2952 var event
= (0, _general
.createEvent
)(events
[_i5
], youtube
);
2953 mediaElement
.dispatchEvent(event
);
2956 onError
: function onError(e
) {
2957 var event
= (0, _general
.createEvent
)('error', youtube
);
2958 event
.data
= e
.data
;
2959 mediaElement
.dispatchEvent(event
);
2965 youtubeSettings
.playerVars
.playsinline
= 1;
2968 if (mediaElement
.originalNode
.autoplay
) {
2969 youtubeSettings
.playerVars
.autoplay
= 1;
2972 if (mediaElement
.originalNode
.loop
) {
2973 youtubeSettings
.playerVars
.loop
= 1;
2976 YouTubeApi
.enqueueIframe(youtubeSettings
);
2978 youtube
.onEvent = function (eventName
, player
, _youTubeState
) {
2979 if (_youTubeState
!== null && _youTubeState
!== undefined) {
2980 mediaElement
.youTubeState
= _youTubeState
;
2984 youtube
.setSize = function (width
, height
) {
2985 if (youTubeApi
!== null) {
2986 youTubeApi
.setSize(width
, height
);
2989 youtube
.hide = function () {
2990 youtube
.stopInterval();
2992 if (youTubeIframe
) {
2993 youTubeIframe
.style
.display
= 'none';
2996 youtube
.show = function () {
2997 if (youTubeIframe
) {
2998 youTubeIframe
.style
.display
= '';
3001 youtube
.destroy = function () {
3002 youTubeApi
.destroy();
3004 youtube
.interval
= null;
3006 youtube
.startInterval = function () {
3007 youtube
.interval
= setInterval(function () {
3008 var event
= (0, _general
.createEvent
)('timeupdate', youtube
);
3009 mediaElement
.dispatchEvent(event
);
3012 youtube
.stopInterval = function () {
3013 if (youtube
.interval
) {
3014 clearInterval(youtube
.interval
);
3017 youtube
.getPosterUrl = function () {
3018 var quality
= options
.youtube
.imageQuality
,
3019 resolutions
= ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
3020 id
= YouTubeApi
.getYouTubeId(mediaElement
.originalNode
.src
);
3021 return quality
&& resolutions
.indexOf(quality
) > -1 && id
? 'https://img.youtube.com/vi/' + id
+ '/' + quality
+ '.jpg' : '';
3028 _window2
.default.onYouTubePlayerAPIReady = function () {
3029 YouTubeApi
.iFrameReady();
3032 _media
.typeChecks
.push(function (url
) {
3033 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url
) ? 'video/x-youtube' : null
3037 _renderer
.renderer
.add(YouTubeIframeRenderer
);
3039 },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_
,module
,exports
){
3042 Object
.defineProperty(exports
, "__esModule", {
3045 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_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;
3047 var _window
= _dereq_(3);
3049 var _window2
= _interopRequireDefault(_window
);
3051 var _document
= _dereq_(2);
3053 var _document2
= _interopRequireDefault(_document
);
3055 var _mejs
= _dereq_(7);
3057 var _mejs2
= _interopRequireDefault(_mejs
);
3059 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3061 var NAV
= exports
.NAV
= _window2
.default.navigator
;
3062 var UA
= exports
.UA
= NAV
.userAgent
.toLowerCase();
3063 var IS_IPAD
= exports
.IS_IPAD
= /ipad/i.test(UA
) && !_window2
.default.MSStream
;
3064 var IS_IPHONE
= exports
.IS_IPHONE
= /iphone/i.test(UA
) && !_window2
.default.MSStream
;
3065 var IS_IPOD
= exports
.IS_IPOD
= /ipod/i.test(UA
) && !_window2
.default.MSStream
;
3066 var IS_IOS
= exports
.IS_IOS
= /ipad|iphone|ipod/i.test(UA
) && !_window2
.default.MSStream
;
3067 var IS_ANDROID
= exports
.IS_ANDROID
= /android/i.test(UA
);
3068 var IS_IE
= exports
.IS_IE
= /(trident|microsoft)/i.test(NAV
.appName
);
3069 var IS_EDGE
= exports
.IS_EDGE
= 'msLaunchUri' in NAV
&& !('documentMode' in _document2
.default);
3070 var IS_CHROME
= exports
.IS_CHROME
= /chrome/i.test(UA
);
3071 var IS_FIREFOX
= exports
.IS_FIREFOX
= /firefox/i.test(UA
);
3072 var IS_SAFARI
= exports
.IS_SAFARI
= /safari/i.test(UA
) && !IS_CHROME
;
3073 var IS_STOCK_ANDROID
= exports
.IS_STOCK_ANDROID
= /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA
);
3074 var HAS_MSE
= exports
.HAS_MSE
= 'MediaSource' in _window2
.default;
3075 var SUPPORT_POINTER_EVENTS
= exports
.SUPPORT_POINTER_EVENTS = function () {
3076 var element
= _document2
.default.createElement('x'),
3077 documentElement
= _document2
.default.documentElement
,
3078 getComputedStyle
= _window2
.default.getComputedStyle
;
3080 if (!('pointerEvents' in element
.style
)) {
3084 element
.style
.pointerEvents
= 'auto';
3085 element
.style
.pointerEvents
= 'x';
3086 documentElement
.appendChild(element
);
3087 var supports
= getComputedStyle
&& getComputedStyle(element
, '').pointerEvents
=== 'auto';
3092 var html5Elements
= ['source', 'track', 'audio', 'video'];
3095 for (var i
= 0, total
= html5Elements
.length
; i
< total
; i
++) {
3096 video
= _document2
.default.createElement(html5Elements
[i
]);
3099 var SUPPORTS_NATIVE_HLS
= exports
.SUPPORTS_NATIVE_HLS
= IS_SAFARI
|| IS_ANDROID
&& (IS_CHROME
|| IS_STOCK_ANDROID
) || IS_IE
&& /edge/i.test(UA
);
3101 var hasiOSFullScreen
= video
.webkitEnterFullscreen
!== undefined;
3103 var hasNativeFullscreen
= video
.requestFullscreen
!== undefined;
3105 if (hasiOSFullScreen
&& /mac os x 10_5/i.test(UA
)) {
3106 hasNativeFullscreen
= false;
3107 hasiOSFullScreen
= false;
3110 var hasWebkitNativeFullScreen
= video
.webkitRequestFullScreen
!== undefined;
3111 var hasMozNativeFullScreen
= video
.mozRequestFullScreen
!== undefined;
3112 var hasMsNativeFullScreen
= video
.msRequestFullscreen
!== undefined;
3113 var hasTrueNativeFullScreen
= hasWebkitNativeFullScreen
|| hasMozNativeFullScreen
|| hasMsNativeFullScreen
;
3114 var nativeFullScreenEnabled
= hasTrueNativeFullScreen
;
3115 var fullScreenEventName
= '';
3116 var isFullScreen
= void 0,
3117 requestFullScreen
= void 0,
3118 cancelFullScreen
= void 0;
3120 if (hasMozNativeFullScreen
) {
3121 nativeFullScreenEnabled
= _document2
.default.mozFullScreenEnabled
;
3122 } else if (hasMsNativeFullScreen
) {
3123 nativeFullScreenEnabled
= _document2
.default.msFullscreenEnabled
;
3127 hasiOSFullScreen
= false;
3130 if (hasTrueNativeFullScreen
) {
3131 if (hasWebkitNativeFullScreen
) {
3132 fullScreenEventName
= 'webkitfullscreenchange';
3133 } else if (hasMozNativeFullScreen
) {
3134 fullScreenEventName
= 'mozfullscreenchange';
3135 } else if (hasMsNativeFullScreen
) {
3136 fullScreenEventName
= 'MSFullscreenChange';
3139 exports
.isFullScreen
= isFullScreen
= function isFullScreen() {
3140 if (hasMozNativeFullScreen
) {
3141 return _document2
.default.mozFullScreen
;
3142 } else if (hasWebkitNativeFullScreen
) {
3143 return _document2
.default.webkitIsFullScreen
;
3144 } else if (hasMsNativeFullScreen
) {
3145 return _document2
.default.msFullscreenElement
!== null;
3149 exports
.requestFullScreen
= requestFullScreen
= function requestFullScreen(el
) {
3150 if (hasWebkitNativeFullScreen
) {
3151 el
.webkitRequestFullScreen();
3152 } else if (hasMozNativeFullScreen
) {
3153 el
.mozRequestFullScreen();
3154 } else if (hasMsNativeFullScreen
) {
3155 el
.msRequestFullscreen();
3159 exports
.cancelFullScreen
= cancelFullScreen
= function cancelFullScreen() {
3160 if (hasWebkitNativeFullScreen
) {
3161 _document2
.default.webkitCancelFullScreen();
3162 } else if (hasMozNativeFullScreen
) {
3163 _document2
.default.mozCancelFullScreen();
3164 } else if (hasMsNativeFullScreen
) {
3165 _document2
.default.msExitFullscreen();
3170 var HAS_NATIVE_FULLSCREEN
= exports
.HAS_NATIVE_FULLSCREEN
= hasNativeFullscreen
;
3171 var HAS_WEBKIT_NATIVE_FULLSCREEN
= exports
.HAS_WEBKIT_NATIVE_FULLSCREEN
= hasWebkitNativeFullScreen
;
3172 var HAS_MOZ_NATIVE_FULLSCREEN
= exports
.HAS_MOZ_NATIVE_FULLSCREEN
= hasMozNativeFullScreen
;
3173 var HAS_MS_NATIVE_FULLSCREEN
= exports
.HAS_MS_NATIVE_FULLSCREEN
= hasMsNativeFullScreen
;
3174 var HAS_IOS_FULLSCREEN
= exports
.HAS_IOS_FULLSCREEN
= hasiOSFullScreen
;
3175 var HAS_TRUE_NATIVE_FULLSCREEN
= exports
.HAS_TRUE_NATIVE_FULLSCREEN
= hasTrueNativeFullScreen
;
3176 var HAS_NATIVE_FULLSCREEN_ENABLED
= exports
.HAS_NATIVE_FULLSCREEN_ENABLED
= nativeFullScreenEnabled
;
3177 var FULLSCREEN_EVENT_NAME
= exports
.FULLSCREEN_EVENT_NAME
= fullScreenEventName
;
3178 exports
.isFullScreen
= isFullScreen
;
3179 exports
.requestFullScreen
= requestFullScreen
;
3180 exports
.cancelFullScreen
= cancelFullScreen
;
3183 _mejs2
.default.Features
= _mejs2
.default.Features
|| {};
3184 _mejs2
.default.Features
.isiPad
= IS_IPAD
;
3185 _mejs2
.default.Features
.isiPod
= IS_IPOD
;
3186 _mejs2
.default.Features
.isiPhone
= IS_IPHONE
;
3187 _mejs2
.default.Features
.isiOS
= _mejs2
.default.Features
.isiPhone
|| _mejs2
.default.Features
.isiPad
;
3188 _mejs2
.default.Features
.isAndroid
= IS_ANDROID
;
3189 _mejs2
.default.Features
.isIE
= IS_IE
;
3190 _mejs2
.default.Features
.isEdge
= IS_EDGE
;
3191 _mejs2
.default.Features
.isChrome
= IS_CHROME
;
3192 _mejs2
.default.Features
.isFirefox
= IS_FIREFOX
;
3193 _mejs2
.default.Features
.isSafari
= IS_SAFARI
;
3194 _mejs2
.default.Features
.isStockAndroid
= IS_STOCK_ANDROID
;
3195 _mejs2
.default.Features
.hasMSE
= HAS_MSE
;
3196 _mejs2
.default.Features
.supportsNativeHLS
= SUPPORTS_NATIVE_HLS
;
3197 _mejs2
.default.Features
.supportsPointerEvents
= SUPPORT_POINTER_EVENTS
;
3198 _mejs2
.default.Features
.hasiOSFullScreen
= HAS_IOS_FULLSCREEN
;
3199 _mejs2
.default.Features
.hasNativeFullscreen
= HAS_NATIVE_FULLSCREEN
;
3200 _mejs2
.default.Features
.hasWebkitNativeFullScreen
= HAS_WEBKIT_NATIVE_FULLSCREEN
;
3201 _mejs2
.default.Features
.hasMozNativeFullScreen
= HAS_MOZ_NATIVE_FULLSCREEN
;
3202 _mejs2
.default.Features
.hasMsNativeFullScreen
= HAS_MS_NATIVE_FULLSCREEN
;
3203 _mejs2
.default.Features
.hasTrueNativeFullScreen
= HAS_TRUE_NATIVE_FULLSCREEN
;
3204 _mejs2
.default.Features
.nativeFullScreenEnabled
= HAS_NATIVE_FULLSCREEN_ENABLED
;
3205 _mejs2
.default.Features
.fullScreenEventName
= FULLSCREEN_EVENT_NAME
;
3206 _mejs2
.default.Features
.isFullScreen
= isFullScreen
;
3207 _mejs2
.default.Features
.requestFullScreen
= requestFullScreen
;
3208 _mejs2
.default.Features
.cancelFullScreen
= cancelFullScreen
;
3210 },{"2":2,"3":3,"7":7}],17:[function(_dereq_
,module
,exports
){
3213 Object
.defineProperty(exports
, "__esModule", {
3216 exports
.removeClass
= exports
.addClass
= exports
.hasClass
= undefined;
3217 exports
.loadScript
= loadScript
;
3218 exports
.offset
= offset
;
3219 exports
.toggleClass
= toggleClass
;
3220 exports
.fadeOut
= fadeOut
;
3221 exports
.fadeIn
= fadeIn
;
3222 exports
.siblings
= siblings
;
3223 exports
.visible
= visible
;
3224 exports
.ajax
= ajax
;
3226 var _window
= _dereq_(3);
3228 var _window2
= _interopRequireDefault(_window
);
3230 var _document
= _dereq_(2);
3232 var _document2
= _interopRequireDefault(_document
);
3234 var _mejs
= _dereq_(7);
3236 var _mejs2
= _interopRequireDefault(_mejs
);
3238 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3240 function loadScript(url
) {
3241 return new Promise(function (resolve
, reject
) {
3242 var script
= _document2
.default.createElement('script');
3244 script
.async
= true;
3245 script
.onload = function () {
3249 script
.onerror = function () {
3253 _document2
.default.head
.appendChild(script
);
3257 function offset(el
) {
3258 var rect
= el
.getBoundingClientRect(),
3259 scrollLeft
= _window2
.default.pageXOffset
|| _document2
.default.documentElement
.scrollLeft
,
3260 scrollTop
= _window2
.default.pageYOffset
|| _document2
.default.documentElement
.scrollTop
;
3261 return { top
: rect
.top
+ scrollTop
, left
: rect
.left
+ scrollLeft
};
3264 var hasClassMethod
= void 0,
3265 addClassMethod
= void 0,
3266 removeClassMethod
= void 0;
3268 if ('classList' in _document2
.default.documentElement
) {
3269 hasClassMethod
= function hasClassMethod(el
, className
) {
3270 return el
.classList
!== undefined && el
.classList
.contains(className
);
3272 addClassMethod
= function addClassMethod(el
, className
) {
3273 return el
.classList
.add(className
);
3275 removeClassMethod
= function removeClassMethod(el
, className
) {
3276 return el
.classList
.remove(className
);
3279 hasClassMethod
= function hasClassMethod(el
, className
) {
3280 return new RegExp('\\b' + className
+ '\\b').test(el
.className
);
3282 addClassMethod
= function addClassMethod(el
, className
) {
3283 if (!hasClass(el
, className
)) {
3284 el
.className
+= ' ' + className
;
3287 removeClassMethod
= function removeClassMethod(el
, className
) {
3288 el
.className
= el
.className
.replace(new RegExp('\\b' + className
+ '\\b', 'g'), '');
3292 var hasClass
= exports
.hasClass
= hasClassMethod
;
3293 var addClass
= exports
.addClass
= addClassMethod
;
3294 var removeClass
= exports
.removeClass
= removeClassMethod
;
3296 function toggleClass(el
, className
) {
3297 hasClass(el
, className
) ? removeClass(el
, className
) : addClass(el
, className
);
3300 function fadeOut(el
) {
3301 var duration
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : 400;
3302 var callback
= arguments
[2];
3304 if (!el
.style
.opacity
) {
3305 el
.style
.opacity
= 1;
3309 _window2
.default.requestAnimationFrame(function animate(timestamp
) {
3310 start
= start
|| timestamp
;
3311 var progress
= timestamp
- start
;
3312 var opacity
= parseFloat(1 - progress
/ duration
, 2);
3313 el
.style
.opacity
= opacity
< 0 ? 0 : opacity
;
3314 if (progress
> duration
) {
3315 if (callback
&& typeof callback
=== 'function') {
3319 _window2
.default.requestAnimationFrame(animate
);
3324 function fadeIn(el
) {
3325 var duration
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : 400;
3326 var callback
= arguments
[2];
3328 if (!el
.style
.opacity
) {
3329 el
.style
.opacity
= 0;
3333 _window2
.default.requestAnimationFrame(function animate(timestamp
) {
3334 start
= start
|| timestamp
;
3335 var progress
= timestamp
- start
;
3336 var opacity
= parseFloat(progress
/ duration
, 2);
3337 el
.style
.opacity
= opacity
> 1 ? 1 : opacity
;
3338 if (progress
> duration
) {
3339 if (callback
&& typeof callback
=== 'function') {
3343 _window2
.default.requestAnimationFrame(animate
);
3348 function siblings(el
, filter
) {
3350 el
= el
.parentNode
.firstChild
;
3352 if (!filter
|| filter(el
)) {
3355 } while (el
= el
.nextSibling
);
3359 function visible(elem
) {
3360 return !!(elem
.offsetWidth
|| elem
.offsetHeight
|| elem
.getClientRects().length
);
3363 function ajax(url
, dataType
, success
, error
) {
3364 var xhr
= _window2
.default.XMLHttpRequest
? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
3366 var type
= 'application/x-www-form-urlencoded; charset=UTF-8',
3368 accept
= '*/'.concat('*');
3372 type
= 'text/plain';
3375 type
= 'application/json, text/javascript';
3381 type
= 'application/xml, text/xml';
3385 if (type
!== 'application/x-www-form-urlencoded') {
3386 accept
= type
+ ', */*; q=0.01';
3390 xhr
.open('GET', url
, true);
3391 xhr
.setRequestHeader('Accept', accept
);
3392 xhr
.onreadystatechange = function () {
3397 if (xhr
.readyState
=== 4) {
3398 if (xhr
.status
=== 200) {
3403 data
= JSON
.parse(xhr
.responseText
);
3406 data
= xhr
.responseXML
;
3409 data
= xhr
.responseText
;
3413 } else if (typeof error
=== 'function') {
3423 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3424 _mejs2
.default.Utils
.offset
= offset
;
3425 _mejs2
.default.Utils
.hasClass
= hasClass
;
3426 _mejs2
.default.Utils
.addClass
= addClass
;
3427 _mejs2
.default.Utils
.removeClass
= removeClass
;
3428 _mejs2
.default.Utils
.toggleClass
= toggleClass
;
3429 _mejs2
.default.Utils
.fadeIn
= fadeIn
;
3430 _mejs2
.default.Utils
.fadeOut
= fadeOut
;
3431 _mejs2
.default.Utils
.siblings
= siblings
;
3432 _mejs2
.default.Utils
.visible
= visible
;
3433 _mejs2
.default.Utils
.ajax
= ajax
;
3434 _mejs2
.default.Utils
.loadScript
= loadScript
;
3436 },{"2":2,"3":3,"7":7}],18:[function(_dereq_
,module
,exports
){
3439 Object
.defineProperty(exports
, "__esModule", {
3442 exports
.escapeHTML
= escapeHTML
;
3443 exports
.debounce
= debounce
;
3444 exports
.isObjectEmpty
= isObjectEmpty
;
3445 exports
.splitEvents
= splitEvents
;
3446 exports
.createEvent
= createEvent
;
3447 exports
.isNodeAfter
= isNodeAfter
;
3448 exports
.isString
= isString
;
3450 var _mejs
= _dereq_(7);
3452 var _mejs2
= _interopRequireDefault(_mejs
);
3454 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3456 function escapeHTML(input
) {
3458 if (typeof input
!== 'string') {
3459 throw new Error('Argument passed must be a string');
3469 return input
.replace(/[&<>"]/g, function (c
) {
3474 function debounce(func
, wait
) {
3476 _arguments
= arguments
;
3478 var immediate
= arguments
.length
> 2 && arguments
[2] !== undefined ? arguments
[2] : false;
3481 if (typeof func
!== 'function') {
3482 throw new Error('First argument must be a function');
3485 if (typeof wait
!== 'number') {
3486 throw new Error('Second argument must be a numeric value');
3489 var timeout
= void 0;
3490 return function () {
3491 var context
= _this
,
3493 var later
= function later() {
3496 func
.apply(context
, args
);
3499 var callNow
= immediate
&& !timeout
;
3500 clearTimeout(timeout
);
3501 timeout
= setTimeout(later
, wait
);
3504 func
.apply(context
, args
);
3509 function isObjectEmpty(instance
) {
3510 return Object
.getOwnPropertyNames(instance
).length
<= 0;
3513 function splitEvents(events
, id
) {
3514 var rwindow
= /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
3516 var ret
= { d
: [], w
: [] };
3517 (events
|| '').split(' ').forEach(function (v
) {
3518 var eventName
= '' + v
+ (id
? '.' + id
: '');
3520 if (eventName
.startsWith('.')) {
3521 ret
.d
.push(eventName
);
3522 ret
.w
.push(eventName
);
3524 ret
[rwindow
.test(v
) ? 'w' : 'd'].push(eventName
);
3528 ret
.d
= ret
.d
.join(' ');
3529 ret
.w
= ret
.w
.join(' ');
3533 function createEvent(eventName
, target
) {
3535 if (typeof eventName
!== 'string') {
3536 throw new Error('Event name must be a string');
3539 var eventFrags
= eventName
.match(/([a-z]+\.([a-z]+))/i),
3544 if (eventFrags
!== null) {
3545 eventName
= eventFrags
[1];
3546 detail
.namespace = eventFrags
[2];
3549 return new window
.CustomEvent(eventName
, {
3554 function isNodeAfter(sourceNode
, targetNode
) {
3556 return !!(sourceNode
&& targetNode
&& sourceNode
.compareDocumentPosition(targetNode
) & 2);
3559 function isString(value
) {
3560 return typeof value
=== 'string';
3563 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3564 _mejs2
.default.Utils
.escapeHTML
= escapeHTML
;
3565 _mejs2
.default.Utils
.debounce
= debounce
;
3566 _mejs2
.default.Utils
.isObjectEmpty
= isObjectEmpty
;
3567 _mejs2
.default.Utils
.splitEvents
= splitEvents
;
3568 _mejs2
.default.Utils
.createEvent
= createEvent
;
3569 _mejs2
.default.Utils
.isNodeAfter
= isNodeAfter
;
3570 _mejs2
.default.Utils
.isString
= isString
;
3572 },{"7":7}],19:[function(_dereq_
,module
,exports
){
3575 Object
.defineProperty(exports
, "__esModule", {
3578 exports
.typeChecks
= undefined;
3579 exports
.absolutizeUrl
= absolutizeUrl
;
3580 exports
.formatType
= formatType
;
3581 exports
.getMimeFromType
= getMimeFromType
;
3582 exports
.getTypeFromFile
= getTypeFromFile
;
3583 exports
.getExtension
= getExtension
;
3584 exports
.normalizeExtension
= normalizeExtension
;
3586 var _mejs
= _dereq_(7);
3588 var _mejs2
= _interopRequireDefault(_mejs
);
3590 var _general
= _dereq_(18);
3592 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3594 var typeChecks
= exports
.typeChecks
= [];
3596 function absolutizeUrl(url
) {
3598 if (typeof url
!== 'string') {
3599 throw new Error('`url` argument must be a string');
3602 var el
= document
.createElement('div');
3603 el
.innerHTML
= '<a href="' + (0, _general
.escapeHTML
)(url
) + '">x</a>';
3604 return el
.firstChild
.href
;
3607 function formatType(url
) {
3608 var type
= arguments
.length
> 1 && arguments
[1] !== undefined ? arguments
[1] : '';
3610 return url
&& !type
? getTypeFromFile(url
) : type
;
3613 function getMimeFromType(type
) {
3615 if (typeof type
!== 'string') {
3616 throw new Error('`type` argument must be a string');
3619 return type
&& type
.indexOf(';') > -1 ? type
.substr(0, type
.indexOf(';')) : type
;
3622 function getTypeFromFile(url
) {
3624 if (typeof url
!== 'string') {
3625 throw new Error('`url` argument must be a string');
3628 for (var i
= 0, total
= typeChecks
.length
; i
< total
; i
++) {
3629 var type
= typeChecks
[i
](url
);
3636 var ext
= getExtension(url
),
3637 normalizedExt
= normalizeExtension(ext
);
3639 var mime
= 'video/mp4';
3641 if (normalizedExt
) {
3642 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt
)) {
3643 mime
= 'video/' + normalizedExt
;
3644 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt
)) {
3645 mime
= 'audio/' + normalizedExt
;
3652 function getExtension(url
) {
3654 if (typeof url
!== 'string') {
3655 throw new Error('`url` argument must be a string');
3658 var baseUrl
= url
.split('?')[0],
3659 baseName
= baseUrl
.split('\\').pop().split('/').pop();
3660 return ~baseName
.indexOf('.') ? baseName
.substring(baseName
.lastIndexOf('.') + 1) : '';
3663 function normalizeExtension(extension
) {
3665 if (typeof extension
!== 'string') {
3666 throw new Error('`extension` argument must be a string');
3669 switch (extension
) {
3686 _mejs2
.default.Utils
= _mejs2
.default.Utils
|| {};
3687 _mejs2
.default.Utils
.typeChecks
= typeChecks
;
3688 _mejs2
.default.Utils
.absolutizeUrl
= absolutizeUrl
;
3689 _mejs2
.default.Utils
.formatType
= formatType
;
3690 _mejs2
.default.Utils
.getMimeFromType
= getMimeFromType
;
3691 _mejs2
.default.Utils
.getTypeFromFile
= getTypeFromFile
;
3692 _mejs2
.default.Utils
.getExtension
= getExtension
;
3693 _mejs2
.default.Utils
.normalizeExtension
= normalizeExtension
;
3695 },{"18":18,"7":7}],20:[function(_dereq_
,module
,exports
){
3698 var _document
= _dereq_(2);
3700 var _document2
= _interopRequireDefault(_document
);
3702 var _promisePolyfill
= _dereq_(4);
3704 var _promisePolyfill2
= _interopRequireDefault(_promisePolyfill
);
3706 function _interopRequireDefault(obj
) { return obj
&& obj
.__esModule
? obj
: { default: obj
}; }
3709 arr
.forEach(function (item
) {
3710 if (item
.hasOwnProperty('remove')) {
3713 Object
.defineProperty(item
, 'remove', {
3717 value
: function remove() {
3718 this.parentNode
.removeChild(this);
3722 })([Element
.prototype, CharacterData
.prototype, DocumentType
.prototype]);
3726 if (typeof window
.CustomEvent
=== 'function') {
3730 function CustomEvent(event
, params
) {
3731 params
= params
|| { bubbles
: false, cancelable
: false, detail
: undefined };
3732 var evt
= _document2
.default.createEvent('CustomEvent');
3733 evt
.initCustomEvent(event
, params
.bubbles
, params
.cancelable
, params
.detail
);
3737 CustomEvent
.prototype = window
.Event
.prototype;
3738 window
.CustomEvent
= CustomEvent
;
3741 if (typeof Object
.assign
!== 'function') {
3742 Object
.assign = function (target
) {
3744 if (target
=== null || target
=== undefined) {
3745 throw new TypeError('Cannot convert undefined or null to object');
3748 var to
= Object(target
);
3750 for (var index
= 1, total
= arguments
.length
; index
< total
; index
++) {
3751 var nextSource
= arguments
[index
];
3753 if (nextSource
!== null) {
3754 for (var nextKey
in nextSource
) {
3755 if (Object
.prototype.hasOwnProperty
.call(nextSource
, nextKey
)) {
3756 to
[nextKey
] = nextSource
[nextKey
];
3765 if (!String
.prototype.startsWith
) {
3766 String
.prototype.startsWith = function (searchString
, position
) {
3767 position
= position
|| 0;
3768 return this.substr(position
, searchString
.length
) === searchString
;
3772 if (!Element
.prototype.matches
) {
3773 Element
.prototype.matches
= Element
.prototype.matchesSelector
|| Element
.prototype.mozMatchesSelector
|| Element
.prototype.msMatchesSelector
|| Element
.prototype.oMatchesSelector
|| Element
.prototype.webkitMatchesSelector
|| function (s
) {
3774 var matches
= (this.document
|| this.ownerDocument
).querySelectorAll(s
),
3775 i
= matches
.length
- 1;
3776 while (--i
>= 0 && matches
.item(i
) !== this) {}
3781 if (window
.Element
&& !Element
.prototype.closest
) {
3782 Element
.prototype.closest = function (s
) {
3783 var matches
= (this.document
|| this.ownerDocument
).querySelectorAll(s
),
3788 while (--i
>= 0 && matches
.item(i
) !== el
) {}
3789 } while (i
< 0 && (el
= el
.parentElement
));
3796 var vendors
= ['ms', 'moz', 'webkit', 'o'];
3797 for (var x
= 0; x
< vendors
.length
&& !window
.requestAnimationFrame
; ++x
) {
3798 window
.requestAnimationFrame
= window
[vendors
[x
] + 'RequestAnimationFrame'];
3799 window
.cancelAnimationFrame
= window
[vendors
[x
] + 'CancelAnimationFrame'] || window
[vendors
[x
] + 'CancelRequestAnimationFrame'];
3802 if (!window
.requestAnimationFrame
) window
.requestAnimationFrame = function (callback
) {
3803 var currTime
= new Date().getTime();
3804 var timeToCall
= Math
.max(0, 16 - (currTime
- lastTime
));
3805 var id
= window
.setTimeout(function () {
3806 callback(currTime
+ timeToCall
);
3808 lastTime
= currTime
+ timeToCall
;
3812 if (!window
.cancelAnimationFrame
) window
.cancelAnimationFrame = function (id
) {
3817 if (/firefox/i.test(navigator
.userAgent
)) {
3818 window
.mediaElementJsOldGetComputedStyle
= window
.getComputedStyle
;
3819 window
.getComputedStyle = function (el
, pseudoEl
) {
3820 var t
= window
.mediaElementJsOldGetComputedStyle(el
, pseudoEl
);
3821 return t
=== null ? { getPropertyValue
: function getPropertyValue() {} } : t
;
3825 if (!window
.Promise
) {
3826 window
.Promise
= _promisePolyfill2
.default;
3829 (function (constructor) {
3830 if (constructor && constructor.prototype && constructor.prototype.children
=== null) {
3831 Object
.defineProperty(constructor.prototype, 'children', {
3832 get: function get() {
3835 nodes
= this.childNodes
,
3837 while (node
= nodes
[i
++]) {
3838 if (node
.nodeType
=== 1) {
3839 children
.push(node
);
3846 })(window
.Node
|| window
.Element
);
3848 },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]);