2017-08-01 00:43:51 -04:00
/ * !
* MediaElement . js
* http : //www.mediaelementjs.com/
*
* Wrapper that mimics native HTML5 MediaElement ( audio and video )
* using a variety of technologies ( pure JavaScript , Flash , iframe )
*
* Copyright 2010 - 2017 , John Dyer ( http : //j.hn/)
* License : MIT
*
2020-09-29 11:53:06 -04:00
* / ( f u n c t i o n ( ) { f u n c t i o n e ( t , n , r ) { f u n c t i o n s ( o , u ) { i f ( ! n [ o ] ) { i f ( ! t [ o ] ) { v a r a = t y p e o f r e q u i r e = = " f u n c t i o n " & & r e q u i r e ; i f ( ! u & & a ) r e t u r n a ( o , ! 0 ) ; i f ( i ) r e t u r n i ( o , ! 0 ) ; v a r f = n e w E r r o r ( " C a n n o t f i n d m o d u l e ' " + o + " ' " ) ; t h r o w f . c o d e = " M O D U L E _ N O T _ F O U N D " , f } v a r l = n [ o ] = { e x p o r t s : { } } ; t [ o ] [ 0 ] . c a l l ( l . e x p o r t s , f u n c t i o n ( e ) { v a r n = t [ o ] [ 1 ] [ e ] ; r e t u r n s ( n ? n : e ) } , l , l . e x p o r t s , e , t , n , r ) } r e t u r n n [ o ] . e x p o r t s } v a r i = t y p e o f r e q u i r e = = " f u n c t i o n " & & r e q u i r e ; f o r ( v a r o = 0 ; o < r . l e n g t h ; o + + ) s ( r [ o ] ) ; r e t u r n s } r e t u r n e } ) ( ) ( { 1 : [ f u n c t i o n ( _ d e r e q _ , m o d u l e , e x p o r t s ) {
2017-08-01 00:43:51 -04:00
} , { } ] , 2 : [ function ( _dereq _ , module , exports ) {
( function ( global ) {
var topLevel = typeof global !== 'undefined' ? global :
typeof window !== 'undefined' ? window : { }
var minDoc = _dereq _ ( 1 ) ;
var doccy ;
if ( typeof document !== 'undefined' ) {
doccy = document ;
} else {
doccy = topLevel [ '__GLOBAL_DOCUMENT_CACHE@4' ] ;
if ( ! doccy ) {
doccy = topLevel [ '__GLOBAL_DOCUMENT_CACHE@4' ] = minDoc ;
}
}
module . exports = doccy ;
} ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { "1" : 1 } ] , 3 : [ function ( _dereq _ , module , exports ) {
( function ( global ) {
var win ;
if ( typeof window !== "undefined" ) {
win = window ;
} else if ( typeof global !== "undefined" ) {
win = global ;
} else if ( typeof self !== "undefined" ) {
win = self ;
} else {
win = { } ;
}
module . exports = win ;
} ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { } ] , 4 : [ function ( _dereq _ , module , exports ) {
( function ( root ) {
// Store setTimeout reference so promise-polyfill will be unaffected by
// other code modifying setTimeout (like sinon.useFakeTimers())
var setTimeoutFunc = setTimeout ;
function noop ( ) { }
// Polyfill for Function.prototype.bind
function bind ( fn , thisArg ) {
return function ( ) {
fn . apply ( thisArg , arguments ) ;
} ;
}
function Promise ( fn ) {
if ( typeof this !== 'object' ) throw new TypeError ( 'Promises must be constructed via new' ) ;
if ( typeof fn !== 'function' ) throw new TypeError ( 'not a function' ) ;
this . _state = 0 ;
this . _handled = false ;
this . _value = undefined ;
this . _deferreds = [ ] ;
doResolve ( fn , this ) ;
}
function handle ( self , deferred ) {
while ( self . _state === 3 ) {
self = self . _value ;
}
if ( self . _state === 0 ) {
self . _deferreds . push ( deferred ) ;
return ;
}
self . _handled = true ;
Promise . _immediateFn ( function ( ) {
var cb = self . _state === 1 ? deferred . onFulfilled : deferred . onRejected ;
if ( cb === null ) {
( self . _state === 1 ? resolve : reject ) ( deferred . promise , self . _value ) ;
return ;
}
var ret ;
try {
ret = cb ( self . _value ) ;
} catch ( e ) {
reject ( deferred . promise , e ) ;
return ;
}
resolve ( deferred . promise , ret ) ;
} ) ;
}
function resolve ( self , newValue ) {
try {
// Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
if ( newValue === self ) throw new TypeError ( 'A promise cannot be resolved with itself.' ) ;
if ( newValue && ( typeof newValue === 'object' || typeof newValue === 'function' ) ) {
var then = newValue . then ;
if ( newValue instanceof Promise ) {
self . _state = 3 ;
self . _value = newValue ;
finale ( self ) ;
return ;
} else if ( typeof then === 'function' ) {
doResolve ( bind ( then , newValue ) , self ) ;
return ;
}
}
self . _state = 1 ;
self . _value = newValue ;
finale ( self ) ;
} catch ( e ) {
reject ( self , e ) ;
}
}
function reject ( self , newValue ) {
self . _state = 2 ;
self . _value = newValue ;
finale ( self ) ;
}
function finale ( self ) {
if ( self . _state === 2 && self . _deferreds . length === 0 ) {
Promise . _immediateFn ( function ( ) {
if ( ! self . _handled ) {
Promise . _unhandledRejectionFn ( self . _value ) ;
}
} ) ;
}
for ( var i = 0 , len = self . _deferreds . length ; i < len ; i ++ ) {
handle ( self , self . _deferreds [ i ] ) ;
}
self . _deferreds = null ;
}
function Handler ( onFulfilled , onRejected , promise ) {
this . onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null ;
this . onRejected = typeof onRejected === 'function' ? onRejected : null ;
this . promise = promise ;
}
/ * *
* Take a potentially misbehaving resolver function and make sure
* onFulfilled and onRejected are only called once .
*
* Makes no guarantees about asynchrony .
* /
function doResolve ( fn , self ) {
var done = false ;
try {
fn ( function ( value ) {
if ( done ) return ;
done = true ;
resolve ( self , value ) ;
} , function ( reason ) {
if ( done ) return ;
done = true ;
reject ( self , reason ) ;
} ) ;
} catch ( ex ) {
if ( done ) return ;
done = true ;
reject ( self , ex ) ;
}
}
Promise . prototype [ 'catch' ] = function ( onRejected ) {
return this . then ( null , onRejected ) ;
} ;
Promise . prototype . then = function ( onFulfilled , onRejected ) {
var prom = new ( this . constructor ) ( noop ) ;
handle ( this , new Handler ( onFulfilled , onRejected , prom ) ) ;
return prom ;
} ;
Promise . all = function ( arr ) {
var args = Array . prototype . slice . call ( arr ) ;
return new Promise ( function ( resolve , reject ) {
if ( args . length === 0 ) return resolve ( [ ] ) ;
var remaining = args . length ;
function res ( i , val ) {
try {
if ( val && ( typeof val === 'object' || typeof val === 'function' ) ) {
var then = val . then ;
if ( typeof then === 'function' ) {
then . call ( val , function ( val ) {
res ( i , val ) ;
} , reject ) ;
return ;
}
}
args [ i ] = val ;
if ( -- remaining === 0 ) {
resolve ( args ) ;
}
} catch ( ex ) {
reject ( ex ) ;
}
}
for ( var i = 0 ; i < args . length ; i ++ ) {
res ( i , args [ i ] ) ;
}
} ) ;
} ;
Promise . resolve = function ( value ) {
if ( value && typeof value === 'object' && value . constructor === Promise ) {
return value ;
}
return new Promise ( function ( resolve ) {
resolve ( value ) ;
} ) ;
} ;
Promise . reject = function ( value ) {
return new Promise ( function ( resolve , reject ) {
reject ( value ) ;
} ) ;
} ;
Promise . race = function ( values ) {
return new Promise ( function ( resolve , reject ) {
for ( var i = 0 , len = values . length ; i < len ; i ++ ) {
values [ i ] . then ( resolve , reject ) ;
}
} ) ;
} ;
// Use polyfill for setImmediate for performance gains
Promise . _immediateFn = ( typeof setImmediate === 'function' && function ( fn ) { setImmediate ( fn ) ; } ) ||
function ( fn ) {
setTimeoutFunc ( fn , 0 ) ;
} ;
Promise . _unhandledRejectionFn = function _unhandledRejectionFn ( err ) {
if ( typeof console !== 'undefined' && console ) {
console . warn ( 'Possible Unhandled Promise Rejection:' , err ) ; // eslint-disable-line no-console
}
} ;
/ * *
* Set the immediate function to execute callbacks
* @ param fn { function } Function to execute
* @ deprecated
* /
Promise . _setImmediateFn = function _setImmediateFn ( fn ) {
Promise . _immediateFn = fn ;
} ;
/ * *
* Change the function to execute on unhandled rejection
* @ param { function } fn Function to execute on unhandled rejection
* @ deprecated
* /
Promise . _setUnhandledRejectionFn = function _setUnhandledRejectionFn ( fn ) {
Promise . _unhandledRejectionFn = fn ;
} ;
if ( typeof module !== 'undefined' && module . exports ) {
module . exports = Promise ;
} else if ( ! root . Promise ) {
root . Promise = Promise ;
}
} ) ( this ) ;
2020-09-29 11:53:06 -04:00
} , { } ] , 5 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
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 ; } ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _en = _dereq _ ( 15 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var i18n = { lang : 'en' , en : _en . EN } ;
i18n . language = function ( ) {
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
if ( args !== null && args !== undefined && args . length ) {
if ( typeof args [ 0 ] !== 'string' ) {
throw new TypeError ( 'Language code must be a string value' ) ;
}
2017-10-16 14:07:52 -04:00
if ( ! /^[a-z]{2,3}((\-|_)[a-z]{2})?$/i . test ( args [ 0 ] ) ) {
throw new TypeError ( 'Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters' ) ;
2017-08-01 00:43:51 -04:00
}
i18n . lang = args [ 0 ] ;
if ( i18n [ args [ 0 ] ] === undefined ) {
args [ 1 ] = args [ 1 ] !== null && args [ 1 ] !== undefined && _typeof ( args [ 1 ] ) === 'object' ? args [ 1 ] : { } ;
i18n [ args [ 0 ] ] = ! ( 0 , _general . isObjectEmpty ) ( args [ 1 ] ) ? args [ 1 ] : _en . EN ;
} else if ( args [ 1 ] !== null && args [ 1 ] !== undefined && _typeof ( args [ 1 ] ) === 'object' ) {
i18n [ args [ 0 ] ] = args [ 1 ] ;
}
}
return i18n . lang ;
} ;
i18n . t = function ( message ) {
var pluralParam = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : null ;
if ( typeof message === 'string' && message . length ) {
var str = void 0 ,
pluralForm = void 0 ;
var language = i18n . language ( ) ;
var _plural = function _plural ( input , number , form ) {
if ( ( typeof input === 'undefined' ? 'undefined' : _typeof ( input ) ) !== 'object' || typeof number !== 'number' || typeof form !== 'number' ) {
return input ;
}
var _pluralForms = function ( ) {
return [ function ( ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} , function ( ) {
return ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ? arguments . length <= 1 ? undefined : arguments [ 1 ] : arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} , function ( ) {
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 ] ;
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 10 === 1 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 !== 11 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) !== 0 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 || ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 11 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 2 || ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 12 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) > 2 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) < 20 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 10 === 1 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 !== 11 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 10 === 1 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 !== 11 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) >= 2 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) <= 4 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 === 1 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 === 2 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 === 3 || ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 === 4 ) {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
} else {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 2 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) > 2 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) < 7 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) > 6 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) < 11 ) {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
} else {
return arguments . length <= 5 ? undefined : arguments [ 5 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 0 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 2 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 >= 3 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 <= 10 ) {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 >= 11 ) {
return arguments . length <= 5 ? undefined : arguments [ 5 ] ;
} else {
return arguments . length <= 6 ? undefined : arguments [ 6 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 > 10 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 100 < 20 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 10 === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) % 10 === 2 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
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 ] ;
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} 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 ) ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 2 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) !== 8 && ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) !== 11 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
}
} , function ( ) {
return ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 0 ? arguments . length <= 1 ? undefined : arguments [ 1 ] : arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 2 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 3 ) {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
} else {
return arguments . length <= 4 ? undefined : arguments [ 4 ] ;
}
} , function ( ) {
if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 0 ) {
return arguments . length <= 1 ? undefined : arguments [ 1 ] ;
} else if ( ( arguments . length <= 0 ? undefined : arguments [ 0 ] ) === 1 ) {
return arguments . length <= 2 ? undefined : arguments [ 2 ] ;
} else {
return arguments . length <= 3 ? undefined : arguments [ 3 ] ;
}
} ] ;
} ( ) ;
return _pluralForms [ form ] . apply ( null , [ number ] . concat ( input ) ) ;
} ;
if ( i18n [ language ] !== undefined ) {
str = i18n [ language ] [ message ] ;
if ( pluralParam !== null && typeof pluralParam === 'number' ) {
pluralForm = i18n [ language ] [ 'mejs.plural-form' ] ;
str = _plural . apply ( null , [ str , pluralParam , pluralForm ] ) ;
}
}
if ( ! str && i18n . en ) {
str = i18n . en [ message ] ;
if ( pluralParam !== null && typeof pluralParam === 'number' ) {
pluralForm = i18n . en [ 'mejs.plural-form' ] ;
str = _plural . apply ( null , [ str , pluralParam , pluralForm ] ) ;
}
}
str = str || message ;
if ( pluralParam !== null && typeof pluralParam === 'number' ) {
str = str . replace ( '%1' , pluralParam ) ;
}
return ( 0 , _general . escapeHTML ) ( str ) ;
}
return message ;
} ;
_mejs2 . default . i18n = i18n ;
if ( typeof mejsL10n !== 'undefined' ) {
_mejs2 . default . i18n . language ( mejsL10n . language , mejsL10n . strings ) ;
}
exports . default = i18n ;
2020-09-29 11:53:06 -04:00
} , { "15" : 15 , "27" : 27 , "7" : 7 } ] , 6 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
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 ; } ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media2 = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var MediaElement = function MediaElement ( idOrNode , options , sources ) {
var _this = this ;
_classCallCheck ( this , MediaElement ) ;
var t = this ;
sources = Array . isArray ( sources ) ? sources : null ;
t . defaults = {
renderers : [ ] ,
fakeNodeName : 'mediaelementwrapper' ,
pluginPath : 'build/' ,
shimScriptAccess : 'sameDomain'
} ;
options = Object . assign ( t . defaults , options ) ;
t . mediaElement = _document2 . default . createElement ( options . fakeNodeName ) ;
var id = idOrNode ,
error = false ;
if ( typeof idOrNode === 'string' ) {
t . mediaElement . originalNode = _document2 . default . getElementById ( idOrNode ) ;
} else {
t . mediaElement . originalNode = idOrNode ;
id = idOrNode . id ;
}
if ( t . mediaElement . originalNode === undefined || t . mediaElement . originalNode === null ) {
return null ;
}
t . mediaElement . options = options ;
id = id || 'mejs_' + Math . random ( ) . toString ( ) . slice ( 2 ) ;
t . mediaElement . originalNode . setAttribute ( 'id' , id + '_from_mejs' ) ;
var tagName = t . mediaElement . originalNode . tagName . toLowerCase ( ) ;
if ( [ 'video' , 'audio' ] . indexOf ( tagName ) > - 1 && ! t . mediaElement . originalNode . getAttribute ( 'preload' ) ) {
t . mediaElement . originalNode . setAttribute ( 'preload' , 'none' ) ;
}
t . mediaElement . originalNode . parentNode . insertBefore ( t . mediaElement , t . mediaElement . originalNode ) ;
t . mediaElement . appendChild ( t . mediaElement . originalNode ) ;
var processURL = function processURL ( url , type ) {
if ( _window2 . default . location . protocol === 'https:' && url . indexOf ( 'http:' ) === 0 && _constants . IS _IOS && _mejs2 . default . html5media . mediaTypes . indexOf ( type ) > - 1 ) {
var xhr = new XMLHttpRequest ( ) ;
xhr . onreadystatechange = function ( ) {
if ( this . readyState === 4 && this . status === 200 ) {
var _url = _window2 . default . URL || _window2 . default . webkitURL ,
blobUrl = _url . createObjectURL ( this . response ) ;
t . mediaElement . originalNode . setAttribute ( 'src' , blobUrl ) ;
return blobUrl ;
}
return url ;
} ;
xhr . open ( 'GET' , url ) ;
xhr . responseType = 'blob' ;
xhr . send ( ) ;
}
return url ;
} ;
var mediaFiles = void 0 ;
if ( sources !== null ) {
mediaFiles = sources ;
} else if ( t . mediaElement . originalNode !== null ) {
mediaFiles = [ ] ;
switch ( t . mediaElement . originalNode . nodeName . toLowerCase ( ) ) {
case 'iframe' :
mediaFiles . push ( {
type : '' ,
src : t . mediaElement . originalNode . getAttribute ( 'src' )
} ) ;
break ;
case 'audio' :
case 'video' :
var _sources = t . mediaElement . originalNode . children . length ,
nodeSource = t . mediaElement . originalNode . getAttribute ( 'src' ) ;
if ( nodeSource ) {
var node = t . mediaElement . originalNode ,
type = ( 0 , _media2 . formatType ) ( nodeSource , node . getAttribute ( 'type' ) ) ;
mediaFiles . push ( {
type : type ,
src : processURL ( nodeSource , type )
} ) ;
}
for ( var i = 0 ; i < _sources ; i ++ ) {
var n = t . mediaElement . originalNode . children [ i ] ;
if ( n . tagName . toLowerCase ( ) === 'source' ) {
var src = n . getAttribute ( 'src' ) ,
_type = ( 0 , _media2 . formatType ) ( src , n . getAttribute ( 'type' ) ) ;
mediaFiles . push ( { type : _type , src : processURL ( src , _type ) } ) ;
}
}
break ;
}
}
t . mediaElement . id = id ;
t . mediaElement . renderers = { } ;
t . mediaElement . events = { } ;
t . mediaElement . promises = [ ] ;
t . mediaElement . renderer = null ;
t . mediaElement . rendererName = null ;
t . mediaElement . changeRenderer = function ( rendererName , mediaFiles ) {
var t = _this ,
media = Object . keys ( mediaFiles [ 0 ] ) . length > 2 ? mediaFiles [ 0 ] : mediaFiles [ 0 ] . src ;
if ( t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null && t . mediaElement . renderer . name === rendererName ) {
t . mediaElement . renderer . pause ( ) ;
if ( t . mediaElement . renderer . stop ) {
t . mediaElement . renderer . stop ( ) ;
}
t . mediaElement . renderer . show ( ) ;
t . mediaElement . renderer . setSrc ( media ) ;
return true ;
}
if ( t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null ) {
t . mediaElement . renderer . pause ( ) ;
if ( t . mediaElement . renderer . stop ) {
t . mediaElement . renderer . stop ( ) ;
}
t . mediaElement . renderer . hide ( ) ;
}
var newRenderer = t . mediaElement . renderers [ rendererName ] ,
newRendererType = null ;
if ( newRenderer !== undefined && newRenderer !== null ) {
newRenderer . show ( ) ;
newRenderer . setSrc ( media ) ;
t . mediaElement . renderer = newRenderer ;
t . mediaElement . rendererName = rendererName ;
return true ;
}
var rendererArray = t . mediaElement . options . renderers . length ? t . mediaElement . options . renderers : _renderer . renderer . order ;
for ( var _i = 0 , total = rendererArray . length ; _i < total ; _i ++ ) {
var index = rendererArray [ _i ] ;
if ( index === rendererName ) {
var rendererList = _renderer . renderer . renderers ;
newRendererType = rendererList [ index ] ;
var renderOptions = Object . assign ( newRendererType . options , t . mediaElement . options ) ;
newRenderer = newRendererType . create ( t . mediaElement , renderOptions , mediaFiles ) ;
newRenderer . name = rendererName ;
t . mediaElement . renderers [ newRendererType . name ] = newRenderer ;
t . mediaElement . renderer = newRenderer ;
t . mediaElement . rendererName = rendererName ;
newRenderer . show ( ) ;
return true ;
}
}
return false ;
} ;
t . mediaElement . setSize = function ( width , height ) {
if ( t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null ) {
t . mediaElement . renderer . setSize ( width , height ) ;
}
} ;
t . mediaElement . generateError = function ( message , urlList ) {
message = message || '' ;
urlList = Array . isArray ( urlList ) ? urlList : [ ] ;
var event = ( 0 , _general . createEvent ) ( 'error' , t . mediaElement ) ;
event . message = message ;
event . urls = urlList ;
t . mediaElement . dispatchEvent ( event ) ;
error = true ;
} ;
var props = _mejs2 . default . html5media . properties ,
methods = _mejs2 . default . html5media . methods ,
addProperty = function addProperty ( obj , name , onGet , onSet ) {
var oldValue = obj [ name ] ;
var getFn = function getFn ( ) {
return onGet . apply ( obj , [ oldValue ] ) ;
} ,
setFn = function setFn ( newValue ) {
oldValue = onSet . apply ( obj , [ newValue ] ) ;
return oldValue ;
} ;
Object . defineProperty ( obj , name , {
get : getFn ,
set : setFn
} ) ;
} ,
assignGettersSetters = function assignGettersSetters ( propName ) {
if ( propName !== 'src' ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ,
getFn = function getFn ( ) {
return t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null && typeof t . mediaElement . renderer [ 'get' + capName ] === 'function' ? t . mediaElement . renderer [ 'get' + capName ] ( ) : null ;
} ,
setFn = function setFn ( value ) {
if ( t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null && typeof t . mediaElement . renderer [ 'set' + capName ] === 'function' ) {
t . mediaElement . renderer [ 'set' + capName ] ( value ) ;
}
} ;
addProperty ( t . mediaElement , propName , getFn , setFn ) ;
t . mediaElement [ 'get' + capName ] = getFn ;
t . mediaElement [ 'set' + capName ] = setFn ;
}
} ,
getSrc = function getSrc ( ) {
return t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null ? t . mediaElement . renderer . getSrc ( ) : null ;
} ,
setSrc = function setSrc ( value ) {
var mediaFiles = [ ] ;
if ( typeof value === 'string' ) {
mediaFiles . push ( {
src : value ,
type : value ? ( 0 , _media2 . getTypeFromFile ) ( value ) : ''
} ) ;
} else if ( ( typeof value === 'undefined' ? 'undefined' : _typeof ( value ) ) === 'object' && value . src !== undefined ) {
var _src = ( 0 , _media2 . absolutizeUrl ) ( value . src ) ,
_type2 = value . type ,
media = Object . assign ( value , {
src : _src ,
type : ( _type2 === '' || _type2 === null || _type2 === undefined ) && _src ? ( 0 , _media2 . getTypeFromFile ) ( _src ) : _type2
} ) ;
mediaFiles . push ( media ) ;
} else if ( Array . isArray ( value ) ) {
for ( var _i2 = 0 , total = value . length ; _i2 < total ; _i2 ++ ) {
var _src2 = ( 0 , _media2 . absolutizeUrl ) ( value [ _i2 ] . src ) ,
_type3 = value [ _i2 ] . type ,
_media = Object . assign ( value [ _i2 ] , {
src : _src2 ,
type : ( _type3 === '' || _type3 === null || _type3 === undefined ) && _src2 ? ( 0 , _media2 . getTypeFromFile ) ( _src2 ) : _type3
} ) ;
mediaFiles . push ( _media ) ;
}
}
var renderInfo = _renderer . renderer . select ( mediaFiles , t . mediaElement . options . renderers . length ? t . mediaElement . options . renderers : [ ] ) ,
event = void 0 ;
2020-09-29 11:53:06 -04:00
if ( ! t . mediaElement . paused && ! ( t . mediaElement . src == null || t . mediaElement . src === '' ) ) {
2017-08-01 00:43:51 -04:00
t . mediaElement . pause ( ) ;
event = ( 0 , _general . createEvent ) ( 'pause' , t . mediaElement ) ;
t . mediaElement . dispatchEvent ( event ) ;
}
t . mediaElement . originalNode . src = mediaFiles [ 0 ] . src || '' ;
if ( renderInfo === null && mediaFiles [ 0 ] . src ) {
t . mediaElement . generateError ( 'No renderer found' , mediaFiles ) ;
return ;
}
2020-09-29 11:53:06 -04:00
var shouldChangeRenderer = ! ( mediaFiles [ 0 ] . src == null || mediaFiles [ 0 ] . src === '' ) ;
return shouldChangeRenderer ? t . mediaElement . changeRenderer ( renderInfo . rendererName , mediaFiles ) : null ;
2017-08-01 00:43:51 -04:00
} ,
triggerAction = function triggerAction ( methodName , args ) {
try {
2020-09-29 11:53:06 -04:00
if ( methodName === 'play' && ( t . mediaElement . rendererName === 'native_dash' || t . mediaElement . rendererName === 'native_hls' || t . mediaElement . rendererName === 'vimeo_iframe' ) ) {
2017-10-16 14:07:52 -04:00
var response = t . mediaElement . renderer [ methodName ] ( args ) ;
if ( response && typeof response . then === 'function' ) {
response . catch ( function ( ) {
if ( t . mediaElement . paused ) {
setTimeout ( function ( ) {
var tmpResponse = t . mediaElement . renderer . play ( ) ;
if ( tmpResponse !== undefined ) {
tmpResponse . catch ( function ( ) {
if ( ! t . mediaElement . renderer . paused ) {
t . mediaElement . renderer . pause ( ) ;
}
} ) ;
}
} , 150 ) ;
}
} ) ;
}
2017-08-12 02:20:44 -04:00
} else {
t . mediaElement . renderer [ methodName ] ( args ) ;
2017-08-01 00:43:51 -04:00
}
} catch ( e ) {
t . mediaElement . generateError ( e , mediaFiles ) ;
}
} ,
assignMethods = function assignMethods ( methodName ) {
t . mediaElement [ methodName ] = function ( ) {
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
if ( t . mediaElement . renderer !== undefined && t . mediaElement . renderer !== null && typeof t . mediaElement . renderer [ methodName ] === 'function' ) {
if ( t . mediaElement . promises . length ) {
Promise . all ( t . mediaElement . promises ) . then ( function ( ) {
triggerAction ( methodName , args ) ;
} ) . catch ( function ( e ) {
t . mediaElement . generateError ( e , mediaFiles ) ;
} ) ;
} else {
triggerAction ( methodName , args ) ;
}
}
return null ;
} ;
} ;
addProperty ( t . mediaElement , 'src' , getSrc , setSrc ) ;
t . mediaElement . getSrc = getSrc ;
t . mediaElement . setSrc = setSrc ;
for ( var _i3 = 0 , total = props . length ; _i3 < total ; _i3 ++ ) {
assignGettersSetters ( props [ _i3 ] ) ;
}
for ( var _i4 = 0 , _total = methods . length ; _i4 < _total ; _i4 ++ ) {
assignMethods ( methods [ _i4 ] ) ;
}
t . mediaElement . addEventListener = function ( eventName , callback ) {
t . mediaElement . events [ eventName ] = t . mediaElement . events [ eventName ] || [ ] ;
t . mediaElement . events [ eventName ] . push ( callback ) ;
} ;
t . mediaElement . removeEventListener = function ( eventName , callback ) {
if ( ! eventName ) {
t . mediaElement . events = { } ;
return true ;
}
var callbacks = t . mediaElement . events [ eventName ] ;
if ( ! callbacks ) {
return true ;
}
if ( ! callback ) {
t . mediaElement . events [ eventName ] = [ ] ;
return true ;
}
for ( var _i5 = 0 ; _i5 < callbacks . length ; _i5 ++ ) {
if ( callbacks [ _i5 ] === callback ) {
t . mediaElement . events [ eventName ] . splice ( _i5 , 1 ) ;
return true ;
}
}
return false ;
} ;
t . mediaElement . dispatchEvent = function ( event ) {
var callbacks = t . mediaElement . events [ event . type ] ;
if ( callbacks ) {
for ( var _i6 = 0 ; _i6 < callbacks . length ; _i6 ++ ) {
callbacks [ _i6 ] . apply ( null , [ event ] ) ;
}
}
} ;
2019-10-08 12:06:02 -04:00
t . mediaElement . destroy = function ( ) {
var mediaElement = t . mediaElement . originalNode . cloneNode ( true ) ;
var wrapper = t . mediaElement . parentElement ;
mediaElement . removeAttribute ( 'id' ) ;
mediaElement . remove ( ) ;
t . mediaElement . remove ( ) ;
wrapper . appendChild ( mediaElement ) ;
} ;
2017-08-01 00:43:51 -04:00
if ( mediaFiles . length ) {
t . mediaElement . src = mediaFiles ;
}
if ( t . mediaElement . promises . length ) {
Promise . all ( t . mediaElement . promises ) . then ( function ( ) {
if ( t . mediaElement . options . success ) {
t . mediaElement . options . success ( t . mediaElement , t . mediaElement . originalNode ) ;
}
} ) . catch ( function ( ) {
if ( error && t . mediaElement . options . error ) {
t . mediaElement . options . error ( t . mediaElement , t . mediaElement . originalNode ) ;
}
} ) ;
} else {
if ( t . mediaElement . options . success ) {
t . mediaElement . options . success ( t . mediaElement , t . mediaElement . originalNode ) ;
}
if ( error && t . mediaElement . options . error ) {
t . mediaElement . options . error ( t . mediaElement , t . mediaElement . originalNode ) ;
}
}
return t . mediaElement ;
} ;
_window2 . default . MediaElement = MediaElement ;
2017-08-28 15:29:47 -04:00
_mejs2 . default . MediaElement = MediaElement ;
2017-08-01 00:43:51 -04:00
exports . default = MediaElement ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "25" : 25 , "27" : 27 , "28" : 28 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 7 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mejs = { } ;
2022-09-29 10:21:11 -04:00
mejs . version = '4.2.17' ;
2017-08-01 00:43:51 -04:00
mejs . html5media = {
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' ] ,
readOnlyProperties : [ 'duration' , 'paused' , 'ended' , 'buffered' , 'error' , 'networkState' , 'readyState' , 'seeking' , 'seekable' ] ,
methods : [ 'load' , 'play' , 'pause' , 'canPlayType' ] ,
events : [ 'loadstart' , 'durationchange' , 'loadedmetadata' , 'loadeddata' , 'progress' , 'canplay' , 'canplaythrough' , 'suspend' , 'abort' , 'error' , 'emptied' , 'stalled' , 'play' , 'playing' , 'pause' , 'waiting' , 'seeking' , 'seeked' , 'timeupdate' , 'ended' , 'ratechange' , 'volumechange' ] ,
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' ]
} ;
_window2 . default . mejs = mejs ;
exports . default = mejs ;
2020-09-29 11:53:06 -04:00
} , { "3" : 3 } ] , 8 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . renderer = undefined ;
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 ; } ;
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 ; } ; } ( ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var Renderer = function ( ) {
function Renderer ( ) {
_classCallCheck ( this , Renderer ) ;
this . renderers = { } ;
this . order = [ ] ;
}
_createClass ( Renderer , [ {
key : 'add' ,
value : function add ( renderer ) {
if ( renderer . name === undefined ) {
throw new TypeError ( 'renderer must contain at least `name` property' ) ;
}
this . renderers [ renderer . name ] = renderer ;
this . order . push ( renderer . name ) ;
}
} , {
key : 'select' ,
value : function select ( mediaFiles ) {
var renderers = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : [ ] ;
var renderersLength = renderers . length ;
renderers = renderers . length ? renderers : this . order ;
if ( ! renderersLength ) {
var rendererIndicator = [ /^(html5|native)/i , /^flash/i , /iframe$/i ] ,
rendererRanking = function rendererRanking ( renderer ) {
for ( var i = 0 , total = rendererIndicator . length ; i < total ; i ++ ) {
if ( rendererIndicator [ i ] . test ( renderer ) ) {
return i ;
}
}
return rendererIndicator . length ;
} ;
renderers . sort ( function ( a , b ) {
return rendererRanking ( a ) - rendererRanking ( b ) ;
} ) ;
}
for ( var i = 0 , total = renderers . length ; i < total ; i ++ ) {
var key = renderers [ i ] ,
_renderer = this . renderers [ key ] ;
if ( _renderer !== null && _renderer !== undefined ) {
for ( var j = 0 , jl = mediaFiles . length ; j < jl ; j ++ ) {
if ( typeof _renderer . canPlayType === 'function' && typeof mediaFiles [ j ] . type === 'string' && _renderer . canPlayType ( mediaFiles [ j ] . type ) ) {
return {
rendererName : _renderer . name ,
src : mediaFiles [ j ] . src
} ;
}
}
}
}
return null ;
}
} , {
key : 'order' ,
set : function set ( order ) {
if ( ! Array . isArray ( order ) ) {
throw new TypeError ( 'order must be an array of strings.' ) ;
}
this . _order = order ;
} ,
get : function get ( ) {
return this . _order ;
}
} , {
key : 'renderers' ,
set : function set ( renderers ) {
if ( renderers !== null && ( typeof renderers === 'undefined' ? 'undefined' : _typeof ( renderers ) ) !== 'object' ) {
throw new TypeError ( 'renderers must be an array of objects.' ) ;
}
this . _renderers = renderers ;
} ,
get : function get ( ) {
return this . _renderers ;
}
} ] ) ;
return Renderer ;
} ( ) ;
var renderer = exports . renderer = new Renderer ( ) ;
_mejs2 . default . Renderers = renderer ;
2020-09-29 11:53:06 -04:00
} , { "7" : 7 } ] , 9 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
var Features = _interopRequireWildcard ( _constants ) ;
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) newObj [ key ] = obj [ key ] ; } } newObj . default = obj ; return newObj ; } }
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
Object . assign ( _player . config , {
usePluginFullScreen : true ,
fullscreenText : null ,
useFakeFullscreen : false
} ) ;
Object . assign ( _player2 . default . prototype , {
isFullScreen : false ,
isNativeFullScreen : false ,
isInIframe : false ,
isPluginClickThroughCreated : false ,
fullscreenMode : '' ,
containerSizeTimeout : null ,
buildfullscreen : function buildfullscreen ( player ) {
if ( ! player . isVideo ) {
return ;
}
player . isInIframe = _window2 . default . location !== _window2 . default . parent . location ;
player . detectFullscreenMode ( ) ;
var t = this ,
fullscreenTitle = ( 0 , _general . isString ) ( t . options . fullscreenText ) ? t . options . fullscreenText : _i18n2 . default . t ( 'mejs.fullscreen' ) ,
fullscreenBtn = _document2 . default . createElement ( 'div' ) ;
fullscreenBtn . className = t . options . classPrefix + 'button ' + t . options . classPrefix + 'fullscreen-button' ;
fullscreenBtn . innerHTML = '<button type="button" aria-controls="' + t . id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>' ;
t . addControlElement ( fullscreenBtn , 'fullscreen' ) ;
fullscreenBtn . addEventListener ( 'click' , function ( ) {
var isFullScreen = Features . HAS _TRUE _NATIVE _FULLSCREEN && Features . IS _FULLSCREEN || player . isFullScreen ;
if ( isFullScreen ) {
player . exitFullScreen ( ) ;
} else {
player . enterFullScreen ( ) ;
}
} ) ;
player . fullscreenBtn = fullscreenBtn ;
2017-08-28 15:29:47 -04:00
t . options . keyActions . push ( {
keys : [ 70 ] ,
action : function action ( player , media , key , event ) {
if ( ! event . ctrlKey ) {
if ( typeof player . enterFullScreen !== 'undefined' ) {
if ( player . isFullScreen ) {
player . exitFullScreen ( ) ;
} else {
player . enterFullScreen ( ) ;
}
}
}
}
} ) ;
2017-08-01 00:43:51 -04:00
t . exitFullscreenCallback = function ( e ) {
var key = e . which || e . keyCode || 0 ;
2019-10-08 12:06:02 -04:00
if ( t . options . enableKeyboard && key === 27 && ( Features . HAS _TRUE _NATIVE _FULLSCREEN && Features . IS _FULLSCREEN || t . isFullScreen ) ) {
2017-08-01 00:43:51 -04:00
player . exitFullScreen ( ) ;
}
} ;
t . globalBind ( 'keydown' , t . exitFullscreenCallback ) ;
t . normalHeight = 0 ;
t . normalWidth = 0 ;
if ( Features . HAS _TRUE _NATIVE _FULLSCREEN ) {
var fullscreenChanged = function fullscreenChanged ( ) {
if ( player . isFullScreen ) {
if ( Features . isFullScreen ( ) ) {
player . isNativeFullScreen = true ;
player . setControlsSize ( ) ;
} else {
player . isNativeFullScreen = false ;
player . exitFullScreen ( ) ;
}
}
} ;
player . globalBind ( Features . FULLSCREEN _EVENT _NAME , fullscreenChanged ) ;
}
} ,
cleanfullscreen : function cleanfullscreen ( player ) {
player . exitFullScreen ( ) ;
player . globalUnbind ( 'keydown' , player . exitFullscreenCallback ) ;
} ,
detectFullscreenMode : function detectFullscreenMode ( ) {
var t = this ,
isNative = t . media . rendererName !== null && /(native|html5)/i . test ( t . media . rendererName ) ;
var mode = '' ;
if ( Features . HAS _TRUE _NATIVE _FULLSCREEN && isNative ) {
mode = 'native-native' ;
} else if ( Features . HAS _TRUE _NATIVE _FULLSCREEN && ! isNative ) {
mode = 'plugin-native' ;
} else if ( t . usePluginFullScreen && Features . SUPPORT _POINTER _EVENTS ) {
mode = 'plugin-click' ;
}
t . fullscreenMode = mode ;
return mode ;
} ,
enterFullScreen : function enterFullScreen ( ) {
var t = this ,
isNative = t . media . rendererName !== null && /(html5|native)/i . test ( t . media . rendererName ) ,
2017-10-16 14:07:52 -04:00
containerStyles = getComputedStyle ( t . getElement ( t . container ) ) ;
2017-08-01 00:43:51 -04:00
2019-10-08 12:06:02 -04:00
if ( ! t . isVideo ) {
return ;
}
2022-09-29 10:21:11 -04:00
if ( t . options . useFakeFullscreen === false && ( Features . IS _IOS || Features . IS _SAFARI ) && Features . HAS _IOS _FULLSCREEN && typeof t . media . originalNode . webkitEnterFullscreen === 'function' && t . media . originalNode . canPlayType ( ( 0 , _media . getTypeFromFile ) ( t . media . getSrc ( ) ) ) ) {
2017-08-01 00:43:51 -04:00
t . media . originalNode . webkitEnterFullscreen ( ) ;
return ;
}
( 0 , _dom . addClass ) ( _document2 . default . documentElement , t . options . classPrefix + 'fullscreen' ) ;
2017-10-16 14:07:52 -04:00
( 0 , _dom . addClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'container-fullscreen' ) ;
2017-08-01 00:43:51 -04:00
t . normalHeight = parseFloat ( containerStyles . height ) ;
t . normalWidth = parseFloat ( containerStyles . width ) ;
if ( t . fullscreenMode === 'native-native' || t . fullscreenMode === 'plugin-native' ) {
2017-10-16 14:07:52 -04:00
Features . requestFullScreen ( t . getElement ( t . container ) ) ;
2017-08-01 00:43:51 -04:00
if ( t . isInIframe ) {
setTimeout ( function checkFullscreen ( ) {
if ( t . isNativeFullScreen ) {
var percentErrorMargin = 0.002 ,
windowWidth = _window2 . default . innerWidth || _document2 . default . documentElement . clientWidth || _document2 . default . body . clientWidth ,
screenWidth = screen . width ,
absDiff = Math . abs ( screenWidth - windowWidth ) ,
marginError = screenWidth * percentErrorMargin ;
if ( absDiff > marginError ) {
t . exitFullScreen ( ) ;
} else {
setTimeout ( checkFullscreen , 500 ) ;
}
}
} , 1000 ) ;
}
}
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . width = '100%' ;
t . getElement ( t . container ) . style . height = '100%' ;
2017-08-01 00:43:51 -04:00
t . containerSizeTimeout = setTimeout ( function ( ) {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . width = '100%' ;
t . getElement ( t . container ) . style . height = '100%' ;
2017-08-01 00:43:51 -04:00
t . setControlsSize ( ) ;
} , 500 ) ;
if ( isNative ) {
t . node . style . width = '100%' ;
t . node . style . height = '100%' ;
} else {
2017-10-16 14:07:52 -04:00
var elements = t . getElement ( t . container ) . querySelectorAll ( 'embed, object, video' ) ,
2017-08-01 00:43:51 -04:00
_total = elements . length ;
for ( var i = 0 ; i < _total ; i ++ ) {
elements [ i ] . style . width = '100%' ;
elements [ i ] . style . height = '100%' ;
}
}
if ( t . options . setDimensions && typeof t . media . setSize === 'function' ) {
t . media . setSize ( screen . width , screen . height ) ;
}
2017-10-16 14:07:52 -04:00
var layers = t . getElement ( t . layers ) . children ,
2017-08-01 00:43:51 -04:00
total = layers . length ;
for ( var _i = 0 ; _i < total ; _i ++ ) {
layers [ _i ] . style . width = '100%' ;
layers [ _i ] . style . height = '100%' ;
}
if ( t . fullscreenBtn ) {
( 0 , _dom . removeClass ) ( t . fullscreenBtn , t . options . classPrefix + 'fullscreen' ) ;
( 0 , _dom . addClass ) ( t . fullscreenBtn , t . options . classPrefix + 'unfullscreen' ) ;
}
t . setControlsSize ( ) ;
t . isFullScreen = true ;
var zoomFactor = Math . min ( screen . width / t . width , screen . height / t . height ) ,
2017-10-16 14:07:52 -04:00
captionText = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-text' ) ;
2017-08-01 00:43:51 -04:00
if ( captionText ) {
captionText . style . fontSize = zoomFactor * 100 + '%' ;
captionText . style . lineHeight = 'normal' ;
2019-10-08 12:06:02 -04:00
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-position' ) . style . bottom = ( screen . height - t . normalHeight ) / 2 - t . getElement ( t . controls ) . offsetHeight / 2 + zoomFactor + 15 + 'px' ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'enteredfullscreen' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ,
exitFullScreen : function exitFullScreen ( ) {
var t = this ,
isNative = t . media . rendererName !== null && /(native|html5)/i . test ( t . media . rendererName ) ;
2019-10-08 12:06:02 -04:00
if ( ! t . isVideo ) {
return ;
}
2017-08-01 00:43:51 -04:00
clearTimeout ( t . containerSizeTimeout ) ;
if ( Features . HAS _TRUE _NATIVE _FULLSCREEN && ( Features . IS _FULLSCREEN || t . isFullScreen ) ) {
Features . cancelFullScreen ( ) ;
}
( 0 , _dom . removeClass ) ( _document2 . default . documentElement , t . options . classPrefix + 'fullscreen' ) ;
2017-10-16 14:07:52 -04:00
( 0 , _dom . removeClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'container-fullscreen' ) ;
2017-08-01 00:43:51 -04:00
if ( t . options . setDimensions ) {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . width = t . normalWidth + 'px' ;
t . getElement ( t . container ) . style . height = t . normalHeight + 'px' ;
2017-08-01 00:43:51 -04:00
if ( isNative ) {
t . node . style . width = t . normalWidth + 'px' ;
t . node . style . height = t . normalHeight + 'px' ;
} else {
2017-10-16 14:07:52 -04:00
var elements = t . getElement ( t . container ) . querySelectorAll ( 'embed, object, video' ) ,
2017-08-01 00:43:51 -04:00
_total2 = elements . length ;
for ( var i = 0 ; i < _total2 ; i ++ ) {
elements [ i ] . style . width = t . normalWidth + 'px' ;
elements [ i ] . style . height = t . normalHeight + 'px' ;
}
}
if ( typeof t . media . setSize === 'function' ) {
t . media . setSize ( t . normalWidth , t . normalHeight ) ;
}
2017-10-16 14:07:52 -04:00
var layers = t . getElement ( t . layers ) . children ,
2017-08-01 00:43:51 -04:00
total = layers . length ;
for ( var _i2 = 0 ; _i2 < total ; _i2 ++ ) {
layers [ _i2 ] . style . width = t . normalWidth + 'px' ;
layers [ _i2 ] . style . height = t . normalHeight + 'px' ;
}
}
if ( t . fullscreenBtn ) {
( 0 , _dom . removeClass ) ( t . fullscreenBtn , t . options . classPrefix + 'unfullscreen' ) ;
( 0 , _dom . addClass ) ( t . fullscreenBtn , t . options . classPrefix + 'fullscreen' ) ;
}
t . setControlsSize ( ) ;
t . isFullScreen = false ;
2017-10-16 14:07:52 -04:00
var captionText = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-text' ) ;
2017-08-01 00:43:51 -04:00
if ( captionText ) {
captionText . style . fontSize = '' ;
captionText . style . lineHeight = '' ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-position' ) . style . bottom = '' ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'exitedfullscreen' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
}
} ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "25" : 25 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "5" : 5 } ] , 10 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
Object . assign ( _player . config , {
playText : null ,
pauseText : null
} ) ;
Object . assign ( _player2 . default . prototype , {
buildplaypause : function buildplaypause ( player , controls , layers , media ) {
var t = this ,
op = t . options ,
playTitle = ( 0 , _general . isString ) ( op . playText ) ? op . playText : _i18n2 . default . t ( 'mejs.play' ) ,
pauseTitle = ( 0 , _general . isString ) ( op . pauseText ) ? op . pauseText : _i18n2 . default . t ( 'mejs.pause' ) ,
play = _document2 . default . createElement ( 'div' ) ;
play . className = t . options . classPrefix + 'button ' + t . options . classPrefix + 'playpause-button ' + t . options . classPrefix + 'play' ;
play . innerHTML = '<button type="button" aria-controls="' + t . id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>' ;
play . addEventListener ( 'click' , function ( ) {
if ( t . paused ) {
t . play ( ) ;
} else {
t . pause ( ) ;
}
} ) ;
var playBtn = play . querySelector ( 'button' ) ;
t . addControlElement ( play , 'playpause' ) ;
function togglePlayPause ( which ) {
if ( 'play' === which ) {
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'play' ) ;
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'replay' ) ;
( 0 , _dom . addClass ) ( play , t . options . classPrefix + 'pause' ) ;
playBtn . setAttribute ( 'title' , pauseTitle ) ;
playBtn . setAttribute ( 'aria-label' , pauseTitle ) ;
} else {
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'pause' ) ;
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'replay' ) ;
( 0 , _dom . addClass ) ( play , t . options . classPrefix + 'play' ) ;
playBtn . setAttribute ( 'title' , playTitle ) ;
playBtn . setAttribute ( 'aria-label' , playTitle ) ;
}
}
togglePlayPause ( 'pse' ) ;
media . addEventListener ( 'loadedmetadata' , function ( ) {
if ( media . rendererName . indexOf ( 'flash' ) === - 1 ) {
togglePlayPause ( 'pse' ) ;
}
} ) ;
media . addEventListener ( 'play' , function ( ) {
togglePlayPause ( 'play' ) ;
} ) ;
media . addEventListener ( 'playing' , function ( ) {
togglePlayPause ( 'play' ) ;
} ) ;
media . addEventListener ( 'pause' , function ( ) {
togglePlayPause ( 'pse' ) ;
} ) ;
media . addEventListener ( 'ended' , function ( ) {
if ( ! player . options . loop ) {
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'pause' ) ;
( 0 , _dom . removeClass ) ( play , t . options . classPrefix + 'play' ) ;
( 0 , _dom . addClass ) ( play , t . options . classPrefix + 'replay' ) ;
playBtn . setAttribute ( 'title' , playTitle ) ;
playBtn . setAttribute ( 'aria-label' , playTitle ) ;
}
} ) ;
}
} ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "26" : 26 , "27" : 27 , "5" : 5 } ] , 11 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _time = _dereq _ ( 30 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2020-09-29 11:53:06 -04:00
Object . assign ( _player . config , {
2017-08-01 00:43:51 -04:00
enableProgressTooltip : true ,
2017-08-12 02:20:44 -04:00
useSmoothHover : true ,
forceLive : false
2017-08-01 00:43:51 -04:00
} ) ;
2020-09-29 11:53:06 -04:00
Object . assign ( _player2 . default . prototype , {
2017-08-01 00:43:51 -04:00
buildprogress : function buildprogress ( player , controls , layers , media ) {
var lastKeyPressTime = 0 ,
mouseIsDown = false ,
startedPaused = false ;
var t = this ,
autoRewindInitial = player . options . autoRewind ,
tooltip = player . options . enableProgressTooltip ? '<span class="' + t . options . classPrefix + 'time-float">' + ( '<span class="' + t . options . classPrefix + 'time-float-current">00:00</span>' ) + ( '<span class="' + t . options . classPrefix + 'time-float-corner"></span>' ) + '</span>' : '' ,
rail = _document2 . default . createElement ( 'div' ) ;
rail . className = t . options . classPrefix + 'time-rail' ;
rail . innerHTML = '<span class="' + t . options . classPrefix + 'time-total ' + t . options . classPrefix + 'time-slider">' + ( '<span class="' + t . options . classPrefix + 'time-buffering"></span>' ) + ( '<span class="' + t . options . classPrefix + 'time-loaded"></span>' ) + ( '<span class="' + t . options . classPrefix + 'time-current"></span>' ) + ( '<span class="' + t . options . classPrefix + 'time-hovered no-hover"></span>' ) + ( '<span class="' + t . options . classPrefix + 'time-handle"><span class="' + t . options . classPrefix + 'time-handle-content"></span></span>' ) + ( '' + tooltip ) + '</span>' ;
t . addControlElement ( rail , 'progress' ) ;
2017-08-28 15:29:47 -04:00
t . options . keyActions . push ( {
keys : [ 37 , 227 ] ,
action : function action ( player ) {
if ( ! isNaN ( player . duration ) && player . duration > 0 ) {
if ( player . isVideo ) {
player . showControls ( ) ;
player . startControlsTimer ( ) ;
}
2020-09-29 11:53:06 -04:00
var timeSlider = player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'time-total' ) ;
2019-10-08 12:06:02 -04:00
if ( timeSlider ) {
timeSlider . focus ( ) ;
}
2017-08-28 15:29:47 -04:00
var newTime = Math . max ( player . currentTime - player . options . defaultSeekBackwardInterval ( player ) , 0 ) ;
2020-09-29 11:53:06 -04:00
if ( ! player . paused ) {
player . pause ( ) ;
}
setTimeout ( function ( ) {
player . setCurrentTime ( newTime ) ;
} , 0 ) ;
setTimeout ( function ( ) {
player . play ( ) ;
} , 0 ) ;
2017-08-28 15:29:47 -04:00
}
}
} , {
keys : [ 39 , 228 ] ,
action : function action ( player ) {
if ( ! isNaN ( player . duration ) && player . duration > 0 ) {
if ( player . isVideo ) {
player . showControls ( ) ;
player . startControlsTimer ( ) ;
}
2020-09-29 11:53:06 -04:00
var timeSlider = player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'time-total' ) ;
2019-10-08 12:06:02 -04:00
if ( timeSlider ) {
timeSlider . focus ( ) ;
}
2017-08-28 15:29:47 -04:00
var newTime = Math . min ( player . currentTime + player . options . defaultSeekForwardInterval ( player ) , player . duration ) ;
2020-09-29 11:53:06 -04:00
if ( ! player . paused ) {
player . pause ( ) ;
}
setTimeout ( function ( ) {
player . setCurrentTime ( newTime ) ;
} , 0 ) ;
setTimeout ( function ( ) {
player . play ( ) ;
} , 0 ) ;
2017-08-28 15:29:47 -04:00
}
}
} ) ;
2017-08-01 00:43:51 -04:00
t . rail = controls . querySelector ( '.' + t . options . classPrefix + 'time-rail' ) ;
t . total = controls . querySelector ( '.' + t . options . classPrefix + 'time-total' ) ;
t . loaded = controls . querySelector ( '.' + t . options . classPrefix + 'time-loaded' ) ;
t . current = controls . querySelector ( '.' + t . options . classPrefix + 'time-current' ) ;
t . handle = controls . querySelector ( '.' + t . options . classPrefix + 'time-handle' ) ;
t . timefloat = controls . querySelector ( '.' + t . options . classPrefix + 'time-float' ) ;
t . timefloatcurrent = controls . querySelector ( '.' + t . options . classPrefix + 'time-float-current' ) ;
t . slider = controls . querySelector ( '.' + t . options . classPrefix + 'time-slider' ) ;
t . hovered = controls . querySelector ( '.' + t . options . classPrefix + 'time-hovered' ) ;
2017-10-16 14:07:52 -04:00
t . buffer = controls . querySelector ( '.' + t . options . classPrefix + 'time-buffering' ) ;
2017-08-01 00:43:51 -04:00
t . newTime = 0 ;
t . forcedHandlePause = false ;
t . setTransformStyle = function ( element , value ) {
element . style . transform = value ;
element . style . webkitTransform = value ;
element . style . MozTransform = value ;
element . style . msTransform = value ;
element . style . OTransform = value ;
} ;
2017-10-16 14:07:52 -04:00
t . buffer . style . display = 'none' ;
2017-08-01 00:43:51 -04:00
var handleMouseMove = function handleMouseMove ( e ) {
var totalStyles = getComputedStyle ( t . total ) ,
offsetStyles = ( 0 , _dom . offset ) ( t . total ) ,
width = t . total . offsetWidth ,
transform = function ( ) {
if ( totalStyles . webkitTransform !== undefined ) {
return 'webkitTransform' ;
} else if ( totalStyles . mozTransform !== undefined ) {
return 'mozTransform ' ;
} else if ( totalStyles . oTransform !== undefined ) {
return 'oTransform' ;
} else if ( totalStyles . msTransform !== undefined ) {
return 'msTransform' ;
} else {
return 'transform' ;
}
} ( ) ,
cssMatrix = function ( ) {
if ( 'WebKitCSSMatrix' in window ) {
return 'WebKitCSSMatrix' ;
} else if ( 'MSCSSMatrix' in window ) {
return 'MSCSSMatrix' ;
} else if ( 'CSSMatrix' in window ) {
return 'CSSMatrix' ;
}
} ( ) ;
var percentage = 0 ,
leftPos = 0 ,
pos = 0 ,
x = void 0 ;
if ( e . originalEvent && e . originalEvent . changedTouches ) {
x = e . originalEvent . changedTouches [ 0 ] . pageX ;
} else if ( e . changedTouches ) {
x = e . changedTouches [ 0 ] . pageX ;
} else {
x = e . pageX ;
}
if ( t . getDuration ( ) ) {
if ( x < offsetStyles . left ) {
x = offsetStyles . left ;
} else if ( x > width + offsetStyles . left ) {
x = width + offsetStyles . left ;
}
pos = x - offsetStyles . left ;
percentage = pos / width ;
2019-10-08 12:06:02 -04:00
t . newTime = percentage * t . getDuration ( ) ;
2017-08-01 00:43:51 -04:00
if ( mouseIsDown && t . getCurrentTime ( ) !== null && t . newTime . toFixed ( 4 ) !== t . getCurrentTime ( ) . toFixed ( 4 ) ) {
t . setCurrentRailHandle ( t . newTime ) ;
t . updateCurrent ( t . newTime ) ;
}
2017-08-28 15:29:47 -04:00
if ( ! _constants . IS _IOS && ! _constants . IS _ANDROID ) {
2017-08-01 00:43:51 -04:00
if ( pos < 0 ) {
pos = 0 ;
}
if ( t . options . useSmoothHover && cssMatrix !== null && typeof window [ cssMatrix ] !== 'undefined' ) {
var matrix = new window [ cssMatrix ] ( getComputedStyle ( t . handle ) [ transform ] ) ,
handleLocation = matrix . m41 ,
hoverScaleX = pos / parseFloat ( getComputedStyle ( t . total ) . width ) - handleLocation / parseFloat ( getComputedStyle ( t . total ) . width ) ;
t . hovered . style . left = handleLocation + 'px' ;
t . setTransformStyle ( t . hovered , 'scaleX(' + hoverScaleX + ')' ) ;
t . hovered . setAttribute ( 'pos' , pos ) ;
if ( hoverScaleX >= 0 ) {
( 0 , _dom . removeClass ) ( t . hovered , 'negative' ) ;
} else {
( 0 , _dom . addClass ) ( t . hovered , 'negative' ) ;
}
}
2017-08-28 15:29:47 -04:00
if ( t . timefloat ) {
var half = t . timefloat . offsetWidth / 2 ,
2017-10-16 14:07:52 -04:00
offsetContainer = mejs . Utils . offset ( t . getElement ( t . container ) ) ,
2017-08-28 15:29:47 -04:00
tooltipStyles = getComputedStyle ( t . timefloat ) ;
if ( x - offsetContainer . left < t . timefloat . offsetWidth ) {
leftPos = half ;
2017-10-16 14:07:52 -04:00
} else if ( x - offsetContainer . left >= t . getElement ( t . container ) . offsetWidth - half ) {
2017-08-28 15:29:47 -04:00
leftPos = t . total . offsetWidth - half ;
} else {
leftPos = pos ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( ( 0 , _dom . hasClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'long-video' ) ) {
2017-08-28 15:29:47 -04:00
leftPos += parseFloat ( tooltipStyles . marginLeft ) / 2 + t . timefloat . offsetWidth / 2 ;
}
t . timefloat . style . left = leftPos + 'px' ;
2017-10-16 14:07:52 -04:00
t . timefloatcurrent . innerHTML = ( 0 , _time . secondsToTimeCode ) ( t . newTime , player . options . alwaysShowHours , player . options . showTimecodeFrameCount , player . options . framesPerSecond , player . options . secondsDecimalLength , player . options . timeFormat ) ;
2017-08-28 15:29:47 -04:00
t . timefloat . style . display = 'block' ;
}
2017-08-01 00:43:51 -04:00
}
} else if ( ! _constants . IS _IOS && ! _constants . IS _ANDROID && t . timefloat ) {
2017-10-16 14:07:52 -04:00
leftPos = t . timefloat . offsetWidth + width >= t . getElement ( t . container ) . offsetWidth ? t . timefloat . offsetWidth / 2 : 0 ;
2017-08-01 00:43:51 -04:00
t . timefloat . style . left = leftPos + 'px' ;
t . timefloat . style . left = leftPos + 'px' ;
t . timefloat . style . display = 'block' ;
}
} ,
updateSlider = function updateSlider ( ) {
var seconds = t . getCurrentTime ( ) ,
timeSliderText = _i18n2 . default . t ( 'mejs.time-slider' ) ,
2017-10-16 14:07:52 -04:00
time = ( 0 , _time . secondsToTimeCode ) ( seconds , player . options . alwaysShowHours , player . options . showTimecodeFrameCount , player . options . framesPerSecond , player . options . secondsDecimalLength , player . options . timeFormat ) ,
2017-08-01 00:43:51 -04:00
duration = t . getDuration ( ) ;
t . slider . setAttribute ( 'role' , 'slider' ) ;
t . slider . tabIndex = 0 ;
if ( media . paused ) {
t . slider . setAttribute ( 'aria-label' , timeSliderText ) ;
t . slider . setAttribute ( 'aria-valuemin' , 0 ) ;
2019-10-08 12:06:02 -04:00
t . slider . setAttribute ( 'aria-valuemax' , isNaN ( duration ) ? 0 : duration ) ;
2017-08-01 00:43:51 -04:00
t . slider . setAttribute ( 'aria-valuenow' , seconds ) ;
t . slider . setAttribute ( 'aria-valuetext' , time ) ;
} else {
t . slider . removeAttribute ( 'aria-label' ) ;
t . slider . removeAttribute ( 'aria-valuemin' ) ;
t . slider . removeAttribute ( 'aria-valuemax' ) ;
t . slider . removeAttribute ( 'aria-valuenow' ) ;
t . slider . removeAttribute ( 'aria-valuetext' ) ;
}
} ,
restartPlayer = function restartPlayer ( ) {
if ( new Date ( ) - lastKeyPressTime >= 1000 ) {
t . play ( ) ;
}
} ,
handleMouseup = function handleMouseup ( ) {
if ( mouseIsDown && t . getCurrentTime ( ) !== null && t . newTime . toFixed ( 4 ) !== t . getCurrentTime ( ) . toFixed ( 4 ) ) {
t . setCurrentTime ( t . newTime ) ;
2019-10-08 12:06:02 -04:00
t . setCurrentRailHandle ( t . newTime ) ;
2017-08-01 00:43:51 -04:00
t . updateCurrent ( t . newTime ) ;
}
if ( t . forcedHandlePause ) {
t . slider . focus ( ) ;
t . play ( ) ;
}
t . forcedHandlePause = false ;
} ;
t . slider . addEventListener ( 'focus' , function ( ) {
player . options . autoRewind = false ;
} ) ;
t . slider . addEventListener ( 'blur' , function ( ) {
player . options . autoRewind = autoRewindInitial ;
} ) ;
t . slider . addEventListener ( 'keydown' , function ( e ) {
if ( new Date ( ) - lastKeyPressTime >= 1000 ) {
startedPaused = t . paused ;
}
2019-10-08 12:06:02 -04:00
if ( t . options . enableKeyboard && t . options . keyActions . length ) {
2017-08-01 00:43:51 -04:00
var keyCode = e . which || e . keyCode || 0 ,
duration = t . getDuration ( ) ,
seekForward = player . options . defaultSeekForwardInterval ( media ) ,
seekBackward = player . options . defaultSeekBackwardInterval ( media ) ;
var seekTime = t . getCurrentTime ( ) ;
2017-10-16 14:07:52 -04:00
var volume = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-slider' ) ;
2017-08-28 15:29:47 -04:00
if ( keyCode === 38 || keyCode === 40 ) {
if ( volume ) {
volume . style . display = 'block' ;
}
if ( t . isVideo ) {
t . showControls ( ) ;
t . startControlsTimer ( ) ;
}
var newVolume = keyCode === 38 ? Math . min ( t . volume + 0.1 , 1 ) : Math . max ( t . volume - 0.1 , 0 ) ,
mutePlayer = newVolume <= 0 ;
t . setVolume ( newVolume ) ;
t . setMuted ( mutePlayer ) ;
return ;
} else {
if ( volume ) {
volume . style . display = 'none' ;
}
}
2017-08-01 00:43:51 -04:00
switch ( keyCode ) {
case 37 :
if ( t . getDuration ( ) !== Infinity ) {
seekTime -= seekBackward ;
}
break ;
case 39 :
if ( t . getDuration ( ) !== Infinity ) {
seekTime += seekForward ;
}
break ;
case 36 :
seekTime = 0 ;
break ;
case 35 :
seekTime = duration ;
break ;
2017-08-28 15:29:47 -04:00
case 13 :
2017-08-01 00:43:51 -04:00
case 32 :
2017-08-28 15:29:47 -04:00
if ( _constants . IS _FIREFOX ) {
2017-08-01 00:43:51 -04:00
if ( t . paused ) {
t . play ( ) ;
} else {
t . pause ( ) ;
}
}
return ;
default :
return ;
}
2019-10-08 12:06:02 -04:00
seekTime = seekTime < 0 || isNaN ( seekTime ) ? 0 : seekTime >= duration ? duration : Math . floor ( seekTime ) ;
2017-08-01 00:43:51 -04:00
lastKeyPressTime = new Date ( ) ;
if ( ! startedPaused ) {
player . pause ( ) ;
}
2020-09-29 11:53:06 -04:00
setTimeout ( function ( ) {
t . setCurrentTime ( seekTime ) ;
} , 0 ) ;
2017-08-01 00:43:51 -04:00
if ( seekTime < t . getDuration ( ) && ! startedPaused ) {
setTimeout ( restartPlayer , 1100 ) ;
}
2017-08-28 15:29:47 -04:00
player . showControls ( ) ;
2017-08-01 00:43:51 -04:00
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
}
} ) ;
var events = [ 'mousedown' , 'touchstart' ] ;
t . slider . addEventListener ( 'dragstart' , function ( ) {
return false ;
} ) ;
for ( var i = 0 , total = events . length ; i < total ; i ++ ) {
t . slider . addEventListener ( events [ i ] , function ( e ) {
t . forcedHandlePause = false ;
if ( t . getDuration ( ) !== Infinity ) {
if ( e . which === 1 || e . which === 0 ) {
if ( ! t . paused ) {
t . pause ( ) ;
t . forcedHandlePause = true ;
}
mouseIsDown = true ;
handleMouseMove ( e ) ;
var endEvents = [ 'mouseup' , 'touchend' ] ;
for ( var j = 0 , totalEvents = endEvents . length ; j < totalEvents ; j ++ ) {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( endEvents [ j ] , function ( event ) {
2017-08-01 00:43:51 -04:00
var target = event . target ;
if ( target === t . slider || target . closest ( '.' + t . options . classPrefix + 'time-slider' ) ) {
handleMouseMove ( event ) ;
}
} ) ;
}
t . globalBind ( 'mouseup.dur touchend.dur' , function ( ) {
handleMouseup ( ) ;
mouseIsDown = false ;
if ( t . timefloat ) {
t . timefloat . style . display = 'none' ;
}
} ) ;
}
}
2017-10-16 14:07:52 -04:00
} , _constants . SUPPORT _PASSIVE _EVENT && events [ i ] === 'touchstart' ? { passive : true } : false ) ;
2017-08-01 00:43:51 -04:00
}
t . slider . addEventListener ( 'mouseenter' , function ( e ) {
if ( e . target === t . slider && t . getDuration ( ) !== Infinity ) {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'mousemove' , function ( event ) {
2017-08-01 00:43:51 -04:00
var target = event . target ;
if ( target === t . slider || target . closest ( '.' + t . options . classPrefix + 'time-slider' ) ) {
handleMouseMove ( event ) ;
}
} ) ;
if ( t . timefloat && ! _constants . IS _IOS && ! _constants . IS _ANDROID ) {
t . timefloat . style . display = 'block' ;
}
if ( t . hovered && ! _constants . IS _IOS && ! _constants . IS _ANDROID && t . options . useSmoothHover ) {
( 0 , _dom . removeClass ) ( t . hovered , 'no-hover' ) ;
}
}
} ) ;
t . slider . addEventListener ( 'mouseleave' , function ( ) {
if ( t . getDuration ( ) !== Infinity ) {
if ( ! mouseIsDown ) {
if ( t . timefloat ) {
t . timefloat . style . display = 'none' ;
}
if ( t . hovered && t . options . useSmoothHover ) {
( 0 , _dom . addClass ) ( t . hovered , 'no-hover' ) ;
}
}
}
} ) ;
t . broadcastCallback = function ( e ) {
var broadcast = controls . querySelector ( '.' + t . options . classPrefix + 'broadcast' ) ;
2017-08-12 02:20:44 -04:00
if ( ! t . options . forceLive && t . getDuration ( ) !== Infinity ) {
2017-08-01 00:43:51 -04:00
if ( broadcast ) {
t . slider . style . display = '' ;
broadcast . remove ( ) ;
}
player . setProgressRail ( e ) ;
if ( ! t . forcedHandlePause ) {
player . setCurrentRail ( e ) ;
}
updateSlider ( ) ;
2019-10-08 12:06:02 -04:00
} else if ( ! broadcast && t . options . forceLive ) {
2017-08-01 00:43:51 -04:00
var label = _document2 . default . createElement ( 'span' ) ;
label . className = t . options . classPrefix + 'broadcast' ;
label . innerText = _i18n2 . default . t ( 'mejs.live-broadcast' ) ;
t . slider . style . display = 'none' ;
2017-08-12 02:20:44 -04:00
t . rail . appendChild ( label ) ;
2017-08-01 00:43:51 -04:00
}
} ;
media . addEventListener ( 'progress' , t . broadcastCallback ) ;
media . addEventListener ( 'timeupdate' , t . broadcastCallback ) ;
2017-10-16 14:07:52 -04:00
media . addEventListener ( 'play' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
media . addEventListener ( 'playing' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
media . addEventListener ( 'seeking' , function ( ) {
t . buffer . style . display = '' ;
} ) ;
media . addEventListener ( 'seeked' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
media . addEventListener ( 'pause' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
media . addEventListener ( 'waiting' , function ( ) {
t . buffer . style . display = '' ;
} ) ;
media . addEventListener ( 'loadeddata' , function ( ) {
t . buffer . style . display = '' ;
} ) ;
media . addEventListener ( 'canplay' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
media . addEventListener ( 'error' , function ( ) {
t . buffer . style . display = 'none' ;
} ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'controlsresize' , function ( e ) {
2017-08-01 00:43:51 -04:00
if ( t . getDuration ( ) !== Infinity ) {
player . setProgressRail ( e ) ;
if ( ! t . forcedHandlePause ) {
player . setCurrentRail ( e ) ;
}
}
} ) ;
} ,
cleanprogress : function cleanprogress ( player , controls , layers , media ) {
media . removeEventListener ( 'progress' , player . broadcastCallback ) ;
media . removeEventListener ( 'timeupdate' , player . broadcastCallback ) ;
if ( player . rail ) {
player . rail . remove ( ) ;
}
} ,
setProgressRail : function setProgressRail ( e ) {
var t = this ,
target = e !== undefined ? e . detail . target || e . target : t . media ;
var percent = null ;
if ( target && target . buffered && target . buffered . length > 0 && target . buffered . end && t . getDuration ( ) ) {
percent = target . buffered . end ( target . buffered . length - 1 ) / t . getDuration ( ) ;
} else if ( target && target . bytesTotal !== undefined && target . bytesTotal > 0 && target . bufferedBytes !== undefined ) {
percent = target . bufferedBytes / target . bytesTotal ;
} else if ( e && e . lengthComputable && e . total !== 0 ) {
percent = e . loaded / e . total ;
}
if ( percent !== null ) {
percent = Math . min ( 1 , Math . max ( 0 , percent ) ) ;
if ( t . loaded ) {
t . setTransformStyle ( t . loaded , 'scaleX(' + percent + ')' ) ;
}
}
} ,
setCurrentRailHandle : function setCurrentRailHandle ( fakeTime ) {
var t = this ;
t . setCurrentRailMain ( t , fakeTime ) ;
} ,
setCurrentRail : function setCurrentRail ( ) {
var t = this ;
t . setCurrentRailMain ( t ) ;
} ,
setCurrentRailMain : function setCurrentRailMain ( t , fakeTime ) {
if ( t . getCurrentTime ( ) !== undefined && t . getDuration ( ) ) {
var nTime = typeof fakeTime === 'undefined' ? t . getCurrentTime ( ) : fakeTime ;
if ( t . total && t . handle ) {
var tW = parseFloat ( getComputedStyle ( t . total ) . width ) ;
var newWidth = Math . round ( tW * nTime / t . getDuration ( ) ) ,
handlePos = newWidth - Math . round ( t . handle . offsetWidth / 2 ) ;
handlePos = handlePos < 0 ? 0 : handlePos ;
t . setTransformStyle ( t . current , 'scaleX(' + newWidth / tW + ')' ) ;
t . setTransformStyle ( t . handle , 'translateX(' + handlePos + 'px)' ) ;
if ( t . options . useSmoothHover && ! ( 0 , _dom . hasClass ) ( t . hovered , 'no-hover' ) ) {
2017-10-16 14:07:52 -04:00
var pos = parseInt ( t . hovered . getAttribute ( 'pos' ) , 10 ) ;
2017-08-01 00:43:51 -04:00
pos = isNaN ( pos ) ? 0 : pos ;
var hoverScaleX = pos / tW - handlePos / tW ;
t . hovered . style . left = handlePos + 'px' ;
t . setTransformStyle ( t . hovered , 'scaleX(' + hoverScaleX + ')' ) ;
if ( hoverScaleX >= 0 ) {
( 0 , _dom . removeClass ) ( t . hovered , 'negative' ) ;
} else {
( 0 , _dom . addClass ) ( t . hovered , 'negative' ) ;
}
}
}
}
}
} ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "25" : 25 , "26" : 26 , "30" : 30 , "5" : 5 } ] , 12 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2020-09-29 11:53:06 -04:00
var _time = _dereq _ ( 30 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
Object . assign ( _player . config , {
duration : 0 ,
timeAndDurationSeparator : '<span> | </span>'
} ) ;
Object . assign ( _player2 . default . prototype , {
buildcurrent : function buildcurrent ( player , controls , layers , media ) {
var t = this ,
time = _document2 . default . createElement ( 'div' ) ;
time . className = t . options . classPrefix + 'time' ;
time . setAttribute ( 'role' , 'timer' ) ;
time . setAttribute ( 'aria-live' , 'off' ) ;
2017-10-16 14:07:52 -04:00
time . innerHTML = '<span class="' + t . options . classPrefix + 'currenttime">' + ( 0 , _time . secondsToTimeCode ) ( 0 , player . options . alwaysShowHours , player . options . showTimecodeFrameCount , player . options . framesPerSecond , player . options . secondsDecimalLength , player . options . timeFormat ) + '</span>' ;
2017-08-01 00:43:51 -04:00
t . addControlElement ( time , 'current' ) ;
2017-08-28 15:29:47 -04:00
player . updateCurrent ( ) ;
2017-08-01 00:43:51 -04:00
t . updateTimeCallback = function ( ) {
if ( t . controlsAreVisible ) {
player . updateCurrent ( ) ;
}
} ;
media . addEventListener ( 'timeupdate' , t . updateTimeCallback ) ;
} ,
cleancurrent : function cleancurrent ( player , controls , layers , media ) {
media . removeEventListener ( 'timeupdate' , player . updateTimeCallback ) ;
} ,
buildduration : function buildduration ( player , controls , layers , media ) {
var t = this ,
currTime = controls . lastChild . querySelector ( '.' + t . options . classPrefix + 'currenttime' ) ;
if ( currTime ) {
2017-10-16 14:07:52 -04:00
controls . querySelector ( '.' + t . options . classPrefix + 'time' ) . innerHTML += t . options . timeAndDurationSeparator + '<span class="' + t . options . classPrefix + 'duration">' + ( ( 0 , _time . secondsToTimeCode ) ( t . options . duration , t . options . alwaysShowHours , t . options . showTimecodeFrameCount , t . options . framesPerSecond , t . options . secondsDecimalLength , t . options . timeFormat ) + '</span>' ) ;
2017-08-01 00:43:51 -04:00
} else {
if ( controls . querySelector ( '.' + t . options . classPrefix + 'currenttime' ) ) {
( 0 , _dom . addClass ) ( controls . querySelector ( '.' + t . options . classPrefix + 'currenttime' ) . parentNode , t . options . classPrefix + 'currenttime-container' ) ;
}
var duration = _document2 . default . createElement ( 'div' ) ;
duration . className = t . options . classPrefix + 'time ' + t . options . classPrefix + 'duration-container' ;
2017-10-16 14:07:52 -04:00
duration . innerHTML = '<span class="' + t . options . classPrefix + 'duration">' + ( ( 0 , _time . secondsToTimeCode ) ( t . options . duration , t . options . alwaysShowHours , t . options . showTimecodeFrameCount , t . options . framesPerSecond , t . options . secondsDecimalLength , t . options . timeFormat ) + '</span>' ) ;
2017-08-01 00:43:51 -04:00
t . addControlElement ( duration , 'duration' ) ;
}
2017-08-28 15:29:47 -04:00
t . updateDurationCallback = function ( ) {
if ( t . controlsAreVisible ) {
player . updateDuration ( ) ;
}
} ;
media . addEventListener ( 'timeupdate' , t . updateDurationCallback ) ;
2017-08-01 00:43:51 -04:00
} ,
cleanduration : function cleanduration ( player , controls , layers , media ) {
2017-08-28 15:29:47 -04:00
media . removeEventListener ( 'timeupdate' , player . updateDurationCallback ) ;
2017-08-01 00:43:51 -04:00
} ,
updateCurrent : function updateCurrent ( ) {
var t = this ;
var currentTime = t . getCurrentTime ( ) ;
if ( isNaN ( currentTime ) ) {
currentTime = 0 ;
}
2017-10-16 14:07:52 -04:00
var timecode = ( 0 , _time . secondsToTimeCode ) ( currentTime , t . options . alwaysShowHours , t . options . showTimecodeFrameCount , t . options . framesPerSecond , t . options . secondsDecimalLength , t . options . timeFormat ) ;
2017-08-01 00:43:51 -04:00
if ( timecode . length > 5 ) {
2017-10-16 14:07:52 -04:00
( 0 , _dom . addClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'long-video' ) ;
2017-08-01 00:43:51 -04:00
} else {
2017-10-16 14:07:52 -04:00
( 0 , _dom . removeClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'long-video' ) ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . controls ) . querySelector ( '.' + t . options . classPrefix + 'currenttime' ) ) {
t . getElement ( t . controls ) . querySelector ( '.' + t . options . classPrefix + 'currenttime' ) . innerText = timecode ;
2017-08-01 00:43:51 -04:00
}
} ,
updateDuration : function updateDuration ( ) {
var t = this ;
var duration = t . getDuration ( ) ;
2019-10-08 12:06:02 -04:00
if ( t . media !== undefined && ( isNaN ( duration ) || duration === Infinity || duration < 0 ) ) {
2017-08-01 00:43:51 -04:00
t . media . duration = t . options . duration = duration = 0 ;
}
if ( t . options . duration > 0 ) {
duration = t . options . duration ;
}
2017-10-16 14:07:52 -04:00
var timecode = ( 0 , _time . secondsToTimeCode ) ( duration , t . options . alwaysShowHours , t . options . showTimecodeFrameCount , t . options . framesPerSecond , t . options . secondsDecimalLength , t . options . timeFormat ) ;
2017-08-01 00:43:51 -04:00
if ( timecode . length > 5 ) {
2017-10-16 14:07:52 -04:00
( 0 , _dom . addClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'long-video' ) ;
2017-08-01 00:43:51 -04:00
} else {
2017-10-16 14:07:52 -04:00
( 0 , _dom . removeClass ) ( t . getElement ( t . container ) , t . options . classPrefix + 'long-video' ) ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . controls ) . querySelector ( '.' + t . options . classPrefix + 'duration' ) && duration > 0 ) {
t . getElement ( t . controls ) . querySelector ( '.' + t . options . classPrefix + 'duration' ) . innerHTML = timecode ;
2017-08-01 00:43:51 -04:00
}
}
} ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "26" : 26 , "30" : 30 } ] , 13 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2020-09-29 11:53:06 -04:00
var _time = _dereq _ ( 30 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
Object . assign ( _player . config , {
startLanguage : '' ,
tracksText : null ,
chaptersText : null ,
tracksAriaLive : false ,
hideCaptionsButtonWhenEmpty : true ,
toggleCaptionsButtonWhenOnlyOne : false ,
slidesSelector : ''
} ) ;
Object . assign ( _player2 . default . prototype , {
hasChapters : false ,
buildtracks : function buildtracks ( player , controls , layers , media ) {
2017-10-16 14:07:52 -04:00
this . findTracks ( ) ;
2017-08-01 00:43:51 -04:00
if ( ! player . tracks . length && ( ! player . trackFiles || ! player . trackFiles . length === 0 ) ) {
return ;
}
var t = this ,
attr = t . options . tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '' ,
tracksTitle = ( 0 , _general . isString ) ( t . options . tracksText ) ? t . options . tracksText : _i18n2 . default . t ( 'mejs.captions-subtitles' ) ,
chaptersTitle = ( 0 , _general . isString ) ( t . options . chaptersText ) ? t . options . chaptersText : _i18n2 . default . t ( 'mejs.captions-chapters' ) ,
total = player . trackFiles === null ? player . tracks . length : player . trackFiles . length ;
if ( t . domNode . textTracks ) {
for ( var i = t . domNode . textTracks . length - 1 ; i >= 0 ; i -- ) {
t . domNode . textTracks [ i ] . mode = 'hidden' ;
}
}
t . cleartracks ( player ) ;
player . captions = _document2 . default . createElement ( 'div' ) ;
player . captions . className = t . options . classPrefix + 'captions-layer ' + t . options . classPrefix + 'layer' ;
player . captions . innerHTML = '<div class="' + t . options . classPrefix + 'captions-position ' + t . options . classPrefix + 'captions-position-hover"' + attr + '>' + ( '<span class="' + t . options . classPrefix + 'captions-text"></span>' ) + '</div>' ;
player . captions . style . display = 'none' ;
layers . insertBefore ( player . captions , layers . firstChild ) ;
player . captionsText = player . captions . querySelector ( '.' + t . options . classPrefix + 'captions-text' ) ;
player . captionsButton = _document2 . default . createElement ( 'div' ) ;
player . captionsButton . className = t . options . classPrefix + 'button ' + t . options . classPrefix + 'captions-button' ;
player . captionsButton . innerHTML = '<button type="button" aria-controls="' + t . id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ( '<div class="' + t . options . classPrefix + 'captions-selector ' + t . options . classPrefix + 'offscreen">' ) + ( '<ul class="' + t . options . classPrefix + 'captions-selector-list">' ) + ( '<li class="' + t . options . classPrefix + 'captions-selector-list-item">' ) + ( '<input type="radio" class="' + t . options . classPrefix + 'captions-selector-input" ' ) + ( 'name="' + player . id + '_captions" id="' + player . id + '_captions_none" ' ) + 'value="none" checked disabled>' + ( '<label class="' + t . options . classPrefix + 'captions-selector-label ' ) + ( t . options . classPrefix + 'captions-selected" ' ) + ( 'for="' + player . id + '_captions_none">' + _i18n2 . default . t ( 'mejs.none' ) + '</label>' ) + '</li>' + '</ul>' + '</div>' ;
t . addControlElement ( player . captionsButton , 'tracks' ) ;
player . captionsButton . querySelector ( '.' + t . options . classPrefix + 'captions-selector-input' ) . disabled = false ;
player . chaptersButton = _document2 . default . createElement ( 'div' ) ;
player . chaptersButton . className = t . options . classPrefix + 'button ' + t . options . classPrefix + 'chapters-button' ;
player . chaptersButton . innerHTML = '<button type="button" aria-controls="' + t . id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ( '<div class="' + t . options . classPrefix + 'chapters-selector ' + t . options . classPrefix + 'offscreen">' ) + ( '<ul class="' + t . options . classPrefix + 'chapters-selector-list"></ul>' ) + '</div>' ;
var subtitleCount = 0 ;
for ( var _i = 0 ; _i < total ; _i ++ ) {
var kind = player . tracks [ _i ] . kind ,
src = player . tracks [ _i ] . src ;
if ( src . trim ( ) ) {
if ( kind === 'subtitles' || kind === 'captions' ) {
subtitleCount ++ ;
} else if ( kind === 'chapters' && ! controls . querySelector ( '.' + t . options . classPrefix + 'chapter-selector' ) ) {
player . captionsButton . parentNode . insertBefore ( player . chaptersButton , player . captionsButton ) ;
}
}
}
player . trackToLoad = - 1 ;
player . selectedTrack = null ;
player . isLoadingTrack = false ;
for ( var _i2 = 0 ; _i2 < total ; _i2 ++ ) {
var _kind = player . tracks [ _i2 ] . kind ;
if ( player . tracks [ _i2 ] . src . trim ( ) && ( _kind === 'subtitles' || _kind === 'captions' ) ) {
player . addTrackButton ( player . tracks [ _i2 ] . trackId , player . tracks [ _i2 ] . srclang , player . tracks [ _i2 ] . label ) ;
}
}
player . loadNextTrack ( ) ;
var inEvents = [ 'mouseenter' , 'focusin' ] ,
outEvents = [ 'mouseleave' , 'focusout' ] ;
if ( t . options . toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1 ) {
2017-10-16 14:07:52 -04:00
player . captionsButton . addEventListener ( 'click' , function ( e ) {
2017-08-01 00:43:51 -04:00
var trackId = 'none' ;
if ( player . selectedTrack === null ) {
trackId = player . tracks [ 0 ] . trackId ;
}
2017-10-16 14:07:52 -04:00
var keyboard = e . keyCode || e . which ;
player . setTrack ( trackId , typeof keyboard !== 'undefined' ) ;
2017-08-01 00:43:51 -04:00
} ) ;
} else {
var labels = player . captionsButton . querySelectorAll ( '.' + t . options . classPrefix + 'captions-selector-label' ) ,
captions = player . captionsButton . querySelectorAll ( 'input[type=radio]' ) ;
for ( var _i3 = 0 , _total = inEvents . length ; _i3 < _total ; _i3 ++ ) {
player . captionsButton . addEventListener ( inEvents [ _i3 ] , function ( ) {
( 0 , _dom . removeClass ) ( this . querySelector ( '.' + t . options . classPrefix + 'captions-selector' ) , t . options . classPrefix + 'offscreen' ) ;
} ) ;
}
for ( var _i4 = 0 , _total2 = outEvents . length ; _i4 < _total2 ; _i4 ++ ) {
player . captionsButton . addEventListener ( outEvents [ _i4 ] , function ( ) {
( 0 , _dom . addClass ) ( this . querySelector ( '.' + t . options . classPrefix + 'captions-selector' ) , t . options . classPrefix + 'offscreen' ) ;
} ) ;
}
for ( var _i5 = 0 , _total3 = captions . length ; _i5 < _total3 ; _i5 ++ ) {
2017-10-16 14:07:52 -04:00
captions [ _i5 ] . addEventListener ( 'click' , function ( e ) {
var keyboard = e . keyCode || e . which ;
player . setTrack ( this . value , typeof keyboard !== 'undefined' ) ;
2017-08-01 00:43:51 -04:00
} ) ;
}
for ( var _i6 = 0 , _total4 = labels . length ; _i6 < _total4 ; _i6 ++ ) {
2017-10-16 14:07:52 -04:00
labels [ _i6 ] . addEventListener ( 'click' , function ( e ) {
2017-08-01 00:43:51 -04:00
var radio = ( 0 , _dom . siblings ) ( this , function ( el ) {
return el . tagName === 'INPUT' ;
} ) [ 0 ] ,
event = ( 0 , _general . createEvent ) ( 'click' , radio ) ;
radio . dispatchEvent ( event ) ;
2017-10-16 14:07:52 -04:00
e . preventDefault ( ) ;
2017-08-01 00:43:51 -04:00
} ) ;
}
player . captionsButton . addEventListener ( 'keydown' , function ( e ) {
e . stopPropagation ( ) ;
} ) ;
}
for ( var _i7 = 0 , _total5 = inEvents . length ; _i7 < _total5 ; _i7 ++ ) {
player . chaptersButton . addEventListener ( inEvents [ _i7 ] , function ( ) {
if ( this . querySelector ( '.' + t . options . classPrefix + 'chapters-selector-list' ) . children . length ) {
( 0 , _dom . removeClass ) ( this . querySelector ( '.' + t . options . classPrefix + 'chapters-selector' ) , t . options . classPrefix + 'offscreen' ) ;
}
} ) ;
}
for ( var _i8 = 0 , _total6 = outEvents . length ; _i8 < _total6 ; _i8 ++ ) {
player . chaptersButton . addEventListener ( outEvents [ _i8 ] , function ( ) {
( 0 , _dom . addClass ) ( this . querySelector ( '.' + t . options . classPrefix + 'chapters-selector' ) , t . options . classPrefix + 'offscreen' ) ;
} ) ;
}
player . chaptersButton . addEventListener ( 'keydown' , function ( e ) {
e . stopPropagation ( ) ;
} ) ;
if ( ! player . options . alwaysShowControls ) {
2017-10-16 14:07:52 -04:00
player . getElement ( player . container ) . addEventListener ( 'controlsshown' , function ( ) {
( 0 , _dom . addClass ) ( player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-position' ) , t . options . classPrefix + 'captions-position-hover' ) ;
2017-08-01 00:43:51 -04:00
} ) ;
2017-10-16 14:07:52 -04:00
player . getElement ( player . container ) . addEventListener ( 'controlshidden' , function ( ) {
2017-08-01 00:43:51 -04:00
if ( ! media . paused ) {
2017-10-16 14:07:52 -04:00
( 0 , _dom . removeClass ) ( player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-position' ) , t . options . classPrefix + 'captions-position-hover' ) ;
2017-08-01 00:43:51 -04:00
}
} ) ;
} else {
2017-10-16 14:07:52 -04:00
( 0 , _dom . addClass ) ( player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'captions-position' ) , t . options . classPrefix + 'captions-position-hover' ) ;
2017-08-01 00:43:51 -04:00
}
media . addEventListener ( 'timeupdate' , function ( ) {
player . displayCaptions ( ) ;
} ) ;
if ( player . options . slidesSelector !== '' ) {
player . slidesContainer = _document2 . default . querySelectorAll ( player . options . slidesSelector ) ;
media . addEventListener ( 'timeupdate' , function ( ) {
player . displaySlides ( ) ;
} ) ;
}
} ,
cleartracks : function cleartracks ( player ) {
if ( player ) {
if ( player . captions ) {
player . captions . remove ( ) ;
}
if ( player . chapters ) {
player . chapters . remove ( ) ;
}
if ( player . captionsText ) {
player . captionsText . remove ( ) ;
}
if ( player . captionsButton ) {
player . captionsButton . remove ( ) ;
}
if ( player . chaptersButton ) {
player . chaptersButton . remove ( ) ;
}
}
} ,
rebuildtracks : function rebuildtracks ( ) {
var t = this ;
t . findTracks ( ) ;
2017-10-16 14:07:52 -04:00
t . buildtracks ( t , t . getElement ( t . controls ) , t . getElement ( t . layers ) , t . media ) ;
2017-08-01 00:43:51 -04:00
} ,
findTracks : function findTracks ( ) {
var t = this ,
tracktags = t . trackFiles === null ? t . node . querySelectorAll ( 'track' ) : t . trackFiles ,
total = tracktags . length ;
t . tracks = [ ] ;
for ( var i = 0 ; i < total ; i ++ ) {
var track = tracktags [ i ] ,
srclang = track . getAttribute ( 'srclang' ) . toLowerCase ( ) || '' ,
trackId = t . id + '_track_' + i + '_' + track . getAttribute ( 'kind' ) + '_' + srclang ;
t . tracks . push ( {
trackId : trackId ,
srclang : srclang ,
src : track . getAttribute ( 'src' ) ,
kind : track . getAttribute ( 'kind' ) ,
label : track . getAttribute ( 'label' ) || '' ,
entries : [ ] ,
isLoaded : false
} ) ;
}
} ,
2017-10-16 14:07:52 -04:00
setTrack : function setTrack ( trackId , setByKeyboard ) {
2017-08-01 00:43:51 -04:00
var t = this ,
radios = t . captionsButton . querySelectorAll ( 'input[type="radio"]' ) ,
captions = t . captionsButton . querySelectorAll ( '.' + t . options . classPrefix + 'captions-selected' ) ,
track = t . captionsButton . querySelector ( 'input[value="' + trackId + '"]' ) ;
for ( var i = 0 , total = radios . length ; i < total ; i ++ ) {
radios [ i ] . checked = false ;
}
for ( var _i9 = 0 , _total7 = captions . length ; _i9 < _total7 ; _i9 ++ ) {
( 0 , _dom . removeClass ) ( captions [ _i9 ] , t . options . classPrefix + 'captions-selected' ) ;
}
track . checked = true ;
var labels = ( 0 , _dom . siblings ) ( track , function ( el ) {
return ( 0 , _dom . hasClass ) ( el , t . options . classPrefix + 'captions-selector-label' ) ;
} ) ;
for ( var _i10 = 0 , _total8 = labels . length ; _i10 < _total8 ; _i10 ++ ) {
( 0 , _dom . addClass ) ( labels [ _i10 ] , t . options . classPrefix + 'captions-selected' ) ;
}
if ( trackId === 'none' ) {
t . selectedTrack = null ;
( 0 , _dom . removeClass ) ( t . captionsButton , t . options . classPrefix + 'captions-enabled' ) ;
} else {
for ( var _i11 = 0 , _total9 = t . tracks . length ; _i11 < _total9 ; _i11 ++ ) {
var _track = t . tracks [ _i11 ] ;
if ( _track . trackId === trackId ) {
if ( t . selectedTrack === null ) {
( 0 , _dom . addClass ) ( t . captionsButton , t . options . classPrefix + 'captions-enabled' ) ;
}
t . selectedTrack = _track ;
t . captions . setAttribute ( 'lang' , t . selectedTrack . srclang ) ;
t . displayCaptions ( ) ;
break ;
}
}
}
var event = ( 0 , _general . createEvent ) ( 'captionschange' , t . media ) ;
event . detail . caption = t . selectedTrack ;
t . media . dispatchEvent ( event ) ;
2017-10-16 14:07:52 -04:00
if ( ! setByKeyboard ) {
setTimeout ( function ( ) {
t . getElement ( t . container ) . focus ( ) ;
} , 500 ) ;
}
2017-08-01 00:43:51 -04:00
} ,
loadNextTrack : function loadNextTrack ( ) {
var t = this ;
t . trackToLoad ++ ;
if ( t . trackToLoad < t . tracks . length ) {
t . isLoadingTrack = true ;
t . loadTrack ( t . trackToLoad ) ;
} else {
t . isLoadingTrack = false ;
t . checkForTracks ( ) ;
}
} ,
loadTrack : function loadTrack ( index ) {
var t = this ,
track = t . tracks [ index ] ;
if ( track !== undefined && ( track . src !== undefined || track . src !== "" ) ) {
( 0 , _dom . ajax ) ( track . src , 'text' , function ( d ) {
track . entries = typeof d === 'string' && /<tt\s+xml/ig . exec ( d ) ? _mejs2 . default . TrackFormatParser . dfxp . parse ( d ) : _mejs2 . default . TrackFormatParser . webvtt . parse ( d ) ;
track . isLoaded = true ;
t . enableTrackButton ( track ) ;
t . loadNextTrack ( ) ;
if ( track . kind === 'slides' ) {
t . setupSlides ( track ) ;
} else if ( track . kind === 'chapters' && ! t . hasChapters ) {
t . drawChapters ( track ) ;
t . hasChapters = true ;
}
} , function ( ) {
t . removeTrackButton ( track . trackId ) ;
t . loadNextTrack ( ) ;
} ) ;
}
} ,
enableTrackButton : function enableTrackButton ( track ) {
var t = this ,
lang = track . srclang ,
target = _document2 . default . getElementById ( '' + track . trackId ) ;
if ( ! target ) {
return ;
}
var label = track . label ;
if ( label === '' ) {
label = _i18n2 . default . t ( _mejs2 . default . language . codes [ lang ] ) || lang ;
}
target . disabled = false ;
var targetSiblings = ( 0 , _dom . siblings ) ( target , function ( el ) {
return ( 0 , _dom . hasClass ) ( el , t . options . classPrefix + 'captions-selector-label' ) ;
} ) ;
for ( var i = 0 , total = targetSiblings . length ; i < total ; i ++ ) {
targetSiblings [ i ] . innerHTML = label ;
}
if ( t . options . startLanguage === lang ) {
target . checked = true ;
var event = ( 0 , _general . createEvent ) ( 'click' , target ) ;
target . dispatchEvent ( event ) ;
}
} ,
removeTrackButton : function removeTrackButton ( trackId ) {
var element = _document2 . default . getElementById ( '' + trackId ) ;
if ( element ) {
var button = element . closest ( 'li' ) ;
if ( button ) {
button . remove ( ) ;
}
}
} ,
addTrackButton : function addTrackButton ( trackId , lang , label ) {
var t = this ;
if ( label === '' ) {
label = _i18n2 . default . t ( _mejs2 . default . language . codes [ lang ] ) || lang ;
}
t . captionsButton . querySelector ( 'ul' ) . innerHTML += '<li class="' + t . options . classPrefix + 'captions-selector-list-item">' + ( '<input type="radio" class="' + t . options . classPrefix + 'captions-selector-input" ' ) + ( 'name="' + t . id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>' ) + ( '<label class="' + t . options . classPrefix + 'captions-selector-label"' ) + ( 'for="' + trackId + '">' + label + ' (loading)</label>' ) + '</li>' ;
} ,
checkForTracks : function checkForTracks ( ) {
var t = this ;
var hasSubtitles = false ;
if ( t . options . hideCaptionsButtonWhenEmpty ) {
for ( var i = 0 , total = t . tracks . length ; i < total ; i ++ ) {
var kind = t . tracks [ i ] . kind ;
if ( ( kind === 'subtitles' || kind === 'captions' ) && t . tracks [ i ] . isLoaded ) {
hasSubtitles = true ;
break ;
}
}
t . captionsButton . style . display = hasSubtitles ? '' : 'none' ;
t . setControlsSize ( ) ;
}
} ,
displayCaptions : function displayCaptions ( ) {
if ( this . tracks === undefined ) {
return ;
}
var t = this ,
track = t . selectedTrack ,
sanitize = function sanitize ( html ) {
var div = _document2 . default . createElement ( 'div' ) ;
div . innerHTML = html ;
var scripts = div . getElementsByTagName ( 'script' ) ;
var i = scripts . length ;
while ( i -- ) {
scripts [ i ] . remove ( ) ;
}
var allElements = div . getElementsByTagName ( '*' ) ;
for ( var _i12 = 0 , n = allElements . length ; _i12 < n ; _i12 ++ ) {
var attributesObj = allElements [ _i12 ] . attributes ,
attributes = Array . prototype . slice . call ( attributesObj ) ;
for ( var j = 0 , total = attributes . length ; j < total ; j ++ ) {
if ( attributes [ j ] . name . startsWith ( 'on' ) || attributes [ j ] . value . startsWith ( 'javascript' ) ) {
allElements [ _i12 ] . remove ( ) ;
} else if ( attributes [ j ] . name === 'style' ) {
allElements [ _i12 ] . removeAttribute ( attributes [ j ] . name ) ;
}
}
}
return div . innerHTML ;
} ;
if ( track !== null && track . isLoaded ) {
var i = t . searchTrackPosition ( track . entries , t . media . currentTime ) ;
if ( i > - 1 ) {
2020-09-29 11:53:06 -04:00
var text = track . entries [ i ] . text ;
if ( typeof t . options . captionTextPreprocessor === 'function' ) text = t . options . captionTextPreprocessor ( text ) ;
t . captionsText . innerHTML = sanitize ( text ) ;
2017-08-01 00:43:51 -04:00
t . captionsText . className = t . options . classPrefix + 'captions-text ' + ( track . entries [ i ] . identifier || '' ) ;
t . captions . style . display = '' ;
t . captions . style . height = '0px' ;
return ;
}
t . captions . style . display = 'none' ;
} else {
t . captions . style . display = 'none' ;
}
} ,
setupSlides : function setupSlides ( track ) {
var t = this ;
t . slides = track ;
t . slides . entries . imgs = [ t . slides . entries . length ] ;
t . showSlide ( 0 ) ;
} ,
showSlide : function showSlide ( index ) {
var _this = this ;
var t = this ;
if ( t . tracks === undefined || t . slidesContainer === undefined ) {
return ;
}
var url = t . slides . entries [ index ] . text ;
var img = t . slides . entries [ index ] . imgs ;
if ( img === undefined || img . fadeIn === undefined ) {
var image = _document2 . default . createElement ( 'img' ) ;
image . src = url ;
image . addEventListener ( 'load' , function ( ) {
var self = _this ,
visible = ( 0 , _dom . siblings ) ( self , function ( el ) {
return visible ( el ) ;
} ) ;
self . style . display = 'none' ;
t . slidesContainer . innerHTML += self . innerHTML ;
( 0 , _dom . fadeIn ) ( t . slidesContainer . querySelector ( image ) ) ;
for ( var i = 0 , total = visible . length ; i < total ; i ++ ) {
( 0 , _dom . fadeOut ) ( visible [ i ] , 400 ) ;
}
} ) ;
t . slides . entries [ index ] . imgs = img = image ;
} else if ( ! ( 0 , _dom . visible ) ( img ) ) {
var _visible = ( 0 , _dom . siblings ) ( self , function ( el ) {
return _visible ( el ) ;
} ) ;
( 0 , _dom . fadeIn ) ( t . slidesContainer . querySelector ( img ) ) ;
for ( var i = 0 , total = _visible . length ; i < total ; i ++ ) {
( 0 , _dom . fadeOut ) ( _visible [ i ] ) ;
}
}
} ,
displaySlides : function displaySlides ( ) {
var t = this ;
if ( this . slides === undefined ) {
return ;
}
var slides = t . slides ,
i = t . searchTrackPosition ( slides . entries , t . media . currentTime ) ;
if ( i > - 1 ) {
t . showSlide ( i ) ;
}
} ,
drawChapters : function drawChapters ( chapters ) {
var t = this ,
total = chapters . entries . length ;
if ( ! total ) {
return ;
}
t . chaptersButton . querySelector ( 'ul' ) . innerHTML = '' ;
for ( var i = 0 ; i < total ; i ++ ) {
t . chaptersButton . querySelector ( 'ul' ) . innerHTML += '<li class="' + t . options . classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ( '<input type="radio" class="' + t . options . classPrefix + 'captions-selector-input" ' ) + ( 'name="' + t . id + '_chapters" id="' + t . id + '_chapters_' + i + '" value="' + chapters . entries [ i ] . start + '" disabled>' ) + ( '<label class="' + t . options . classPrefix + 'chapters-selector-label"' ) + ( 'for="' + t . id + '_chapters_' + i + '">' + chapters . entries [ i ] . text + '</label>' ) + '</li>' ;
}
var radios = t . chaptersButton . querySelectorAll ( 'input[type="radio"]' ) ,
labels = t . chaptersButton . querySelectorAll ( '.' + t . options . classPrefix + 'chapters-selector-label' ) ;
for ( var _i13 = 0 , _total10 = radios . length ; _i13 < _total10 ; _i13 ++ ) {
radios [ _i13 ] . disabled = false ;
radios [ _i13 ] . checked = false ;
2017-10-16 14:07:52 -04:00
radios [ _i13 ] . addEventListener ( 'click' , function ( e ) {
2017-08-01 00:43:51 -04:00
var self = this ,
listItems = t . chaptersButton . querySelectorAll ( 'li' ) ,
label = ( 0 , _dom . siblings ) ( self , function ( el ) {
return ( 0 , _dom . hasClass ) ( el , t . options . classPrefix + 'chapters-selector-label' ) ;
} ) [ 0 ] ;
self . checked = true ;
self . parentNode . setAttribute ( 'aria-checked' , true ) ;
( 0 , _dom . addClass ) ( label , t . options . classPrefix + 'chapters-selected' ) ;
( 0 , _dom . removeClass ) ( t . chaptersButton . querySelector ( '.' + t . options . classPrefix + 'chapters-selected' ) , t . options . classPrefix + 'chapters-selected' ) ;
for ( var _i14 = 0 , _total11 = listItems . length ; _i14 < _total11 ; _i14 ++ ) {
listItems [ _i14 ] . setAttribute ( 'aria-checked' , false ) ;
}
2017-10-16 14:07:52 -04:00
var keyboard = e . keyCode || e . which ;
if ( typeof keyboard === 'undefined' ) {
setTimeout ( function ( ) {
t . getElement ( t . container ) . focus ( ) ;
} , 500 ) ;
}
2017-08-01 00:43:51 -04:00
t . media . setCurrentTime ( parseFloat ( self . value ) ) ;
if ( t . media . paused ) {
t . media . play ( ) ;
}
} ) ;
}
for ( var _i15 = 0 , _total12 = labels . length ; _i15 < _total12 ; _i15 ++ ) {
2017-10-16 14:07:52 -04:00
labels [ _i15 ] . addEventListener ( 'click' , function ( e ) {
2017-08-01 00:43:51 -04:00
var radio = ( 0 , _dom . siblings ) ( this , function ( el ) {
return el . tagName === 'INPUT' ;
} ) [ 0 ] ,
event = ( 0 , _general . createEvent ) ( 'click' , radio ) ;
radio . dispatchEvent ( event ) ;
2017-10-16 14:07:52 -04:00
e . preventDefault ( ) ;
2017-08-01 00:43:51 -04:00
} ) ;
}
} ,
searchTrackPosition : function searchTrackPosition ( tracks , currentTime ) {
var lo = 0 ,
hi = tracks . length - 1 ,
mid = void 0 ,
start = void 0 ,
stop = void 0 ;
while ( lo <= hi ) {
mid = lo + hi >> 1 ;
start = tracks [ mid ] . start ;
stop = tracks [ mid ] . stop ;
if ( currentTime >= start && currentTime < stop ) {
return mid ;
} else if ( start < currentTime ) {
lo = mid + 1 ;
} else if ( start > currentTime ) {
hi = mid - 1 ;
}
}
return - 1 ;
}
} ) ;
_mejs2 . default . language = {
codes : {
af : 'mejs.afrikaans' ,
sq : 'mejs.albanian' ,
ar : 'mejs.arabic' ,
be : 'mejs.belarusian' ,
bg : 'mejs.bulgarian' ,
ca : 'mejs.catalan' ,
zh : 'mejs.chinese' ,
'zh-cn' : 'mejs.chinese-simplified' ,
'zh-tw' : 'mejs.chines-traditional' ,
hr : 'mejs.croatian' ,
cs : 'mejs.czech' ,
da : 'mejs.danish' ,
nl : 'mejs.dutch' ,
en : 'mejs.english' ,
et : 'mejs.estonian' ,
fl : 'mejs.filipino' ,
fi : 'mejs.finnish' ,
fr : 'mejs.french' ,
gl : 'mejs.galician' ,
de : 'mejs.german' ,
el : 'mejs.greek' ,
ht : 'mejs.haitian-creole' ,
iw : 'mejs.hebrew' ,
hi : 'mejs.hindi' ,
hu : 'mejs.hungarian' ,
is : 'mejs.icelandic' ,
id : 'mejs.indonesian' ,
ga : 'mejs.irish' ,
it : 'mejs.italian' ,
ja : 'mejs.japanese' ,
ko : 'mejs.korean' ,
lv : 'mejs.latvian' ,
lt : 'mejs.lithuanian' ,
mk : 'mejs.macedonian' ,
ms : 'mejs.malay' ,
mt : 'mejs.maltese' ,
no : 'mejs.norwegian' ,
fa : 'mejs.persian' ,
pl : 'mejs.polish' ,
pt : 'mejs.portuguese' ,
ro : 'mejs.romanian' ,
ru : 'mejs.russian' ,
sr : 'mejs.serbian' ,
sk : 'mejs.slovak' ,
sl : 'mejs.slovenian' ,
es : 'mejs.spanish' ,
sw : 'mejs.swahili' ,
sv : 'mejs.swedish' ,
tl : 'mejs.tagalog' ,
th : 'mejs.thai' ,
tr : 'mejs.turkish' ,
uk : 'mejs.ukrainian' ,
vi : 'mejs.vietnamese' ,
cy : 'mejs.welsh' ,
yi : 'mejs.yiddish'
}
} ;
_mejs2 . default . TrackFormatParser = {
webvtt : {
pattern : /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/ ,
parse : function parse ( trackText ) {
var lines = trackText . split ( /\r?\n/ ) ,
entries = [ ] ;
var timecode = void 0 ,
text = void 0 ,
identifier = void 0 ;
for ( var i = 0 , total = lines . length ; i < total ; i ++ ) {
timecode = this . pattern . exec ( lines [ i ] ) ;
if ( timecode && i < lines . length ) {
if ( i - 1 >= 0 && lines [ i - 1 ] !== '' ) {
identifier = lines [ i - 1 ] ;
}
i ++ ;
text = lines [ i ] ;
i ++ ;
while ( lines [ i ] !== '' && i < lines . length ) {
text = text + '\n' + lines [ i ] ;
i ++ ;
}
2020-09-29 11:53:06 -04:00
text = text === null ? '' : text . trim ( ) . replace ( /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig , "<a href='$1' target='_blank'>$1</a>" ) ;
2017-08-01 00:43:51 -04:00
entries . push ( {
identifier : identifier ,
start : ( 0 , _time . convertSMPTEtoSeconds ) ( timecode [ 1 ] ) === 0 ? 0.200 : ( 0 , _time . convertSMPTEtoSeconds ) ( timecode [ 1 ] ) ,
stop : ( 0 , _time . convertSMPTEtoSeconds ) ( timecode [ 3 ] ) ,
text : text ,
settings : timecode [ 5 ]
} ) ;
}
identifier = '' ;
}
return entries ;
}
} ,
dfxp : {
parse : function parse ( trackText ) {
2022-09-29 10:21:11 -04:00
var trackElem = _document2 . default . adoptNode ( new DOMParser ( ) . parseFromString ( trackText , 'application/xml' ) . documentElement ) ,
container = trackElem . querySelector ( 'div' ) ,
2017-08-01 00:43:51 -04:00
lines = container . querySelectorAll ( 'p' ) ,
2022-09-29 10:21:11 -04:00
styleNode = _document2 . default . getElementById ( container . getAttribute ( 'style' ) ) ,
2017-08-01 00:43:51 -04:00
entries = [ ] ;
var styles = void 0 ;
2022-09-29 10:21:11 -04:00
if ( styleNode ) {
2017-08-01 00:43:51 -04:00
styleNode . removeAttribute ( 'id' ) ;
var attributes = styleNode . attributes ;
if ( attributes . length ) {
styles = { } ;
for ( var i = 0 , total = attributes . length ; i < total ; i ++ ) {
styles [ attributes [ i ] . name . split ( ":" ) [ 1 ] ] = attributes [ i ] . value ;
}
}
}
for ( var _i16 = 0 , _total13 = lines . length ; _i16 < _total13 ; _i16 ++ ) {
var style = void 0 ,
_temp = {
start : null ,
stop : null ,
style : null ,
text : null
} ;
2022-09-29 10:21:11 -04:00
if ( lines [ _i16 ] . getAttribute ( 'begin' ) ) {
_temp . start = ( 0 , _time . convertSMPTEtoSeconds ) ( lines [ _i16 ] . getAttribute ( 'begin' ) ) ;
2017-08-01 00:43:51 -04:00
}
2022-09-29 10:21:11 -04:00
if ( ! _temp . start && lines [ _i16 - 1 ] . getAttribute ( 'end' ) ) {
_temp . start = ( 0 , _time . convertSMPTEtoSeconds ) ( lines [ _i16 - 1 ] . getAttribute ( 'end' ) ) ;
2017-08-01 00:43:51 -04:00
}
2022-09-29 10:21:11 -04:00
if ( lines [ _i16 ] . getAttribute ( 'end' ) ) {
_temp . stop = ( 0 , _time . convertSMPTEtoSeconds ) ( lines [ _i16 ] . getAttribute ( 'end' ) ) ;
2017-08-01 00:43:51 -04:00
}
2022-09-29 10:21:11 -04:00
if ( ! _temp . stop && lines [ _i16 + 1 ] . getAttribute ( 'begin' ) ) {
_temp . stop = ( 0 , _time . convertSMPTEtoSeconds ) ( lines [ _i16 + 1 ] . getAttribute ( 'begin' ) ) ;
2017-08-01 00:43:51 -04:00
}
if ( styles ) {
style = '' ;
for ( var _style in styles ) {
2022-09-29 10:21:11 -04:00
style += _style + ': ' + styles [ _style ] + ';' ;
2017-08-01 00:43:51 -04:00
}
}
if ( style ) {
_temp . style = style ;
}
if ( _temp . start === 0 ) {
_temp . start = 0.200 ;
}
2022-09-29 10:21:11 -04:00
_temp . text = lines [ _i16 ] . innerHTML . trim ( ) . replace ( /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\/%=~_|])/ig , "<a href='$1' target='_blank'>$1</a>" ) ;
2017-08-01 00:43:51 -04:00
entries . push ( _temp ) ;
}
return entries ;
}
}
} ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "26" : 26 , "27" : 27 , "30" : 30 , "5" : 5 , "7" : 7 } ] , 14 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
Object . assign ( _player . config , {
muteText : null ,
unmuteText : null ,
allyVolumeControlText : null ,
hideVolumeOnTouchDevices : true ,
audioVolume : 'horizontal' ,
videoVolume : 'vertical' ,
startVolume : 0.8
} ) ;
Object . assign ( _player2 . default . prototype , {
buildvolume : function buildvolume ( player , controls , layers , media ) {
if ( ( _constants . IS _ANDROID || _constants . IS _IOS ) && this . options . hideVolumeOnTouchDevices ) {
return ;
}
var t = this ,
mode = t . isVideo ? t . options . videoVolume : t . options . audioVolume ,
muteText = ( 0 , _general . isString ) ( t . options . muteText ) ? t . options . muteText : _i18n2 . default . t ( 'mejs.mute' ) ,
unmuteText = ( 0 , _general . isString ) ( t . options . unmuteText ) ? t . options . unmuteText : _i18n2 . default . t ( 'mejs.unmute' ) ,
volumeControlText = ( 0 , _general . isString ) ( t . options . allyVolumeControlText ) ? t . options . allyVolumeControlText : _i18n2 . default . t ( 'mejs.volume-help-text' ) ,
mute = _document2 . default . createElement ( 'div' ) ;
mute . className = t . options . classPrefix + 'button ' + t . options . classPrefix + 'volume-button ' + t . options . classPrefix + 'mute' ;
mute . innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t . id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t . id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ( '<a href="javascript:void(0);" class="' + t . options . classPrefix + 'volume-slider" ' ) + ( 'aria-label="' + _i18n2 . default . t ( 'mejs.volume-slider' ) + '" aria-valuemin="0" aria-valuemax="100" role="slider" ' ) + 'aria-orientation="vertical">' + ( '<span class="' + t . options . classPrefix + 'offscreen">' + volumeControlText + '</span>' ) + ( '<div class="' + t . options . classPrefix + 'volume-total">' ) + ( '<div class="' + t . options . classPrefix + 'volume-current"></div>' ) + ( '<div class="' + t . options . classPrefix + 'volume-handle"></div>' ) + '</div>' + '</a>' ;
t . addControlElement ( mute , 'volume' ) ;
2017-08-28 15:29:47 -04:00
t . options . keyActions . push ( {
keys : [ 38 ] ,
action : function action ( player ) {
2020-09-29 11:53:06 -04:00
var volumeSlider = player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-slider' ) ;
2019-10-08 12:06:02 -04:00
if ( volumeSlider && volumeSlider . matches ( ':focus' ) ) {
2017-08-28 15:29:47 -04:00
volumeSlider . style . display = 'block' ;
}
if ( player . isVideo ) {
player . showControls ( ) ;
player . startControlsTimer ( ) ;
}
var newVolume = Math . min ( player . volume + 0.1 , 1 ) ;
player . setVolume ( newVolume ) ;
if ( newVolume > 0 ) {
player . setMuted ( false ) ;
}
}
} , {
keys : [ 40 ] ,
action : function action ( player ) {
2020-09-29 11:53:06 -04:00
var volumeSlider = player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-slider' ) ;
2017-08-28 15:29:47 -04:00
if ( volumeSlider ) {
volumeSlider . style . display = 'block' ;
}
if ( player . isVideo ) {
player . showControls ( ) ;
player . startControlsTimer ( ) ;
}
var newVolume = Math . max ( player . volume - 0.1 , 0 ) ;
player . setVolume ( newVolume ) ;
if ( newVolume <= 0.1 ) {
player . setMuted ( true ) ;
}
}
} , {
keys : [ 77 ] ,
action : function action ( player ) {
2020-09-29 11:53:06 -04:00
var volumeSlider = player . getElement ( player . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-slider' ) ;
if ( volumeSlider ) {
volumeSlider . style . display = 'block' ;
}
2017-08-28 15:29:47 -04:00
if ( player . isVideo ) {
player . showControls ( ) ;
player . startControlsTimer ( ) ;
}
if ( player . media . muted ) {
player . setMuted ( false ) ;
} else {
player . setMuted ( true ) ;
}
}
} ) ;
2017-08-01 00:43:51 -04:00
if ( mode === 'horizontal' ) {
var anchor = _document2 . default . createElement ( 'a' ) ;
anchor . className = t . options . classPrefix + 'horizontal-volume-slider' ;
anchor . href = 'javascript:void(0);' ;
anchor . setAttribute ( 'aria-label' , _i18n2 . default . t ( 'mejs.volume-slider' ) ) ;
anchor . setAttribute ( 'aria-valuemin' , 0 ) ;
anchor . setAttribute ( 'aria-valuemax' , 100 ) ;
2019-10-08 12:06:02 -04:00
anchor . setAttribute ( 'aria-valuenow' , 100 ) ;
2017-08-01 00:43:51 -04:00
anchor . setAttribute ( 'role' , 'slider' ) ;
anchor . innerHTML += '<span class="' + t . options . classPrefix + 'offscreen">' + volumeControlText + '</span>' + ( '<div class="' + t . options . classPrefix + 'horizontal-volume-total">' ) + ( '<div class="' + t . options . classPrefix + 'horizontal-volume-current"></div>' ) + ( '<div class="' + t . options . classPrefix + 'horizontal-volume-handle"></div>' ) + '</div>' ;
mute . parentNode . insertBefore ( anchor , mute . nextSibling ) ;
}
var mouseIsDown = false ,
mouseIsOver = false ,
modified = false ,
updateVolumeSlider = function updateVolumeSlider ( ) {
var volume = Math . floor ( media . volume * 100 ) ;
volumeSlider . setAttribute ( 'aria-valuenow' , volume ) ;
volumeSlider . setAttribute ( 'aria-valuetext' , volume + '%' ) ;
} ;
2017-10-16 14:07:52 -04:00
var volumeSlider = mode === 'vertical' ? t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-slider' ) : t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'horizontal-volume-slider' ) ,
volumeTotal = mode === 'vertical' ? t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-total' ) : t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'horizontal-volume-total' ) ,
volumeCurrent = mode === 'vertical' ? t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-current' ) : t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'horizontal-volume-current' ) ,
volumeHandle = mode === 'vertical' ? t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'volume-handle' ) : t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'horizontal-volume-handle' ) ,
2017-08-01 00:43:51 -04:00
positionVolumeHandle = function positionVolumeHandle ( volume ) {
if ( volume === null || isNaN ( volume ) || volume === undefined ) {
return ;
}
volume = Math . max ( 0 , volume ) ;
volume = Math . min ( volume , 1 ) ;
if ( volume === 0 ) {
( 0 , _dom . removeClass ) ( mute , t . options . classPrefix + 'mute' ) ;
( 0 , _dom . addClass ) ( mute , t . options . classPrefix + 'unmute' ) ;
var button = mute . firstElementChild ;
button . setAttribute ( 'title' , unmuteText ) ;
button . setAttribute ( 'aria-label' , unmuteText ) ;
} else {
( 0 , _dom . removeClass ) ( mute , t . options . classPrefix + 'unmute' ) ;
( 0 , _dom . addClass ) ( mute , t . options . classPrefix + 'mute' ) ;
var _button = mute . firstElementChild ;
_button . setAttribute ( 'title' , muteText ) ;
_button . setAttribute ( 'aria-label' , muteText ) ;
}
var volumePercentage = volume * 100 + '%' ,
volumeStyles = getComputedStyle ( volumeHandle ) ;
if ( mode === 'vertical' ) {
volumeCurrent . style . bottom = 0 ;
volumeCurrent . style . height = volumePercentage ;
volumeHandle . style . bottom = volumePercentage ;
volumeHandle . style . marginBottom = - parseFloat ( volumeStyles . height ) / 2 + 'px' ;
} else {
volumeCurrent . style . left = 0 ;
volumeCurrent . style . width = volumePercentage ;
volumeHandle . style . left = volumePercentage ;
volumeHandle . style . marginLeft = - parseFloat ( volumeStyles . width ) / 2 + 'px' ;
}
} ,
handleVolumeMove = function handleVolumeMove ( e ) {
var totalOffset = ( 0 , _dom . offset ) ( volumeTotal ) ,
volumeStyles = getComputedStyle ( volumeTotal ) ;
modified = true ;
var volume = null ;
if ( mode === 'vertical' ) {
var railHeight = parseFloat ( volumeStyles . height ) ,
newY = e . pageY - totalOffset . top ;
volume = ( railHeight - newY ) / railHeight ;
if ( totalOffset . top === 0 || totalOffset . left === 0 ) {
return ;
}
} else {
var railWidth = parseFloat ( volumeStyles . width ) ,
newX = e . pageX - totalOffset . left ;
volume = newX / railWidth ;
}
volume = Math . max ( 0 , volume ) ;
volume = Math . min ( volume , 1 ) ;
positionVolumeHandle ( volume ) ;
t . setMuted ( volume === 0 ) ;
t . setVolume ( volume ) ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
} ,
toggleMute = function toggleMute ( ) {
if ( t . muted ) {
positionVolumeHandle ( 0 ) ;
( 0 , _dom . removeClass ) ( mute , t . options . classPrefix + 'mute' ) ;
( 0 , _dom . addClass ) ( mute , t . options . classPrefix + 'unmute' ) ;
} else {
2022-09-29 10:21:11 -04:00
2017-08-01 00:43:51 -04:00
positionVolumeHandle ( media . volume ) ;
( 0 , _dom . removeClass ) ( mute , t . options . classPrefix + 'unmute' ) ;
( 0 , _dom . addClass ) ( mute , t . options . classPrefix + 'mute' ) ;
}
} ;
2017-10-16 14:07:52 -04:00
player . getElement ( player . container ) . addEventListener ( 'keydown' , function ( e ) {
2017-08-28 15:29:47 -04:00
var hasFocus = ! ! e . target . closest ( '.' + t . options . classPrefix + 'container' ) ;
if ( ! hasFocus && mode === 'vertical' ) {
volumeSlider . style . display = 'none' ;
}
} ) ;
2017-08-01 00:43:51 -04:00
mute . addEventListener ( 'mouseenter' , function ( e ) {
if ( e . target === mute ) {
volumeSlider . style . display = 'block' ;
mouseIsOver = true ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
}
} ) ;
mute . addEventListener ( 'focusin' , function ( ) {
volumeSlider . style . display = 'block' ;
mouseIsOver = true ;
} ) ;
mute . addEventListener ( 'focusout' , function ( e ) {
if ( ( ! e . relatedTarget || e . relatedTarget && ! e . relatedTarget . matches ( '.' + t . options . classPrefix + 'volume-slider' ) ) && mode === 'vertical' ) {
volumeSlider . style . display = 'none' ;
}
} ) ;
mute . addEventListener ( 'mouseleave' , function ( ) {
mouseIsOver = false ;
if ( ! mouseIsDown && mode === 'vertical' ) {
volumeSlider . style . display = 'none' ;
}
} ) ;
mute . addEventListener ( 'focusout' , function ( ) {
mouseIsOver = false ;
} ) ;
mute . addEventListener ( 'keydown' , function ( e ) {
2019-10-08 12:06:02 -04:00
if ( t . options . enableKeyboard && t . options . keyActions . length ) {
2017-08-01 00:43:51 -04:00
var keyCode = e . which || e . keyCode || 0 ,
volume = media . volume ;
switch ( keyCode ) {
case 38 :
volume = Math . min ( volume + 0.1 , 1 ) ;
break ;
case 40 :
volume = Math . max ( 0 , volume - 0.1 ) ;
break ;
default :
return true ;
}
mouseIsDown = false ;
positionVolumeHandle ( volume ) ;
media . setVolume ( volume ) ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
}
} ) ;
mute . querySelector ( 'button' ) . addEventListener ( 'click' , function ( ) {
media . setMuted ( ! media . muted ) ;
var event = ( 0 , _general . createEvent ) ( 'volumechange' , media ) ;
media . dispatchEvent ( event ) ;
} ) ;
volumeSlider . addEventListener ( 'dragstart' , function ( ) {
return false ;
} ) ;
volumeSlider . addEventListener ( 'mouseover' , function ( ) {
mouseIsOver = true ;
} ) ;
volumeSlider . addEventListener ( 'focusin' , function ( ) {
volumeSlider . style . display = 'block' ;
mouseIsOver = true ;
} ) ;
volumeSlider . addEventListener ( 'focusout' , function ( ) {
mouseIsOver = false ;
if ( ! mouseIsDown && mode === 'vertical' ) {
volumeSlider . style . display = 'none' ;
}
} ) ;
volumeSlider . addEventListener ( 'mousedown' , function ( e ) {
handleVolumeMove ( e ) ;
t . globalBind ( 'mousemove.vol' , function ( event ) {
var target = event . target ;
if ( mouseIsDown && ( target === volumeSlider || target . closest ( mode === 'vertical' ? '.' + t . options . classPrefix + 'volume-slider' : '.' + t . options . classPrefix + 'horizontal-volume-slider' ) ) ) {
handleVolumeMove ( event ) ;
}
} ) ;
t . globalBind ( 'mouseup.vol' , function ( ) {
mouseIsDown = false ;
if ( ! mouseIsOver && mode === 'vertical' ) {
volumeSlider . style . display = 'none' ;
}
} ) ;
mouseIsDown = true ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
} ) ;
media . addEventListener ( 'volumechange' , function ( e ) {
if ( ! mouseIsDown ) {
toggleMute ( ) ;
}
updateVolumeSlider ( e ) ;
} ) ;
var rendered = false ;
media . addEventListener ( 'rendererready' , function ( ) {
if ( ! modified ) {
setTimeout ( function ( ) {
rendered = true ;
if ( player . options . startVolume === 0 || media . originalNode . muted ) {
media . setMuted ( true ) ;
}
media . setVolume ( player . options . startVolume ) ;
t . setControlsSize ( ) ;
} , 250 ) ;
}
} ) ;
media . addEventListener ( 'loadedmetadata' , function ( ) {
setTimeout ( function ( ) {
if ( ! modified && ! rendered ) {
if ( player . options . startVolume === 0 || media . originalNode . muted ) {
media . setMuted ( true ) ;
}
2022-09-29 10:21:11 -04:00
if ( player . options . startVolume === 0 ) {
player . options . startVolume = 0 ;
}
2017-08-01 00:43:51 -04:00
media . setVolume ( player . options . startVolume ) ;
t . setControlsSize ( ) ;
}
rendered = false ;
} , 250 ) ;
} ) ;
if ( player . options . startVolume === 0 || media . originalNode . muted ) {
media . setMuted ( true ) ;
2022-09-29 10:21:11 -04:00
if ( player . options . startVolume === 0 ) {
player . options . startVolume = 0 ;
}
2017-08-01 00:43:51 -04:00
toggleMute ( ) ;
}
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'controlsresize' , function ( ) {
2017-08-01 00:43:51 -04:00
toggleMute ( ) ;
} ) ;
}
} ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "2" : 2 , "25" : 25 , "26" : 26 , "27" : 27 , "5" : 5 } ] , 15 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var EN = exports . EN = {
2017-08-12 02:20:44 -04:00
'mejs.plural-form' : 1 ,
'mejs.download-file' : 'Download File' ,
'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/' ,
'mejs.fullscreen' : 'Fullscreen' ,
'mejs.play' : 'Play' ,
'mejs.pause' : 'Pause' ,
'mejs.time-slider' : 'Time Slider' ,
'mejs.time-help-text' : 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.' ,
'mejs.live-broadcast' : 'Live Broadcast' ,
'mejs.volume-help-text' : 'Use Up/Down Arrow keys to increase or decrease volume.' ,
'mejs.unmute' : 'Unmute' ,
'mejs.mute' : 'Mute' ,
'mejs.volume-slider' : 'Volume Slider' ,
'mejs.video-player' : 'Video Player' ,
'mejs.audio-player' : 'Audio Player' ,
'mejs.captions-subtitles' : 'Captions/Subtitles' ,
'mejs.captions-chapters' : 'Chapters' ,
'mejs.none' : 'None' ,
'mejs.afrikaans' : 'Afrikaans' ,
'mejs.albanian' : 'Albanian' ,
'mejs.arabic' : 'Arabic' ,
'mejs.belarusian' : 'Belarusian' ,
'mejs.bulgarian' : 'Bulgarian' ,
'mejs.catalan' : 'Catalan' ,
'mejs.chinese' : 'Chinese' ,
'mejs.chinese-simplified' : 'Chinese (Simplified)' ,
'mejs.chinese-traditional' : 'Chinese (Traditional)' ,
'mejs.croatian' : 'Croatian' ,
'mejs.czech' : 'Czech' ,
'mejs.danish' : 'Danish' ,
'mejs.dutch' : 'Dutch' ,
'mejs.english' : 'English' ,
'mejs.estonian' : 'Estonian' ,
'mejs.filipino' : 'Filipino' ,
'mejs.finnish' : 'Finnish' ,
'mejs.french' : 'French' ,
'mejs.galician' : 'Galician' ,
'mejs.german' : 'German' ,
'mejs.greek' : 'Greek' ,
'mejs.haitian-creole' : 'Haitian Creole' ,
'mejs.hebrew' : 'Hebrew' ,
'mejs.hindi' : 'Hindi' ,
'mejs.hungarian' : 'Hungarian' ,
'mejs.icelandic' : 'Icelandic' ,
'mejs.indonesian' : 'Indonesian' ,
'mejs.irish' : 'Irish' ,
'mejs.italian' : 'Italian' ,
'mejs.japanese' : 'Japanese' ,
'mejs.korean' : 'Korean' ,
'mejs.latvian' : 'Latvian' ,
'mejs.lithuanian' : 'Lithuanian' ,
'mejs.macedonian' : 'Macedonian' ,
'mejs.malay' : 'Malay' ,
'mejs.maltese' : 'Maltese' ,
'mejs.norwegian' : 'Norwegian' ,
'mejs.persian' : 'Persian' ,
'mejs.polish' : 'Polish' ,
'mejs.portuguese' : 'Portuguese' ,
'mejs.romanian' : 'Romanian' ,
'mejs.russian' : 'Russian' ,
'mejs.serbian' : 'Serbian' ,
'mejs.slovak' : 'Slovak' ,
'mejs.slovenian' : 'Slovenian' ,
'mejs.spanish' : 'Spanish' ,
'mejs.swahili' : 'Swahili' ,
'mejs.swedish' : 'Swedish' ,
'mejs.tagalog' : 'Tagalog' ,
'mejs.thai' : 'Thai' ,
'mejs.turkish' : 'Turkish' ,
'mejs.ukrainian' : 'Ukrainian' ,
'mejs.vietnamese' : 'Vietnamese' ,
'mejs.welsh' : 'Welsh' ,
'mejs.yiddish' : 'Yiddish'
2017-08-01 00:43:51 -04:00
} ;
2020-09-29 11:53:06 -04:00
} , { } ] , 16 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . config = undefined ;
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 ; } ;
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 ; } ; } ( ) ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _mediaelement = _dereq _ ( 6 ) ;
2017-08-01 00:43:51 -04:00
var _mediaelement2 = _interopRequireDefault ( _mediaelement ) ;
2020-09-29 11:53:06 -04:00
var _default = _dereq _ ( 17 ) ;
2017-08-01 00:43:51 -04:00
var _default2 = _interopRequireDefault ( _default ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _time = _dereq _ ( 30 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
var dom = _interopRequireWildcard ( _dom ) ;
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) newObj [ key ] = obj [ key ] ; } } newObj . default = obj ; return newObj ; } }
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
_mejs2 . default . mepIndex = 0 ;
_mejs2 . default . players = { } ;
var config = exports . config = {
poster : '' ,
showPosterWhenEnded : false ,
showPosterWhenPaused : false ,
defaultVideoWidth : 480 ,
defaultVideoHeight : 270 ,
videoWidth : - 1 ,
videoHeight : - 1 ,
defaultAudioWidth : 400 ,
defaultAudioHeight : 40 ,
defaultSeekBackwardInterval : function defaultSeekBackwardInterval ( media ) {
return media . getDuration ( ) * 0.05 ;
} ,
defaultSeekForwardInterval : function defaultSeekForwardInterval ( media ) {
return media . getDuration ( ) * 0.05 ;
} ,
setDimensions : true ,
audioWidth : - 1 ,
audioHeight : - 1 ,
loop : false ,
autoRewind : true ,
enableAutosize : true ,
timeFormat : '' ,
alwaysShowHours : false ,
showTimecodeFrameCount : false ,
framesPerSecond : 25 ,
alwaysShowControls : false ,
hideVideoControlsOnLoad : false ,
hideVideoControlsOnPause : false ,
clickToPlayPause : true ,
controlsTimeoutDefault : 1500 ,
controlsTimeoutMouseEnter : 2500 ,
controlsTimeoutMouseLeave : 1000 ,
iPadUseNativeControls : false ,
iPhoneUseNativeControls : false ,
AndroidUseNativeControls : false ,
features : [ 'playpause' , 'current' , 'progress' , 'duration' , 'tracks' , 'volume' , 'fullscreen' ] ,
2017-08-12 02:20:44 -04:00
useDefaultControls : false ,
2017-08-01 00:43:51 -04:00
isVideo : true ,
stretching : 'auto' ,
classPrefix : 'mejs__' ,
enableKeyboard : true ,
pauseOtherPlayers : true ,
secondsDecimalLength : 0 ,
2017-08-12 02:20:44 -04:00
customError : null ,
2017-08-01 00:43:51 -04:00
keyActions : [ {
keys : [ 32 , 179 ] ,
action : function action ( player ) {
if ( ! _constants . IS _FIREFOX ) {
if ( player . paused || player . ended ) {
player . play ( ) ;
} else {
player . pause ( ) ;
}
}
}
} ]
} ;
_mejs2 . default . MepDefaults = config ;
var MediaElementPlayer = function ( ) {
function MediaElementPlayer ( node , o ) {
_classCallCheck ( this , MediaElementPlayer ) ;
var t = this ,
element = typeof node === 'string' ? _document2 . default . getElementById ( node ) : node ;
if ( ! ( t instanceof MediaElementPlayer ) ) {
return new MediaElementPlayer ( element , o ) ;
}
t . node = t . media = element ;
if ( ! t . node ) {
return ;
}
if ( t . media . player ) {
return t . media . player ;
}
t . hasFocus = false ;
t . controlsAreVisible = true ;
t . controlsEnabled = true ;
t . controlsTimer = null ;
t . currentMediaTime = 0 ;
t . proxy = null ;
if ( o === undefined ) {
var options = t . node . getAttribute ( 'data-mejsoptions' ) ;
o = options ? JSON . parse ( options ) : { } ;
}
t . options = Object . assign ( { } , config , o ) ;
if ( t . options . loop && ! t . media . getAttribute ( 'loop' ) ) {
t . media . loop = true ;
t . node . loop = true ;
} else if ( t . media . loop ) {
t . options . loop = true ;
}
if ( ! t . options . timeFormat ) {
t . options . timeFormat = 'mm:ss' ;
if ( t . options . alwaysShowHours ) {
t . options . timeFormat = 'hh:mm:ss' ;
}
if ( t . options . showTimecodeFrameCount ) {
t . options . timeFormat += ':ff' ;
}
}
( 0 , _time . calculateTimeFormat ) ( 0 , t . options , t . options . framesPerSecond || 25 ) ;
t . id = 'mep_' + _mejs2 . default . mepIndex ++ ;
_mejs2 . default . players [ t . id ] = t ;
2017-10-16 14:07:52 -04:00
t . init ( ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
return t ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
_createClass ( MediaElementPlayer , [ {
key : 'getElement' ,
value : function getElement ( element ) {
return element ;
}
} , {
key : 'init' ,
value : function init ( ) {
var t = this ,
playerOptions = Object . assign ( { } , t . options , {
success : function success ( media , domNode ) {
t . _meReady ( media , domNode ) ;
} ,
error : function error ( e ) {
t . _handleError ( e ) ;
}
} ) ,
tagName = t . node . tagName . toLowerCase ( ) ;
t . isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe' ;
t . isVideo = t . isDynamic ? t . options . isVideo : tagName !== 'audio' && t . options . isVideo ;
t . mediaFiles = null ;
t . trackFiles = null ;
if ( _constants . IS _IPAD && t . options . iPadUseNativeControls || _constants . IS _IPHONE && t . options . iPhoneUseNativeControls ) {
t . node . setAttribute ( 'controls' , true ) ;
if ( _constants . IS _IPAD && t . node . getAttribute ( 'autoplay' ) ) {
t . play ( ) ;
}
} else if ( ( t . isVideo || ! t . isVideo && ( t . options . features . length || t . options . useDefaultControls ) ) && ! ( _constants . IS _ANDROID && t . options . AndroidUseNativeControls ) ) {
t . node . removeAttribute ( 'controls' ) ;
var videoPlayerTitle = t . isVideo ? _i18n2 . default . t ( 'mejs.video-player' ) : _i18n2 . default . t ( 'mejs.audio-player' ) ;
var offscreen = _document2 . default . createElement ( 'span' ) ;
offscreen . className = t . options . classPrefix + 'offscreen' ;
offscreen . innerText = videoPlayerTitle ;
t . media . parentNode . insertBefore ( offscreen , t . media ) ;
t . container = _document2 . default . createElement ( 'div' ) ;
t . getElement ( t . container ) . id = t . id ;
t . getElement ( t . container ) . className = t . options . classPrefix + 'container ' + t . options . classPrefix + 'container-keyboard-inactive ' + t . media . className ;
t . getElement ( t . container ) . tabIndex = 0 ;
t . getElement ( t . container ) . setAttribute ( 'role' , 'application' ) ;
t . getElement ( t . container ) . setAttribute ( 'aria-label' , videoPlayerTitle ) ;
t . getElement ( t . container ) . innerHTML = '<div class="' + t . options . classPrefix + 'inner">' + ( '<div class="' + t . options . classPrefix + 'mediaelement"></div>' ) + ( '<div class="' + t . options . classPrefix + 'layers"></div>' ) + ( '<div class="' + t . options . classPrefix + 'controls"></div>' ) + '</div>' ;
t . getElement ( t . container ) . addEventListener ( 'focus' , function ( e ) {
if ( ! t . controlsAreVisible && ! t . hasFocus && t . controlsEnabled ) {
t . showControls ( true ) ;
var btnSelector = ( 0 , _general . isNodeAfter ) ( e . relatedTarget , t . getElement ( t . container ) ) ? '.' + t . options . classPrefix + 'controls .' + t . options . classPrefix + 'button:last-child > button' : '.' + t . options . classPrefix + 'playpause-button > button' ,
button = t . getElement ( t . container ) . querySelector ( btnSelector ) ;
button . focus ( ) ;
}
} ) ;
t . node . parentNode . insertBefore ( t . getElement ( t . container ) , t . node ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( ! t . options . features . length && ! t . options . useDefaultControls ) {
t . getElement ( t . container ) . style . background = 'transparent' ;
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'controls' ) . style . display = 'none' ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( t . isVideo && t . options . stretching === 'fill' && ! dom . hasClass ( t . getElement ( t . container ) . parentNode , t . options . classPrefix + 'fill-container' ) ) {
t . outerContainer = t . media . parentNode ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var wrapper = _document2 . default . createElement ( 'div' ) ;
wrapper . className = t . options . classPrefix + 'fill-container' ;
t . getElement ( t . container ) . parentNode . insertBefore ( wrapper , t . getElement ( t . container ) ) ;
wrapper . appendChild ( t . getElement ( t . container ) ) ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
if ( _constants . IS _ANDROID ) {
dom . addClass ( t . getElement ( t . container ) , t . options . classPrefix + 'android' ) ;
}
if ( _constants . IS _IOS ) {
dom . addClass ( t . getElement ( t . container ) , t . options . classPrefix + 'ios' ) ;
}
if ( _constants . IS _IPAD ) {
dom . addClass ( t . getElement ( t . container ) , t . options . classPrefix + 'ipad' ) ;
}
if ( _constants . IS _IPHONE ) {
dom . addClass ( t . getElement ( t . container ) , t . options . classPrefix + 'iphone' ) ;
}
dom . addClass ( t . getElement ( t . container ) , t . isVideo ? t . options . classPrefix + 'video' : t . options . classPrefix + 'audio' ) ;
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'mediaelement' ) . appendChild ( t . node ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
t . media . player = t ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
t . controls = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'controls' ) ;
t . layers = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'layers' ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var tagType = t . isVideo ? 'video' : 'audio' ,
capsTagName = tagType . substring ( 0 , 1 ) . toUpperCase ( ) + tagType . substring ( 1 ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( t . options [ tagType + 'Width' ] > 0 || t . options [ tagType + 'Width' ] . toString ( ) . indexOf ( '%' ) > - 1 ) {
t . width = t . options [ tagType + 'Width' ] ;
} else if ( t . node . style . width !== '' && t . node . style . width !== null ) {
t . width = t . node . style . width ;
} else if ( t . node . getAttribute ( 'width' ) ) {
t . width = t . node . getAttribute ( 'width' ) ;
} else {
t . width = t . options [ 'default' + capsTagName + 'Width' ] ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
if ( t . options [ tagType + 'Height' ] > 0 || t . options [ tagType + 'Height' ] . toString ( ) . indexOf ( '%' ) > - 1 ) {
t . height = t . options [ tagType + 'Height' ] ;
} else if ( t . node . style . height !== '' && t . node . style . height !== null ) {
t . height = t . node . style . height ;
} else if ( t . node . getAttribute ( 'height' ) ) {
t . height = t . node . getAttribute ( 'height' ) ;
} else {
t . height = t . options [ 'default' + capsTagName + 'Height' ] ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
t . initialAspectRatio = t . height >= t . width ? t . width / t . height : t . height / t . width ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
t . setPlayerSize ( t . width , t . height ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
playerOptions . pluginWidth = t . width ;
playerOptions . pluginHeight = t . height ;
} else if ( ! t . isVideo && ! t . options . features . length && ! t . options . useDefaultControls ) {
t . node . style . display = 'none' ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
_mejs2 . default . MepDefaults = playerOptions ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
new _mediaelement2 . default ( t . media , playerOptions , t . mediaFiles ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . container ) !== undefined && t . options . features . length && t . controlsAreVisible && ! t . options . hideVideoControlsOnLoad ) {
var event = ( 0 , _general . createEvent ) ( 'controlsshown' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
}
}
2017-10-16 14:07:52 -04:00
} , {
2017-08-01 00:43:51 -04:00
key : 'showControls' ,
value : function showControls ( doAnimation ) {
var t = this ;
doAnimation = doAnimation === undefined || doAnimation ;
if ( t . controlsAreVisible || ! t . isVideo ) {
return ;
}
if ( doAnimation ) {
( function ( ) {
2017-10-16 14:07:52 -04:00
dom . fadeIn ( t . getElement ( t . controls ) , 200 , function ( ) {
dom . removeClass ( t . getElement ( t . controls ) , t . options . classPrefix + 'offscreen' ) ;
var event = ( 0 , _general . createEvent ) ( 'controlsshown' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ) ;
2017-10-16 14:07:52 -04:00
var controls = t . getElement ( t . container ) . querySelectorAll ( '.' + t . options . classPrefix + 'control' ) ;
2017-08-01 00:43:51 -04:00
var _loop = function _loop ( i , total ) {
dom . fadeIn ( controls [ i ] , 200 , function ( ) {
dom . removeClass ( controls [ i ] , t . options . classPrefix + 'offscreen' ) ;
} ) ;
} ;
for ( var i = 0 , total = controls . length ; i < total ; i ++ ) {
_loop ( i , total ) ;
}
} ) ( ) ;
} else {
2017-10-16 14:07:52 -04:00
dom . removeClass ( t . getElement ( t . controls ) , t . options . classPrefix + 'offscreen' ) ;
t . getElement ( t . controls ) . style . display = '' ;
t . getElement ( t . controls ) . style . opacity = 1 ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var controls = t . getElement ( t . container ) . querySelectorAll ( '.' + t . options . classPrefix + 'control' ) ;
2017-08-01 00:43:51 -04:00
for ( var i = 0 , total = controls . length ; i < total ; i ++ ) {
dom . removeClass ( controls [ i ] , t . options . classPrefix + 'offscreen' ) ;
controls [ i ] . style . display = '' ;
}
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'controlsshown' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
}
t . controlsAreVisible = true ;
t . setControlsSize ( ) ;
}
} , {
key : 'hideControls' ,
value : function hideControls ( doAnimation , forceHide ) {
var t = this ;
doAnimation = doAnimation === undefined || doAnimation ;
if ( forceHide !== true && ( ! t . controlsAreVisible || t . options . alwaysShowControls || t . paused && t . readyState === 4 && ( ! t . options . hideVideoControlsOnLoad && t . currentTime <= 0 || ! t . options . hideVideoControlsOnPause && t . currentTime > 0 ) || t . isVideo && ! t . options . hideVideoControlsOnLoad && ! t . readyState || t . ended ) ) {
return ;
}
if ( doAnimation ) {
( function ( ) {
2017-10-16 14:07:52 -04:00
dom . fadeOut ( t . getElement ( t . controls ) , 200 , function ( ) {
dom . addClass ( t . getElement ( t . controls ) , t . options . classPrefix + 'offscreen' ) ;
t . getElement ( t . controls ) . style . display = '' ;
var event = ( 0 , _general . createEvent ) ( 'controlshidden' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ) ;
2017-10-16 14:07:52 -04:00
var controls = t . getElement ( t . container ) . querySelectorAll ( '.' + t . options . classPrefix + 'control' ) ;
2017-08-01 00:43:51 -04:00
var _loop2 = function _loop2 ( i , total ) {
dom . fadeOut ( controls [ i ] , 200 , function ( ) {
dom . addClass ( controls [ i ] , t . options . classPrefix + 'offscreen' ) ;
controls [ i ] . style . display = '' ;
} ) ;
} ;
for ( var i = 0 , total = controls . length ; i < total ; i ++ ) {
_loop2 ( i , total ) ;
}
} ) ( ) ;
} else {
2017-10-16 14:07:52 -04:00
dom . addClass ( t . getElement ( t . controls ) , t . options . classPrefix + 'offscreen' ) ;
t . getElement ( t . controls ) . style . display = '' ;
t . getElement ( t . controls ) . style . opacity = 0 ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var controls = t . getElement ( t . container ) . querySelectorAll ( '.' + t . options . classPrefix + 'control' ) ;
2017-08-01 00:43:51 -04:00
for ( var i = 0 , total = controls . length ; i < total ; i ++ ) {
dom . addClass ( controls [ i ] , t . options . classPrefix + 'offscreen' ) ;
controls [ i ] . style . display = '' ;
}
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'controlshidden' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
}
t . controlsAreVisible = false ;
}
} , {
key : 'startControlsTimer' ,
value : function startControlsTimer ( timeout ) {
var t = this ;
timeout = typeof timeout !== 'undefined' ? timeout : t . options . controlsTimeoutDefault ;
t . killControlsTimer ( 'start' ) ;
t . controlsTimer = setTimeout ( function ( ) {
t . hideControls ( ) ;
t . killControlsTimer ( 'hide' ) ;
} , timeout ) ;
}
} , {
key : 'killControlsTimer' ,
value : function killControlsTimer ( ) {
var t = this ;
if ( t . controlsTimer !== null ) {
clearTimeout ( t . controlsTimer ) ;
delete t . controlsTimer ;
t . controlsTimer = null ;
}
}
} , {
key : 'disableControls' ,
value : function disableControls ( ) {
var t = this ;
t . killControlsTimer ( ) ;
t . controlsEnabled = false ;
t . hideControls ( false , true ) ;
}
} , {
key : 'enableControls' ,
value : function enableControls ( ) {
var t = this ;
t . controlsEnabled = true ;
t . showControls ( false ) ;
}
} , {
key : '_setDefaultPlayer' ,
value : function _setDefaultPlayer ( ) {
var t = this ;
if ( t . proxy ) {
t . proxy . pause ( ) ;
}
t . proxy = new _default2 . default ( t ) ;
t . media . addEventListener ( 'loadedmetadata' , function ( ) {
if ( t . getCurrentTime ( ) > 0 && t . currentMediaTime > 0 ) {
t . setCurrentTime ( t . currentMediaTime ) ;
if ( ! _constants . IS _IOS && ! _constants . IS _ANDROID ) {
t . play ( ) ;
}
}
} ) ;
}
} , {
key : '_meReady' ,
value : function _meReady ( media , domNode ) {
var t = this ,
autoplayAttr = domNode . getAttribute ( 'autoplay' ) ,
autoplay = ! ( autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false' ) ,
2022-09-29 10:21:11 -04:00
isNative = media . rendererName !== null && /(native|html5)/i . test ( media . rendererName ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . controls ) ) {
2017-08-01 00:43:51 -04:00
t . enableControls ( ) ;
}
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . container ) && t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'overlay-play' ) ) {
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'overlay-play' ) . style . display = '' ;
2017-08-01 00:43:51 -04:00
}
if ( t . created ) {
return ;
}
t . created = true ;
t . media = media ;
t . domNode = domNode ;
if ( ! ( _constants . IS _ANDROID && t . options . AndroidUseNativeControls ) && ! ( _constants . IS _IPAD && t . options . iPadUseNativeControls ) && ! ( _constants . IS _IPHONE && t . options . iPhoneUseNativeControls ) ) {
2017-08-12 02:20:44 -04:00
if ( ! t . isVideo && ! t . options . features . length && ! t . options . useDefaultControls ) {
2017-08-01 00:43:51 -04:00
if ( autoplay && isNative ) {
t . play ( ) ;
}
if ( t . options . success ) {
if ( typeof t . options . success === 'string' ) {
_window2 . default [ t . options . success ] ( t . media , t . domNode , t ) ;
} else {
t . options . success ( t . media , t . domNode , t ) ;
}
}
return ;
}
t . featurePosition = { } ;
2017-08-12 02:20:44 -04:00
t . _setDefaultPlayer ( ) ;
2017-10-16 14:07:52 -04:00
t . buildposter ( t , t . getElement ( t . controls ) , t . getElement ( t . layers ) , t . media ) ;
t . buildkeyboard ( t , t . getElement ( t . controls ) , t . getElement ( t . layers ) , t . media ) ;
t . buildoverlays ( t , t . getElement ( t . controls ) , t . getElement ( t . layers ) , t . media ) ;
2017-08-12 02:20:44 -04:00
if ( t . options . useDefaultControls ) {
var defaultControls = [ 'playpause' , 'current' , 'progress' , 'duration' , 'tracks' , 'volume' , 'fullscreen' ] ;
t . options . features = defaultControls . concat ( t . options . features . filter ( function ( item ) {
return defaultControls . indexOf ( item ) === - 1 ;
} ) ) ;
}
2017-10-16 14:07:52 -04:00
t . buildfeatures ( t , t . getElement ( t . controls ) , t . getElement ( t . layers ) , t . media ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'controlsready' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
t . setPlayerSize ( t . width , t . height ) ;
t . setControlsSize ( ) ;
if ( t . isVideo ) {
t . clickToPlayPauseCallback = function ( ) {
if ( t . options . clickToPlayPause ) {
2017-10-16 14:07:52 -04:00
var button = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'overlay-button' ) ,
2017-08-01 00:43:51 -04:00
pressed = button . getAttribute ( 'aria-pressed' ) ;
if ( t . paused && pressed ) {
t . pause ( ) ;
} else if ( t . paused ) {
t . play ( ) ;
} else {
t . pause ( ) ;
}
button . setAttribute ( 'aria-pressed' , ! pressed ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . focus ( ) ;
2017-08-01 00:43:51 -04:00
}
} ;
t . createIframeLayer ( ) ;
t . media . addEventListener ( 'click' , t . clickToPlayPauseCallback ) ;
if ( ( _constants . IS _ANDROID || _constants . IS _IOS ) && ! t . options . alwaysShowControls ) {
t . node . addEventListener ( 'touchstart' , function ( ) {
if ( t . controlsAreVisible ) {
t . hideControls ( false ) ;
} else {
if ( t . controlsEnabled ) {
t . showControls ( false ) ;
}
}
2017-10-16 14:07:52 -04:00
} , _constants . SUPPORT _PASSIVE _EVENT ? { passive : true } : false ) ;
2017-08-01 00:43:51 -04:00
} else {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'mouseenter' , function ( ) {
2017-08-01 00:43:51 -04:00
if ( t . controlsEnabled ) {
if ( ! t . options . alwaysShowControls ) {
t . killControlsTimer ( 'enter' ) ;
t . showControls ( ) ;
t . startControlsTimer ( t . options . controlsTimeoutMouseEnter ) ;
}
}
} ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'mousemove' , function ( ) {
2017-08-01 00:43:51 -04:00
if ( t . controlsEnabled ) {
if ( ! t . controlsAreVisible ) {
t . showControls ( ) ;
}
if ( ! t . options . alwaysShowControls ) {
t . startControlsTimer ( t . options . controlsTimeoutMouseEnter ) ;
}
}
} ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'mouseleave' , function ( ) {
2017-08-01 00:43:51 -04:00
if ( t . controlsEnabled ) {
if ( ! t . paused && ! t . options . alwaysShowControls ) {
t . startControlsTimer ( t . options . controlsTimeoutMouseLeave ) ;
}
}
} ) ;
}
if ( t . options . hideVideoControlsOnLoad ) {
t . hideControls ( false ) ;
}
if ( t . options . enableAutosize ) {
t . media . addEventListener ( 'loadedmetadata' , function ( e ) {
var target = e !== undefined ? e . detail . target || e . target : t . media ;
2017-08-28 15:29:47 -04:00
if ( t . options . videoHeight <= 0 && ! t . domNode . getAttribute ( 'height' ) && ! t . domNode . style . height && target !== null && ! isNaN ( target . videoHeight ) ) {
2017-08-01 00:43:51 -04:00
t . setPlayerSize ( target . videoWidth , target . videoHeight ) ;
t . setControlsSize ( ) ;
t . media . setSize ( target . videoWidth , target . videoHeight ) ;
}
} ) ;
}
}
t . media . addEventListener ( 'play' , function ( ) {
t . hasFocus = true ;
for ( var playerIndex in _mejs2 . default . players ) {
if ( _mejs2 . default . players . hasOwnProperty ( playerIndex ) ) {
var p = _mejs2 . default . players [ playerIndex ] ;
2020-09-29 11:53:06 -04:00
if ( p . id !== t . id && t . options . pauseOtherPlayers && ! p . paused && ! p . ended && p . options . ignorePauseOtherPlayersOption !== true ) {
2017-08-01 00:43:51 -04:00
p . pause ( ) ;
p . hasFocus = false ;
}
}
}
if ( ! ( _constants . IS _ANDROID || _constants . IS _IOS ) && ! t . options . alwaysShowControls && t . isVideo ) {
t . hideControls ( ) ;
}
} ) ;
t . media . addEventListener ( 'ended' , function ( ) {
if ( t . options . autoRewind ) {
try {
t . setCurrentTime ( 0 ) ;
setTimeout ( function ( ) {
2017-10-16 14:07:52 -04:00
var loadingElement = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'overlay-loading' ) ;
2017-08-01 00:43:51 -04:00
if ( loadingElement && loadingElement . parentNode ) {
loadingElement . parentNode . style . display = 'none' ;
}
} , 20 ) ;
} catch ( exp ) {
}
}
if ( typeof t . media . renderer . stop === 'function' ) {
t . media . renderer . stop ( ) ;
} else {
t . pause ( ) ;
}
if ( t . setProgressRail ) {
t . setProgressRail ( ) ;
}
if ( t . setCurrentRail ) {
t . setCurrentRail ( ) ;
}
if ( t . options . loop ) {
t . play ( ) ;
} else if ( ! t . options . alwaysShowControls && t . controlsEnabled ) {
t . showControls ( ) ;
}
} ) ;
t . media . addEventListener ( 'loadedmetadata' , function ( ) {
( 0 , _time . calculateTimeFormat ) ( t . getDuration ( ) , t . options , t . options . framesPerSecond || 25 ) ;
if ( t . updateDuration ) {
t . updateDuration ( ) ;
}
if ( t . updateCurrent ) {
t . updateCurrent ( ) ;
}
if ( ! t . isFullScreen ) {
t . setPlayerSize ( t . width , t . height ) ;
t . setControlsSize ( ) ;
}
} ) ;
var duration = null ;
t . media . addEventListener ( 'timeupdate' , function ( ) {
if ( ! isNaN ( t . getDuration ( ) ) && duration !== t . getDuration ( ) ) {
duration = t . getDuration ( ) ;
( 0 , _time . calculateTimeFormat ) ( duration , t . options , t . options . framesPerSecond || 25 ) ;
if ( t . updateDuration ) {
t . updateDuration ( ) ;
}
if ( t . updateCurrent ) {
t . updateCurrent ( ) ;
}
t . setControlsSize ( ) ;
}
} ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'click' , function ( e ) {
2017-08-01 00:43:51 -04:00
dom . addClass ( e . currentTarget , t . options . classPrefix + 'container-keyboard-inactive' ) ;
} ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'focusin' , function ( e ) {
2017-08-01 00:43:51 -04:00
dom . removeClass ( e . currentTarget , t . options . classPrefix + 'container-keyboard-inactive' ) ;
if ( t . isVideo && ! _constants . IS _ANDROID && ! _constants . IS _IOS && t . controlsEnabled && ! t . options . alwaysShowControls ) {
t . killControlsTimer ( 'enter' ) ;
t . showControls ( ) ;
t . startControlsTimer ( t . options . controlsTimeoutMouseEnter ) ;
}
} ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'focusout' , function ( e ) {
2017-08-01 00:43:51 -04:00
setTimeout ( function ( ) {
if ( e . relatedTarget ) {
if ( t . keyboardAction && ! e . relatedTarget . closest ( '.' + t . options . classPrefix + 'container' ) ) {
t . keyboardAction = false ;
if ( t . isVideo && ! t . options . alwaysShowControls && ! t . paused ) {
t . startControlsTimer ( t . options . controlsTimeoutMouseLeave ) ;
}
}
}
} , 0 ) ;
} ) ;
setTimeout ( function ( ) {
t . setPlayerSize ( t . width , t . height ) ;
t . setControlsSize ( ) ;
} , 0 ) ;
t . globalResizeCallback = function ( ) {
if ( ! ( t . isFullScreen || _constants . HAS _TRUE _NATIVE _FULLSCREEN && _document2 . default . webkitIsFullScreen ) ) {
t . setPlayerSize ( t . width , t . height ) ;
}
t . setControlsSize ( ) ;
} ;
t . globalBind ( 'resize' , t . globalResizeCallback ) ;
}
if ( autoplay && isNative ) {
t . play ( ) ;
}
if ( t . options . success ) {
if ( typeof t . options . success === 'string' ) {
_window2 . default [ t . options . success ] ( t . media , t . domNode , t ) ;
} else {
t . options . success ( t . media , t . domNode , t ) ;
}
}
}
} , {
key : '_handleError' ,
value : function _handleError ( e , media , node ) {
var t = this ,
2017-10-16 14:07:52 -04:00
play = t . getElement ( t . layers ) . querySelector ( '.' + t . options . classPrefix + 'overlay-play' ) ;
2017-08-01 00:43:51 -04:00
if ( play ) {
play . style . display = 'none' ;
}
if ( t . options . error ) {
t . options . error ( e , media , node ) ;
}
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'cannotplay' ) ) {
t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'cannotplay' ) . remove ( ) ;
2017-08-01 00:43:51 -04:00
}
var errorContainer = _document2 . default . createElement ( 'div' ) ;
errorContainer . className = t . options . classPrefix + 'cannotplay' ;
errorContainer . style . width = '100%' ;
errorContainer . style . height = '100%' ;
2017-08-12 02:20:44 -04:00
var errorContent = typeof t . options . customError === 'function' ? t . options . customError ( t . media , t . media . originalNode ) : t . options . customError ,
imgError = '' ;
2017-08-01 00:43:51 -04:00
2017-08-28 15:29:47 -04:00
if ( ! errorContent ) {
2017-08-01 00:43:51 -04:00
var poster = t . media . originalNode . getAttribute ( 'poster' ) ;
if ( poster ) {
2017-08-12 02:20:44 -04:00
imgError = '<img src="' + poster + '" alt="' + _mejs2 . default . i18n . t ( 'mejs.download-file' ) + '">' ;
2017-08-01 00:43:51 -04:00
}
if ( e . message ) {
2017-08-28 15:29:47 -04:00
errorContent = '<p>' + e . message + '</p>' ;
2017-08-01 00:43:51 -04:00
}
if ( e . urls ) {
for ( var i = 0 , total = e . urls . length ; i < total ; i ++ ) {
var url = e . urls [ i ] ;
errorContent += '<a href="' + url . src + '" data-type="' + url . type + '"><span>' + _mejs2 . default . i18n . t ( 'mejs.download-file' ) + ': ' + url . src + '</span></a>' ;
}
}
}
2017-10-16 14:07:52 -04:00
if ( errorContent && t . getElement ( t . layers ) . querySelector ( '.' + t . options . classPrefix + 'overlay-error' ) ) {
2017-08-01 00:43:51 -04:00
errorContainer . innerHTML = errorContent ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . layers ) . querySelector ( '.' + t . options . classPrefix + 'overlay-error' ) . innerHTML = '' + imgError + errorContainer . outerHTML ;
t . getElement ( t . layers ) . querySelector ( '.' + t . options . classPrefix + 'overlay-error' ) . parentNode . style . display = 'block' ;
2017-08-01 00:43:51 -04:00
}
2017-08-28 15:29:47 -04:00
if ( t . controlsEnabled ) {
t . disableControls ( ) ;
}
2017-08-01 00:43:51 -04:00
}
} , {
key : 'setPlayerSize' ,
value : function setPlayerSize ( width , height ) {
var t = this ;
if ( ! t . options . setDimensions ) {
return false ;
}
if ( typeof width !== 'undefined' ) {
t . width = width ;
}
if ( typeof height !== 'undefined' ) {
t . height = height ;
}
switch ( t . options . stretching ) {
case 'fill' :
if ( t . isVideo ) {
t . setFillMode ( ) ;
} else {
t . setDimensions ( t . width , t . height ) ;
}
break ;
case 'responsive' :
t . setResponsiveMode ( ) ;
break ;
case 'none' :
t . setDimensions ( t . width , t . height ) ;
break ;
default :
if ( t . hasFluidMode ( ) === true ) {
t . setResponsiveMode ( ) ;
} else {
t . setDimensions ( t . width , t . height ) ;
}
break ;
}
}
} , {
key : 'hasFluidMode' ,
value : function hasFluidMode ( ) {
var t = this ;
return t . height . toString ( ) . indexOf ( '%' ) !== - 1 || t . node && t . node . style . maxWidth && t . node . style . maxWidth !== 'none' && t . node . style . maxWidth !== t . width || t . node && t . node . currentStyle && t . node . currentStyle . maxWidth === '100%' ;
}
} , {
key : 'setResponsiveMode' ,
value : function setResponsiveMode ( ) {
var t = this ,
parent = function ( ) {
var parentEl = void 0 ,
2017-10-16 14:07:52 -04:00
el = t . getElement ( t . container ) ;
2017-08-01 00:43:51 -04:00
while ( el ) {
try {
if ( _constants . IS _FIREFOX && el . tagName . toLowerCase ( ) === 'html' && _window2 . default . self !== _window2 . default . top && _window2 . default . frameElement !== null ) {
return _window2 . default . frameElement ;
} else {
parentEl = el . parentElement ;
}
} catch ( e ) {
parentEl = el . parentElement ;
}
if ( parentEl && dom . visible ( parentEl ) ) {
return parentEl ;
}
el = parentEl ;
}
return null ;
} ( ) ,
parentStyles = parent ? getComputedStyle ( parent , null ) : getComputedStyle ( _document2 . default . body , null ) ,
nativeWidth = function ( ) {
if ( t . isVideo ) {
2019-10-08 12:06:02 -04:00
if ( t . node . videoWidth && t . node . videoWidth > 0 ) {
return t . node . videoWidth ;
2017-08-01 00:43:51 -04:00
} else if ( t . node . getAttribute ( 'width' ) ) {
return t . node . getAttribute ( 'width' ) ;
} else {
return t . options . defaultVideoWidth ;
}
} else {
return t . options . defaultAudioWidth ;
}
} ( ) ,
nativeHeight = function ( ) {
if ( t . isVideo ) {
2019-10-08 12:06:02 -04:00
if ( t . node . videoHeight && t . node . videoHeight > 0 ) {
return t . node . videoHeight ;
2017-08-01 00:43:51 -04:00
} else if ( t . node . getAttribute ( 'height' ) ) {
return t . node . getAttribute ( 'height' ) ;
} else {
return t . options . defaultVideoHeight ;
}
} else {
return t . options . defaultAudioHeight ;
}
} ( ) ,
aspectRatio = function ( ) {
2022-09-29 10:21:11 -04:00
if ( ! t . options . enableAutosize ) {
return t . initialAspectRatio ;
}
2017-08-01 00:43:51 -04:00
var ratio = 1 ;
if ( ! t . isVideo ) {
return ratio ;
}
2019-10-08 12:06:02 -04:00
if ( t . node . videoWidth && t . node . videoWidth > 0 && t . node . videoHeight && t . node . videoHeight > 0 ) {
ratio = t . height >= t . width ? t . node . videoWidth / t . node . videoHeight : t . node . videoHeight / t . node . videoWidth ;
2017-08-01 00:43:51 -04:00
} else {
ratio = t . initialAspectRatio ;
}
if ( isNaN ( ratio ) || ratio < 0.01 || ratio > 100 ) {
ratio = 1 ;
}
return ratio ;
} ( ) ,
parentHeight = parseFloat ( parentStyles . height ) ;
var newHeight = void 0 ,
parentWidth = parseFloat ( parentStyles . width ) ;
if ( t . isVideo ) {
if ( t . height === '100%' ) {
newHeight = parseFloat ( parentWidth * nativeHeight / nativeWidth , 10 ) ;
} else {
newHeight = t . height >= t . width ? parseFloat ( parentWidth / aspectRatio , 10 ) : parseFloat ( parentWidth * aspectRatio , 10 ) ;
}
} else {
newHeight = nativeHeight ;
}
if ( isNaN ( newHeight ) ) {
newHeight = parentHeight ;
}
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . container ) . parentNode . length > 0 && t . getElement ( t . container ) . parentNode . tagName . toLowerCase ( ) === 'body' ) {
2017-08-01 00:43:51 -04:00
parentWidth = _window2 . default . innerWidth || _document2 . default . documentElement . clientWidth || _document2 . default . body . clientWidth ;
newHeight = _window2 . default . innerHeight || _document2 . default . documentElement . clientHeight || _document2 . default . body . clientHeight ;
}
if ( newHeight && parentWidth ) {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . width = parentWidth + 'px' ;
t . getElement ( t . container ) . style . height = newHeight + 'px' ;
2017-08-01 00:43:51 -04:00
t . node . style . width = '100%' ;
t . node . style . height = '100%' ;
if ( t . isVideo && t . media . setSize ) {
t . media . setSize ( parentWidth , newHeight ) ;
}
2017-10-16 14:07:52 -04:00
var layerChildren = t . getElement ( t . layers ) . children ;
2017-08-01 00:43:51 -04:00
for ( var i = 0 , total = layerChildren . length ; i < total ; i ++ ) {
layerChildren [ i ] . style . width = '100%' ;
layerChildren [ i ] . style . height = '100%' ;
}
}
}
} , {
key : 'setFillMode' ,
value : function setFillMode ( ) {
var t = this ;
2017-10-16 14:07:52 -04:00
var isIframe = _window2 . default . self !== _window2 . default . top && _window2 . default . frameElement !== null ;
var parent = function ( ) {
var parentEl = void 0 ,
el = t . getElement ( t . container ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
while ( el ) {
try {
if ( _constants . IS _FIREFOX && el . tagName . toLowerCase ( ) === 'html' && _window2 . default . self !== _window2 . default . top && _window2 . default . frameElement !== null ) {
return _window2 . default . frameElement ;
} else {
parentEl = el . parentElement ;
}
} catch ( e ) {
parentEl = el . parentElement ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( parentEl && dom . visible ( parentEl ) ) {
return parentEl ;
}
el = parentEl ;
2017-08-01 00:43:51 -04:00
}
2017-10-16 14:07:52 -04:00
return null ;
} ( ) ;
var parentStyles = parent ? getComputedStyle ( parent , null ) : getComputedStyle ( _document2 . default . body , null ) ;
2017-08-01 00:43:51 -04:00
if ( t . node . style . height !== 'none' && t . node . style . height !== t . height ) {
t . node . style . height = 'auto' ;
}
if ( t . node . style . maxWidth !== 'none' && t . node . style . maxWidth !== t . width ) {
t . node . style . maxWidth = 'none' ;
}
if ( t . node . style . maxHeight !== 'none' && t . node . style . maxHeight !== t . height ) {
t . node . style . maxHeight = 'none' ;
}
if ( t . node . currentStyle ) {
if ( t . node . currentStyle . height === '100%' ) {
t . node . currentStyle . height = 'auto' ;
}
if ( t . node . currentStyle . maxWidth === '100%' ) {
t . node . currentStyle . maxWidth = 'none' ;
}
if ( t . node . currentStyle . maxHeight === '100%' ) {
t . node . currentStyle . maxHeight = 'none' ;
}
}
if ( ! isIframe && ! parseFloat ( parentStyles . width ) ) {
parent . style . width = t . media . offsetWidth + 'px' ;
}
if ( ! isIframe && ! parseFloat ( parentStyles . height ) ) {
parent . style . height = t . media . offsetHeight + 'px' ;
}
parentStyles = getComputedStyle ( parent ) ;
var parentWidth = parseFloat ( parentStyles . width ) ,
parentHeight = parseFloat ( parentStyles . height ) ;
t . setDimensions ( '100%' , '100%' ) ;
2017-10-16 14:07:52 -04:00
var poster = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'poster>img' ) ;
2017-08-01 00:43:51 -04:00
if ( poster ) {
poster . style . display = '' ;
}
2017-10-16 14:07:52 -04:00
var targetElement = t . getElement ( t . container ) . querySelectorAll ( 'object, embed, iframe, video' ) ,
2017-08-01 00:43:51 -04:00
initHeight = t . height ,
initWidth = t . width ,
scaleX1 = parentWidth ,
scaleY1 = initHeight * parentWidth / initWidth ,
scaleX2 = initWidth * parentHeight / initHeight ,
scaleY2 = parentHeight ,
bScaleOnWidth = scaleX2 > parentWidth === false ,
finalWidth = bScaleOnWidth ? Math . floor ( scaleX1 ) : Math . floor ( scaleX2 ) ,
finalHeight = bScaleOnWidth ? Math . floor ( scaleY1 ) : Math . floor ( scaleY2 ) ,
width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px' ,
height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px' ;
for ( var i = 0 , total = targetElement . length ; i < total ; i ++ ) {
targetElement [ i ] . style . height = height ;
targetElement [ i ] . style . width = width ;
if ( t . media . setSize ) {
t . media . setSize ( width , height ) ;
}
targetElement [ i ] . style . marginLeft = Math . floor ( ( parentWidth - finalWidth ) / 2 ) + 'px' ;
targetElement [ i ] . style . marginTop = 0 ;
}
}
} , {
key : 'setDimensions' ,
value : function setDimensions ( width , height ) {
var t = this ;
width = ( 0 , _general . isString ) ( width ) && width . indexOf ( '%' ) > - 1 ? width : parseFloat ( width ) + 'px' ;
height = ( 0 , _general . isString ) ( height ) && height . indexOf ( '%' ) > - 1 ? height : parseFloat ( height ) + 'px' ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . width = width ;
t . getElement ( t . container ) . style . height = height ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var layers = t . getElement ( t . layers ) . children ;
2017-08-01 00:43:51 -04:00
for ( var i = 0 , total = layers . length ; i < total ; i ++ ) {
layers [ i ] . style . width = width ;
layers [ i ] . style . height = height ;
}
}
} , {
key : 'setControlsSize' ,
value : function setControlsSize ( ) {
var t = this ;
2017-10-16 14:07:52 -04:00
if ( ! dom . visible ( t . getElement ( t . container ) ) ) {
2017-08-01 00:43:51 -04:00
return ;
}
if ( t . rail && dom . visible ( t . rail ) ) {
var totalStyles = t . total ? getComputedStyle ( t . total , null ) : null ,
totalMargin = totalStyles ? parseFloat ( totalStyles . marginLeft ) + parseFloat ( totalStyles . marginRight ) : 0 ,
railStyles = getComputedStyle ( t . rail ) ,
railMargin = parseFloat ( railStyles . marginLeft ) + parseFloat ( railStyles . marginRight ) ;
var siblingsWidth = 0 ;
var siblings = dom . siblings ( t . rail , function ( el ) {
return el !== t . rail ;
} ) ,
total = siblings . length ;
for ( var i = 0 ; i < total ; i ++ ) {
siblingsWidth += siblings [ i ] . offsetWidth ;
}
siblingsWidth += totalMargin + ( totalMargin === 0 ? railMargin * 2 : railMargin ) + 1 ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . minWidth = siblingsWidth + 'px' ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var event = ( 0 , _general . createEvent ) ( 'controlsresize' , t . getElement ( t . container ) ) ;
t . getElement ( t . container ) . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} else {
2017-10-16 14:07:52 -04:00
var children = t . getElement ( t . controls ) . children ;
2017-08-01 00:43:51 -04:00
var minWidth = 0 ;
for ( var _i = 0 , _total = children . length ; _i < _total ; _i ++ ) {
minWidth += children [ _i ] . offsetWidth ;
}
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . style . minWidth = minWidth + 'px' ;
2017-08-01 00:43:51 -04:00
}
}
} , {
key : 'addControlElement' ,
value : function addControlElement ( element , key ) {
var t = this ;
if ( t . featurePosition [ key ] !== undefined ) {
2017-10-16 14:07:52 -04:00
var child = t . getElement ( t . controls ) . children [ t . featurePosition [ key ] - 1 ] ;
2017-08-01 00:43:51 -04:00
child . parentNode . insertBefore ( element , child . nextSibling ) ;
} else {
2017-10-16 14:07:52 -04:00
t . getElement ( t . controls ) . appendChild ( element ) ;
var children = t . getElement ( t . controls ) . children ;
2017-08-01 00:43:51 -04:00
for ( var i = 0 , total = children . length ; i < total ; i ++ ) {
if ( element === children [ i ] ) {
t . featurePosition [ key ] = i ;
break ;
}
}
}
}
} , {
key : 'createIframeLayer' ,
value : function createIframeLayer ( ) {
var t = this ;
if ( t . isVideo && t . media . rendererName !== null && t . media . rendererName . indexOf ( 'iframe' ) > - 1 && ! _document2 . default . getElementById ( t . media . id + '-iframe-overlay' ) ) {
var layer = _document2 . default . createElement ( 'div' ) ,
target = _document2 . default . getElementById ( t . media . id + '_' + t . media . rendererName ) ;
layer . id = t . media . id + '-iframe-overlay' ;
layer . className = t . options . classPrefix + 'iframe-overlay' ;
layer . addEventListener ( 'click' , function ( e ) {
if ( t . options . clickToPlayPause ) {
if ( t . paused ) {
t . play ( ) ;
} else {
t . pause ( ) ;
}
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
}
} ) ;
target . parentNode . insertBefore ( layer , target ) ;
}
}
} , {
key : 'resetSize' ,
value : function resetSize ( ) {
var t = this ;
setTimeout ( function ( ) {
t . setPlayerSize ( t . width , t . height ) ;
t . setControlsSize ( ) ;
} , 50 ) ;
}
} , {
key : 'setPoster' ,
value : function setPoster ( url ) {
var t = this ;
2017-10-16 14:07:52 -04:00
if ( t . getElement ( t . container ) ) {
var posterDiv = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'poster' ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( ! posterDiv ) {
posterDiv = _document2 . default . createElement ( 'div' ) ;
posterDiv . className = t . options . classPrefix + 'poster ' + t . options . classPrefix + 'layer' ;
t . getElement ( t . layers ) . appendChild ( posterDiv ) ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
var posterImg = posterDiv . querySelector ( 'img' ) ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( ! posterImg && url ) {
posterImg = _document2 . default . createElement ( 'img' ) ;
posterImg . className = t . options . classPrefix + 'poster-img' ;
posterImg . width = '100%' ;
posterImg . height = '100%' ;
posterDiv . style . display = '' ;
posterDiv . appendChild ( posterImg ) ;
}
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( url ) {
posterImg . setAttribute ( 'src' , url ) ;
posterDiv . style . backgroundImage = 'url("' + url + '")' ;
posterDiv . style . display = '' ;
} else if ( posterImg ) {
posterDiv . style . backgroundImage = 'none' ;
posterDiv . style . display = 'none' ;
posterImg . remove ( ) ;
} else {
posterDiv . style . display = 'none' ;
}
} else if ( _constants . IS _IPAD && t . options . iPadUseNativeControls || _constants . IS _IPHONE && t . options . iPhoneUseNativeControls || _constants . IS _ANDROID && t . options . AndroidUseNativeControls ) {
t . media . originalNode . poster = url ;
2017-08-01 00:43:51 -04:00
}
}
} , {
key : 'changeSkin' ,
value : function changeSkin ( className ) {
var t = this ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . className = t . options . classPrefix + 'container ' + className ;
2017-08-01 00:43:51 -04:00
t . setPlayerSize ( t . width , t . height ) ;
t . setControlsSize ( ) ;
}
} , {
key : 'globalBind' ,
value : function globalBind ( events , callback ) {
var t = this ,
doc = t . node ? t . node . ownerDocument : _document2 . default ;
events = ( 0 , _general . splitEvents ) ( events , t . id ) ;
if ( events . d ) {
var eventList = events . d . split ( ' ' ) ;
for ( var i = 0 , total = eventList . length ; i < total ; i ++ ) {
eventList [ i ] . split ( '.' ) . reduce ( function ( part , e ) {
doc . addEventListener ( e , callback , false ) ;
return e ;
} , '' ) ;
}
}
if ( events . w ) {
var _eventList = events . w . split ( ' ' ) ;
for ( var _i2 = 0 , _total2 = _eventList . length ; _i2 < _total2 ; _i2 ++ ) {
_eventList [ _i2 ] . split ( '.' ) . reduce ( function ( part , e ) {
_window2 . default . addEventListener ( e , callback , false ) ;
return e ;
} , '' ) ;
}
}
}
} , {
key : 'globalUnbind' ,
value : function globalUnbind ( events , callback ) {
var t = this ,
doc = t . node ? t . node . ownerDocument : _document2 . default ;
events = ( 0 , _general . splitEvents ) ( events , t . id ) ;
if ( events . d ) {
var eventList = events . d . split ( ' ' ) ;
for ( var i = 0 , total = eventList . length ; i < total ; i ++ ) {
eventList [ i ] . split ( '.' ) . reduce ( function ( part , e ) {
doc . removeEventListener ( e , callback , false ) ;
return e ;
} , '' ) ;
}
}
if ( events . w ) {
var _eventList2 = events . w . split ( ' ' ) ;
for ( var _i3 = 0 , _total3 = _eventList2 . length ; _i3 < _total3 ; _i3 ++ ) {
_eventList2 [ _i3 ] . split ( '.' ) . reduce ( function ( part , e ) {
_window2 . default . removeEventListener ( e , callback , false ) ;
return e ;
} , '' ) ;
}
}
}
2017-10-16 14:07:52 -04:00
} , {
key : 'buildfeatures' ,
value : function buildfeatures ( player , controls , layers , media ) {
var t = this ;
for ( var i = 0 , total = t . options . features . length ; i < total ; i ++ ) {
var feature = t . options . features [ i ] ;
if ( t [ 'build' + feature ] ) {
try {
t [ 'build' + feature ] ( player , controls , layers , media ) ;
} catch ( e ) {
console . error ( 'error building ' + feature , e ) ;
}
}
}
}
2017-08-01 00:43:51 -04:00
} , {
key : 'buildposter' ,
value : function buildposter ( player , controls , layers , media ) {
var t = this ,
poster = _document2 . default . createElement ( 'div' ) ;
poster . className = t . options . classPrefix + 'poster ' + t . options . classPrefix + 'layer' ;
layers . appendChild ( poster ) ;
var posterUrl = media . originalNode . getAttribute ( 'poster' ) ;
2017-10-16 14:07:52 -04:00
if ( player . options . poster !== '' ) {
if ( posterUrl && _constants . IS _IOS ) {
media . originalNode . removeAttribute ( 'poster' ) ;
}
2017-08-01 00:43:51 -04:00
posterUrl = player . options . poster ;
}
if ( posterUrl ) {
t . setPoster ( posterUrl ) ;
} else if ( t . media . renderer !== null && typeof t . media . renderer . getPosterUrl === 'function' ) {
t . setPoster ( t . media . renderer . getPosterUrl ( ) ) ;
} else {
poster . style . display = 'none' ;
}
media . addEventListener ( 'play' , function ( ) {
poster . style . display = 'none' ;
} ) ;
media . addEventListener ( 'playing' , function ( ) {
poster . style . display = 'none' ;
} ) ;
if ( player . options . showPosterWhenEnded && player . options . autoRewind ) {
media . addEventListener ( 'ended' , function ( ) {
poster . style . display = '' ;
} ) ;
}
media . addEventListener ( 'error' , function ( ) {
poster . style . display = 'none' ;
} ) ;
if ( player . options . showPosterWhenPaused ) {
media . addEventListener ( 'pause' , function ( ) {
if ( ! player . ended ) {
poster . style . display = '' ;
}
} ) ;
}
}
} , {
key : 'buildoverlays' ,
value : function buildoverlays ( player , controls , layers , media ) {
if ( ! player . isVideo ) {
return ;
}
var t = this ,
loading = _document2 . default . createElement ( 'div' ) ,
error = _document2 . default . createElement ( 'div' ) ,
2017-10-16 14:07:52 -04:00
bigPlay = _document2 . default . createElement ( 'div' ) ;
2017-08-01 00:43:51 -04:00
loading . style . display = 'none' ;
loading . className = t . options . classPrefix + 'overlay ' + t . options . classPrefix + 'layer' ;
loading . innerHTML = '<div class="' + t . options . classPrefix + 'overlay-loading">' + ( '<span class="' + t . options . classPrefix + 'overlay-loading-bg-img"></span>' ) + '</div>' ;
layers . appendChild ( loading ) ;
error . style . display = 'none' ;
error . className = t . options . classPrefix + 'overlay ' + t . options . classPrefix + 'layer' ;
error . innerHTML = '<div class="' + t . options . classPrefix + 'overlay-error"></div>' ;
layers . appendChild ( error ) ;
bigPlay . className = t . options . classPrefix + 'overlay ' + t . options . classPrefix + 'layer ' + t . options . classPrefix + 'overlay-play' ;
bigPlay . innerHTML = '<div class="' + t . options . classPrefix + 'overlay-button" role="button" tabindex="0" ' + ( 'aria-label="' + _i18n2 . default . t ( 'mejs.play' ) + '" aria-pressed="false"></div>' ) ;
bigPlay . addEventListener ( 'click' , function ( ) {
if ( t . options . clickToPlayPause ) {
2017-10-16 14:07:52 -04:00
var button = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'overlay-button' ) ,
2017-08-01 00:43:51 -04:00
pressed = button . getAttribute ( 'aria-pressed' ) ;
if ( t . paused ) {
t . play ( ) ;
} else {
t . pause ( ) ;
}
button . setAttribute ( 'aria-pressed' , ! ! pressed ) ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . focus ( ) ;
2017-08-01 00:43:51 -04:00
}
} ) ;
bigPlay . addEventListener ( 'keydown' , function ( e ) {
var keyPressed = e . keyCode || e . which || 0 ;
if ( keyPressed === 13 || _constants . IS _FIREFOX && keyPressed === 32 ) {
var event = ( 0 , _general . createEvent ) ( 'click' , bigPlay ) ;
bigPlay . dispatchEvent ( event ) ;
return false ;
}
} ) ;
layers . appendChild ( bigPlay ) ;
2017-08-12 02:20:44 -04:00
if ( t . media . rendererName !== null && ( /(youtube|facebook)/i . test ( t . media . rendererName ) && ! ( t . media . originalNode . getAttribute ( 'poster' ) || player . options . poster || typeof t . media . renderer . getPosterUrl === 'function' && t . media . renderer . getPosterUrl ( ) ) || _constants . IS _STOCK _ANDROID || t . media . originalNode . getAttribute ( 'autoplay' ) ) ) {
2017-08-01 00:43:51 -04:00
bigPlay . style . display = 'none' ;
}
var hasError = false ;
media . addEventListener ( 'play' , function ( ) {
bigPlay . style . display = 'none' ;
loading . style . display = 'none' ;
error . style . display = 'none' ;
hasError = false ;
} ) ;
media . addEventListener ( 'playing' , function ( ) {
bigPlay . style . display = 'none' ;
loading . style . display = 'none' ;
error . style . display = 'none' ;
hasError = false ;
} ) ;
media . addEventListener ( 'seeking' , function ( ) {
bigPlay . style . display = 'none' ;
loading . style . display = '' ;
hasError = false ;
} ) ;
media . addEventListener ( 'seeked' , function ( ) {
bigPlay . style . display = t . paused && ! _constants . IS _STOCK _ANDROID ? '' : 'none' ;
loading . style . display = 'none' ;
hasError = false ;
} ) ;
media . addEventListener ( 'pause' , function ( ) {
loading . style . display = 'none' ;
if ( ! _constants . IS _STOCK _ANDROID && ! hasError ) {
bigPlay . style . display = '' ;
}
hasError = false ;
} ) ;
media . addEventListener ( 'waiting' , function ( ) {
loading . style . display = '' ;
hasError = false ;
} ) ;
media . addEventListener ( 'loadeddata' , function ( ) {
loading . style . display = '' ;
if ( _constants . IS _ANDROID ) {
media . canplayTimeout = setTimeout ( function ( ) {
if ( _document2 . default . createEvent ) {
var evt = _document2 . default . createEvent ( 'HTMLEvents' ) ;
evt . initEvent ( 'canplay' , true , true ) ;
return media . dispatchEvent ( evt ) ;
}
} , 300 ) ;
}
hasError = false ;
} ) ;
media . addEventListener ( 'canplay' , function ( ) {
loading . style . display = 'none' ;
clearTimeout ( media . canplayTimeout ) ;
hasError = false ;
} ) ;
media . addEventListener ( 'error' , function ( e ) {
t . _handleError ( e , t . media , t . node ) ;
loading . style . display = 'none' ;
bigPlay . style . display = 'none' ;
hasError = true ;
} ) ;
2017-08-28 15:29:47 -04:00
media . addEventListener ( 'loadedmetadata' , function ( ) {
if ( ! t . controlsEnabled ) {
t . enableControls ( ) ;
}
} ) ;
2017-08-01 00:43:51 -04:00
media . addEventListener ( 'keydown' , function ( e ) {
t . onkeydown ( player , media , e ) ;
hasError = false ;
} ) ;
}
} , {
key : 'buildkeyboard' ,
value : function buildkeyboard ( player , controls , layers , media ) {
var t = this ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . addEventListener ( 'keydown' , function ( ) {
2017-08-01 00:43:51 -04:00
t . keyboardAction = true ;
} ) ;
t . globalKeydownCallback = function ( event ) {
var container = _document2 . default . activeElement . closest ( '.' + t . options . classPrefix + 'container' ) ,
target = t . media . closest ( '.' + t . options . classPrefix + 'container' ) ;
t . hasFocus = ! ! ( container && target && container . id === target . id ) ;
return t . onkeydown ( player , media , event ) ;
} ;
t . globalClickCallback = function ( event ) {
t . hasFocus = ! ! event . target . closest ( '.' + t . options . classPrefix + 'container' ) ;
} ;
t . globalBind ( 'keydown' , t . globalKeydownCallback ) ;
t . globalBind ( 'click' , t . globalClickCallback ) ;
}
} , {
key : 'onkeydown' ,
value : function onkeydown ( player , media , e ) {
if ( player . hasFocus && player . options . enableKeyboard ) {
for ( var i = 0 , total = player . options . keyActions . length ; i < total ; i ++ ) {
var keyAction = player . options . keyActions [ i ] ;
for ( var j = 0 , jl = keyAction . keys . length ; j < jl ; j ++ ) {
if ( e . keyCode === keyAction . keys [ j ] ) {
keyAction . action ( player , media , e . keyCode , e ) ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
2017-08-28 15:29:47 -04:00
return ;
2017-08-01 00:43:51 -04:00
}
}
}
}
return true ;
}
} , {
key : 'play' ,
value : function play ( ) {
this . proxy . play ( ) ;
}
} , {
key : 'pause' ,
value : function pause ( ) {
this . proxy . pause ( ) ;
}
} , {
key : 'load' ,
value : function load ( ) {
this . proxy . load ( ) ;
}
} , {
key : 'setCurrentTime' ,
value : function setCurrentTime ( time ) {
this . proxy . setCurrentTime ( time ) ;
}
} , {
key : 'getCurrentTime' ,
value : function getCurrentTime ( ) {
return this . proxy . currentTime ;
}
} , {
key : 'getDuration' ,
value : function getDuration ( ) {
return this . proxy . duration ;
}
} , {
key : 'setVolume' ,
value : function setVolume ( volume ) {
this . proxy . volume = volume ;
}
} , {
key : 'getVolume' ,
value : function getVolume ( ) {
return this . proxy . getVolume ( ) ;
}
} , {
key : 'setMuted' ,
value : function setMuted ( value ) {
this . proxy . setMuted ( value ) ;
}
} , {
key : 'setSrc' ,
value : function setSrc ( src ) {
if ( ! this . controlsEnabled ) {
this . enableControls ( ) ;
}
this . proxy . setSrc ( src ) ;
}
} , {
key : 'getSrc' ,
value : function getSrc ( ) {
return this . proxy . getSrc ( ) ;
}
} , {
key : 'canPlayType' ,
value : function canPlayType ( type ) {
return this . proxy . canPlayType ( type ) ;
}
} , {
key : 'remove' ,
value : function remove ( ) {
var t = this ,
rendererName = t . media . rendererName ,
src = t . media . originalNode . src ;
for ( var featureIndex in t . options . features ) {
var feature = t . options . features [ featureIndex ] ;
if ( t [ 'clean' + feature ] ) {
try {
2017-10-16 14:07:52 -04:00
t [ 'clean' + feature ] ( t , t . getElement ( t . layers ) , t . getElement ( t . controls ) , t . media ) ;
2017-08-01 00:43:51 -04:00
} catch ( e ) {
console . error ( 'error cleaning ' + feature , e ) ;
}
}
}
var nativeWidth = t . node . getAttribute ( 'width' ) ,
nativeHeight = t . node . getAttribute ( 'height' ) ;
if ( nativeWidth ) {
if ( nativeWidth . indexOf ( '%' ) === - 1 ) {
nativeWidth = nativeWidth + 'px' ;
}
} else {
nativeWidth = 'auto' ;
}
if ( nativeHeight ) {
if ( nativeHeight . indexOf ( '%' ) === - 1 ) {
nativeHeight = nativeHeight + 'px' ;
}
} else {
nativeHeight = 'auto' ;
}
t . node . style . width = nativeWidth ;
t . node . style . height = nativeHeight ;
2017-08-28 15:29:47 -04:00
t . setPlayerSize ( 0 , 0 ) ;
2017-08-01 00:43:51 -04:00
if ( ! t . isDynamic ) {
( function ( ) {
t . node . setAttribute ( 'controls' , true ) ;
t . node . setAttribute ( 'id' , t . node . getAttribute ( 'id' ) . replace ( '_' + rendererName , '' ) . replace ( '_from_mejs' , '' ) ) ;
2017-10-16 14:07:52 -04:00
var poster = t . getElement ( t . container ) . querySelector ( '.' + t . options . classPrefix + 'poster>img' ) ;
2017-08-01 00:43:51 -04:00
if ( poster ) {
t . node . setAttribute ( 'poster' , poster . src ) ;
}
delete t . node . autoplay ;
2019-10-08 12:06:02 -04:00
t . node . setAttribute ( 'src' , '' ) ;
2017-08-01 00:43:51 -04:00
if ( t . media . canPlayType ( ( 0 , _media . getTypeFromFile ) ( src ) ) !== '' ) {
t . node . setAttribute ( 'src' , src ) ;
}
2019-10-08 12:06:02 -04:00
if ( rendererName && rendererName . indexOf ( 'iframe' ) > - 1 ) {
2017-08-01 00:43:51 -04:00
var layer = _document2 . default . getElementById ( t . media . id + '-iframe-overlay' ) ;
layer . remove ( ) ;
}
var node = t . node . cloneNode ( ) ;
node . style . display = '' ;
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . parentNode . insertBefore ( node , t . getElement ( t . container ) ) ;
2017-08-01 00:43:51 -04:00
t . node . remove ( ) ;
if ( t . mediaFiles ) {
for ( var i = 0 , total = t . mediaFiles . length ; i < total ; i ++ ) {
var source = _document2 . default . createElement ( 'source' ) ;
source . setAttribute ( 'src' , t . mediaFiles [ i ] . src ) ;
source . setAttribute ( 'type' , t . mediaFiles [ i ] . type ) ;
node . appendChild ( source ) ;
}
}
if ( t . trackFiles ) {
var _loop3 = function _loop3 ( _i4 , _total4 ) {
var track = t . trackFiles [ _i4 ] ;
var newTrack = _document2 . default . createElement ( 'track' ) ;
newTrack . kind = track . kind ;
newTrack . label = track . label ;
newTrack . srclang = track . srclang ;
newTrack . src = track . src ;
node . appendChild ( newTrack ) ;
newTrack . addEventListener ( 'load' , function ( ) {
this . mode = 'showing' ;
node . textTracks [ _i4 ] . mode = 'showing' ;
} ) ;
} ;
for ( var _i4 = 0 , _total4 = t . trackFiles . length ; _i4 < _total4 ; _i4 ++ ) {
_loop3 ( _i4 , _total4 ) ;
}
}
delete t . node ;
delete t . mediaFiles ;
delete t . trackFiles ;
} ) ( ) ;
} else {
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . parentNode . insertBefore ( t . node , t . getElement ( t . container ) ) ;
2017-08-01 00:43:51 -04:00
}
2019-10-08 12:06:02 -04:00
if ( t . media . renderer && typeof t . media . renderer . destroy === 'function' ) {
2017-08-01 00:43:51 -04:00
t . media . renderer . destroy ( ) ;
}
delete _mejs2 . default . players [ t . id ] ;
2017-10-16 14:07:52 -04:00
if ( _typeof ( t . getElement ( t . container ) ) === 'object' ) {
var offscreen = t . getElement ( t . container ) . parentNode . querySelector ( '.' + t . options . classPrefix + 'offscreen' ) ;
2022-09-29 10:21:11 -04:00
if ( offscreen ) {
offscreen . remove ( ) ;
}
2017-10-16 14:07:52 -04:00
t . getElement ( t . container ) . remove ( ) ;
2017-08-01 00:43:51 -04:00
}
t . globalUnbind ( 'resize' , t . globalResizeCallback ) ;
t . globalUnbind ( 'keydown' , t . globalKeydownCallback ) ;
t . globalUnbind ( 'click' , t . globalClickCallback ) ;
delete t . media . player ;
}
} , {
key : 'paused' ,
get : function get ( ) {
return this . proxy . paused ;
}
} , {
key : 'muted' ,
get : function get ( ) {
return this . proxy . muted ;
} ,
set : function set ( muted ) {
this . setMuted ( muted ) ;
}
} , {
key : 'ended' ,
get : function get ( ) {
return this . proxy . ended ;
}
} , {
key : 'readyState' ,
get : function get ( ) {
return this . proxy . readyState ;
}
} , {
key : 'currentTime' ,
set : function set ( time ) {
this . setCurrentTime ( time ) ;
} ,
get : function get ( ) {
return this . getCurrentTime ( ) ;
}
} , {
key : 'duration' ,
get : function get ( ) {
return this . getDuration ( ) ;
}
} , {
key : 'volume' ,
set : function set ( volume ) {
this . setVolume ( volume ) ;
} ,
get : function get ( ) {
return this . getVolume ( ) ;
}
} , {
key : 'src' ,
set : function set ( src ) {
this . setSrc ( src ) ;
} ,
get : function get ( ) {
return this . getSrc ( ) ;
}
} ] ) ;
return MediaElementPlayer ;
} ( ) ;
_window2 . default . MediaElementPlayer = MediaElementPlayer ;
2017-08-28 15:29:47 -04:00
_mejs2 . default . MediaElementPlayer = MediaElementPlayer ;
2017-08-01 00:43:51 -04:00
exports . default = MediaElementPlayer ;
2020-09-29 11:53:06 -04:00
} , { "17" : 17 , "2" : 2 , "25" : 25 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "30" : 30 , "5" : 5 , "6" : 6 , "7" : 7 } ] , 17 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
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 ; } ; } ( ) ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var DefaultPlayer = function ( ) {
function DefaultPlayer ( player ) {
_classCallCheck ( this , DefaultPlayer ) ;
this . media = player . media ;
this . isVideo = player . isVideo ;
this . classPrefix = player . options . classPrefix ;
this . createIframeLayer = function ( ) {
return player . createIframeLayer ( ) ;
} ;
this . setPoster = function ( url ) {
return player . setPoster ( url ) ;
} ;
return this ;
}
_createClass ( DefaultPlayer , [ {
key : 'play' ,
value : function play ( ) {
this . media . play ( ) ;
}
} , {
key : 'pause' ,
value : function pause ( ) {
this . media . pause ( ) ;
}
} , {
key : 'load' ,
value : function load ( ) {
var t = this ;
if ( ! t . isLoaded ) {
t . media . load ( ) ;
}
t . isLoaded = true ;
}
} , {
key : 'setCurrentTime' ,
value : function setCurrentTime ( time ) {
this . media . setCurrentTime ( time ) ;
}
} , {
key : 'getCurrentTime' ,
value : function getCurrentTime ( ) {
return this . media . currentTime ;
}
} , {
key : 'getDuration' ,
value : function getDuration ( ) {
2020-09-29 11:53:06 -04:00
var duration = this . media . getDuration ( ) ;
if ( duration === Infinity && this . media . seekable && this . media . seekable . length ) {
duration = this . media . seekable . end ( 0 ) ;
}
return duration ;
2017-08-01 00:43:51 -04:00
}
} , {
key : 'setVolume' ,
value : function setVolume ( volume ) {
this . media . setVolume ( volume ) ;
}
} , {
key : 'getVolume' ,
value : function getVolume ( ) {
return this . media . getVolume ( ) ;
}
} , {
key : 'setMuted' ,
value : function setMuted ( value ) {
this . media . setMuted ( value ) ;
}
} , {
key : 'setSrc' ,
value : function setSrc ( src ) {
var t = this ,
layer = document . getElementById ( t . media . id + '-iframe-overlay' ) ;
if ( layer ) {
layer . remove ( ) ;
}
t . media . setSrc ( src ) ;
t . createIframeLayer ( ) ;
if ( t . media . renderer !== null && typeof t . media . renderer . getPosterUrl === 'function' ) {
t . setPoster ( t . media . renderer . getPosterUrl ( ) ) ;
}
}
} , {
key : 'getSrc' ,
value : function getSrc ( ) {
return this . media . getSrc ( ) ;
}
} , {
key : 'canPlayType' ,
value : function canPlayType ( type ) {
return this . media . canPlayType ( type ) ;
}
} , {
key : 'paused' ,
get : function get ( ) {
return this . media . paused ;
}
} , {
key : 'muted' ,
set : function set ( muted ) {
this . setMuted ( muted ) ;
} ,
get : function get ( ) {
return this . media . muted ;
}
} , {
key : 'ended' ,
get : function get ( ) {
return this . media . ended ;
}
} , {
key : 'readyState' ,
get : function get ( ) {
return this . media . readyState ;
}
} , {
key : 'currentTime' ,
set : function set ( time ) {
this . setCurrentTime ( time ) ;
} ,
get : function get ( ) {
return this . getCurrentTime ( ) ;
}
} , {
key : 'duration' ,
get : function get ( ) {
return this . getDuration ( ) ;
}
2019-10-08 12:06:02 -04:00
} , {
key : 'remainingTime' ,
get : function get ( ) {
return this . getDuration ( ) - this . currentTime ( ) ;
}
2017-08-01 00:43:51 -04:00
} , {
key : 'volume' ,
set : function set ( volume ) {
this . setVolume ( volume ) ;
} ,
get : function get ( ) {
return this . getVolume ( ) ;
}
} , {
key : 'src' ,
set : function set ( src ) {
this . setSrc ( src ) ;
} ,
get : function get ( ) {
return this . getSrc ( ) ;
}
} ] ) ;
return DefaultPlayer ;
} ( ) ;
exports . default = DefaultPlayer ;
_window2 . default . DefaultPlayer = DefaultPlayer ;
2020-09-29 11:53:06 -04:00
} , { "3" : 3 } ] , 18 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _player = _dereq _ ( 16 ) ;
2017-08-01 00:43:51 -04:00
var _player2 = _interopRequireDefault ( _player ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
if ( typeof jQuery !== 'undefined' ) {
2019-10-08 12:06:02 -04:00
_mejs2 . default . $ = jQuery ;
2017-08-01 00:43:51 -04:00
} else if ( typeof Zepto !== 'undefined' ) {
2019-10-08 12:06:02 -04:00
_mejs2 . default . $ = Zepto ;
2017-08-01 00:43:51 -04:00
} else if ( typeof ender !== 'undefined' ) {
2019-10-08 12:06:02 -04:00
_mejs2 . default . $ = ender ;
2017-08-01 00:43:51 -04:00
}
( function ( $ ) {
if ( typeof $ !== 'undefined' ) {
$ . fn . mediaelementplayer = function ( options ) {
if ( options === false ) {
this . each ( function ( ) {
var player = $ ( this ) . data ( 'mediaelementplayer' ) ;
if ( player ) {
player . remove ( ) ;
}
$ ( this ) . removeData ( 'mediaelementplayer' ) ;
} ) ;
} else {
this . each ( function ( ) {
$ ( this ) . data ( 'mediaelementplayer' , new _player2 . default ( this , options ) ) ;
} ) ;
}
return this ;
} ;
$ ( document ) . ready ( function ( ) {
$ ( '.' + _mejs2 . default . MepDefaults . classPrefix + 'player' ) . mediaelementplayer ( ) ;
} ) ;
}
} ) ( _mejs2 . default . $ ) ;
2020-09-29 11:53:06 -04:00
} , { "16" : 16 , "3" : 3 , "7" : 7 } ] , 19 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
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 ; } ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var NativeDash = {
promise : null ,
load : function load ( settings ) {
if ( typeof dashjs !== 'undefined' ) {
NativeDash . promise = new Promise ( function ( resolve ) {
resolve ( ) ;
} ) . then ( function ( ) {
NativeDash . _createPlayer ( settings ) ;
} ) ;
} else {
settings . options . path = typeof settings . options . path === 'string' ? settings . options . path : 'https://cdn.dashjs.org/latest/dash.all.min.js' ;
NativeDash . promise = NativeDash . promise || ( 0 , _dom . loadScript ) ( settings . options . path ) ;
NativeDash . promise . then ( function ( ) {
NativeDash . _createPlayer ( settings ) ;
} ) ;
}
return NativeDash . promise ;
} ,
_createPlayer : function _createPlayer ( settings ) {
var player = dashjs . MediaPlayer ( ) . create ( ) ;
_window2 . default [ '__ready__' + settings . id ] ( player ) ;
return player ;
}
} ;
var DashNativeRenderer = {
name : 'native_dash' ,
options : {
prefix : 'native_dash' ,
dash : {
path : 'https://cdn.dashjs.org/latest/dash.all.min.js' ,
debug : false ,
drm : { } ,
robustnessLevel : ''
}
} ,
canPlayType : function canPlayType ( type ) {
return _constants . HAS _MSE && [ 'application/dash+xml' ] . indexOf ( type . toLowerCase ( ) ) > - 1 ;
} ,
create : function create ( mediaElement , options , mediaFiles ) {
var originalNode = mediaElement . originalNode ,
id = mediaElement . id + '_' + options . prefix ,
autoplay = originalNode . autoplay ,
children = originalNode . children ;
var node = null ,
dashPlayer = null ;
originalNode . removeAttribute ( 'type' ) ;
for ( var i = 0 , total = children . length ; i < total ; i ++ ) {
children [ i ] . removeAttribute ( 'type' ) ;
}
node = originalNode . cloneNode ( true ) ;
options = Object . assign ( options , mediaElement . options ) ;
var props = _mejs2 . default . html5media . properties ,
2019-10-08 12:06:02 -04:00
events = _mejs2 . default . html5media . events . concat ( [ 'click' , 'mouseover' , 'mouseout' ] ) . filter ( function ( e ) {
return e !== 'error' ;
} ) ,
2017-08-01 00:43:51 -04:00
attachNativeEvents = function attachNativeEvents ( e ) {
2019-10-08 12:06:02 -04:00
var event = ( 0 , _general . createEvent ) ( e . type , mediaElement ) ;
mediaElement . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ,
assignGettersSetters = function assignGettersSetters ( propName ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
node [ 'get' + capName ] = function ( ) {
return dashPlayer !== null ? node [ propName ] : null ;
} ;
node [ 'set' + capName ] = function ( value ) {
if ( _mejs2 . default . html5media . readOnlyProperties . indexOf ( propName ) === - 1 ) {
if ( propName === 'src' ) {
var source = ( typeof value === 'undefined' ? 'undefined' : _typeof ( value ) ) === 'object' && value . src ? value . src : value ;
node [ propName ] = source ;
if ( dashPlayer !== null ) {
dashPlayer . reset ( ) ;
for ( var _i = 0 , _total = events . length ; _i < _total ; _i ++ ) {
node . removeEventListener ( events [ _i ] , attachNativeEvents ) ;
}
dashPlayer = NativeDash . _createPlayer ( {
options : options . dash ,
id : id
} ) ;
if ( value && ( typeof value === 'undefined' ? 'undefined' : _typeof ( value ) ) === 'object' && _typeof ( value . drm ) === 'object' ) {
dashPlayer . setProtectionData ( value . drm ) ;
if ( ( 0 , _general . isString ) ( options . dash . robustnessLevel ) && options . dash . robustnessLevel ) {
dashPlayer . getProtectionController ( ) . setRobustnessLevel ( options . dash . robustnessLevel ) ;
}
}
dashPlayer . attachSource ( source ) ;
if ( autoplay ) {
dashPlayer . play ( ) ;
}
}
} else {
node [ propName ] = value ;
}
}
} ;
} ;
for ( var _i2 = 0 , _total2 = props . length ; _i2 < _total2 ; _i2 ++ ) {
assignGettersSetters ( props [ _i2 ] ) ;
}
_window2 . default [ '__ready__' + id ] = function ( _dashPlayer ) {
mediaElement . dashPlayer = dashPlayer = _dashPlayer ;
var dashEvents = dashjs . MediaPlayer . events ,
assignEvents = function assignEvents ( eventName ) {
if ( eventName === 'loadedmetadata' ) {
dashPlayer . initialize ( ) ;
dashPlayer . attachView ( node ) ;
dashPlayer . setAutoPlay ( false ) ;
if ( _typeof ( options . dash . drm ) === 'object' && ! _mejs2 . default . Utils . isObjectEmpty ( options . dash . drm ) ) {
dashPlayer . setProtectionData ( options . dash . drm ) ;
if ( ( 0 , _general . isString ) ( options . dash . robustnessLevel ) && options . dash . robustnessLevel ) {
dashPlayer . getProtectionController ( ) . setRobustnessLevel ( options . dash . robustnessLevel ) ;
}
}
dashPlayer . attachSource ( node . getSrc ( ) ) ;
}
node . addEventListener ( eventName , attachNativeEvents ) ;
} ;
for ( var _i3 = 0 , _total3 = events . length ; _i3 < _total3 ; _i3 ++ ) {
assignEvents ( events [ _i3 ] ) ;
}
2019-10-08 12:06:02 -04:00
var assignMdashEvents = function assignMdashEvents ( e ) {
if ( e . type . toLowerCase ( ) === 'error' ) {
mediaElement . generateError ( e . message , node . src ) ;
console . error ( e ) ;
2017-08-12 02:20:44 -04:00
} else {
2019-10-08 12:06:02 -04:00
var _event = ( 0 , _general . createEvent ) ( e . type , mediaElement ) ;
_event . data = e ;
mediaElement . dispatchEvent ( _event ) ;
2017-08-01 00:43:51 -04:00
}
} ;
for ( var eventType in dashEvents ) {
if ( dashEvents . hasOwnProperty ( eventType ) ) {
2017-08-12 02:20:44 -04:00
dashPlayer . on ( dashEvents [ eventType ] , function ( e ) {
2019-10-08 12:06:02 -04:00
return assignMdashEvents ( e ) ;
2017-08-12 02:20:44 -04:00
} ) ;
2017-08-01 00:43:51 -04:00
}
}
} ;
if ( mediaFiles && mediaFiles . length > 0 ) {
for ( var _i4 = 0 , _total4 = mediaFiles . length ; _i4 < _total4 ; _i4 ++ ) {
if ( _renderer . renderer . renderers [ options . prefix ] . canPlayType ( mediaFiles [ _i4 ] . type ) ) {
node . setAttribute ( 'src' , mediaFiles [ _i4 ] . src ) ;
if ( typeof mediaFiles [ _i4 ] . drm !== 'undefined' ) {
options . dash . drm = mediaFiles [ _i4 ] . drm ;
}
break ;
}
}
}
node . setAttribute ( 'id' , id ) ;
originalNode . parentNode . insertBefore ( node , originalNode ) ;
originalNode . autoplay = false ;
originalNode . style . display = 'none' ;
node . setSize = function ( width , height ) {
node . style . width = width + 'px' ;
node . style . height = height + 'px' ;
return node ;
} ;
node . hide = function ( ) {
node . pause ( ) ;
node . style . display = 'none' ;
return node ;
} ;
node . show = function ( ) {
node . style . display = '' ;
return node ;
} ;
node . destroy = function ( ) {
if ( dashPlayer !== null ) {
dashPlayer . reset ( ) ;
}
} ;
var event = ( 0 , _general . createEvent ) ( 'rendererready' , node ) ;
mediaElement . dispatchEvent ( event ) ;
mediaElement . promises . push ( NativeDash . load ( {
options : options . dash ,
id : id
} ) ) ;
return node ;
}
} ;
_media . typeChecks . push ( function ( url ) {
return ~ url . toLowerCase ( ) . indexOf ( '.mpd' ) ? 'application/dash+xml' : null ;
} ) ;
_renderer . renderer . add ( DashNativeRenderer ) ;
2020-09-29 11:53:06 -04:00
} , { "25" : 25 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 20 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . PluginDetector = undefined ;
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 ; } ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _i18n = _dereq _ ( 5 ) ;
2017-08-01 00:43:51 -04:00
var _i18n2 = _interopRequireDefault ( _i18n ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var PluginDetector = exports . PluginDetector = {
plugins : [ ] ,
hasPluginVersion : function hasPluginVersion ( plugin , v ) {
var pv = PluginDetector . plugins [ plugin ] ;
v [ 1 ] = v [ 1 ] || 0 ;
v [ 2 ] = v [ 2 ] || 0 ;
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 ] ;
} ,
addPlugin : function addPlugin ( p , pluginName , mimeType , activeX , axDetect ) {
PluginDetector . plugins [ p ] = PluginDetector . detectPlugin ( pluginName , mimeType , activeX , axDetect ) ;
} ,
detectPlugin : function detectPlugin ( pluginName , mimeType , activeX , axDetect ) {
var version = [ 0 , 0 , 0 ] ,
description = void 0 ,
ax = void 0 ;
if ( _constants . NAV . plugins !== null && _constants . NAV . plugins !== undefined && _typeof ( _constants . NAV . plugins [ pluginName ] ) === 'object' ) {
description = _constants . NAV . plugins [ pluginName ] . description ;
if ( description && ! ( typeof _constants . NAV . mimeTypes !== 'undefined' && _constants . NAV . mimeTypes [ mimeType ] && ! _constants . NAV . mimeTypes [ mimeType ] . enabledPlugin ) ) {
version = description . replace ( pluginName , '' ) . replace ( /^\s+/ , '' ) . replace ( /\sr/gi , '.' ) . split ( '.' ) ;
for ( var i = 0 , total = version . length ; i < total ; i ++ ) {
version [ i ] = parseInt ( version [ i ] . match ( /\d+/ ) , 10 ) ;
}
}
} else if ( _window2 . default . ActiveXObject !== undefined ) {
try {
ax = new ActiveXObject ( activeX ) ;
if ( ax ) {
version = axDetect ( ax ) ;
}
} catch ( e ) {
}
}
return version ;
}
} ;
PluginDetector . addPlugin ( 'flash' , 'Shockwave Flash' , 'application/x-shockwave-flash' , 'ShockwaveFlash.ShockwaveFlash' , function ( ax ) {
var version = [ ] ,
d = ax . GetVariable ( "$version" ) ;
if ( d ) {
d = d . split ( " " ) [ 1 ] . split ( "," ) ;
version = [ parseInt ( d [ 0 ] , 10 ) , parseInt ( d [ 1 ] , 10 ) , parseInt ( d [ 2 ] , 10 ) ] ;
}
return version ;
} ) ;
var FlashMediaElementRenderer = {
create : function create ( mediaElement , options , mediaFiles ) {
var flash = { } ;
2017-10-16 14:07:52 -04:00
var isActive = false ;
2017-08-01 00:43:51 -04:00
flash . options = options ;
flash . id = mediaElement . id + '_' + flash . options . prefix ;
flash . mediaElement = mediaElement ;
flash . flashState = { } ;
flash . flashApi = null ;
flash . flashApiStack = [ ] ;
var props = _mejs2 . default . html5media . properties ,
assignGettersSetters = function assignGettersSetters ( propName ) {
flash . flashState [ propName ] = null ;
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
flash [ 'get' + capName ] = function ( ) {
if ( flash . flashApi !== null ) {
if ( typeof flash . flashApi [ 'get_' + propName ] === 'function' ) {
var value = flash . flashApi [ 'get_' + propName ] ( ) ;
if ( propName === 'buffered' ) {
return {
start : function start ( ) {
return 0 ;
} ,
end : function end ( ) {
return value ;
} ,
length : 1
} ;
}
return value ;
} else {
return null ;
}
} else {
return null ;
}
} ;
flash [ 'set' + capName ] = function ( value ) {
if ( propName === 'src' ) {
value = ( 0 , _media . absolutizeUrl ) ( value ) ;
}
if ( flash . flashApi !== null && flash . flashApi [ 'set_' + propName ] !== undefined ) {
try {
flash . flashApi [ 'set_' + propName ] ( value ) ;
} catch ( e ) {
}
} else {
flash . flashApiStack . push ( {
type : 'set' ,
propName : propName ,
value : value
} ) ;
}
} ;
} ;
for ( var i = 0 , total = props . length ; i < total ; i ++ ) {
assignGettersSetters ( props [ i ] ) ;
}
var methods = _mejs2 . default . html5media . methods ,
assignMethods = function assignMethods ( methodName ) {
flash [ methodName ] = function ( ) {
2017-10-16 14:07:52 -04:00
if ( isActive ) {
if ( flash . flashApi !== null ) {
if ( flash . flashApi [ 'fire_' + methodName ] ) {
try {
flash . flashApi [ 'fire_' + methodName ] ( ) ;
} catch ( e ) {
}
} else {
2017-08-01 00:43:51 -04:00
}
} else {
2017-10-16 14:07:52 -04:00
flash . flashApiStack . push ( {
type : 'call' ,
methodName : methodName
} ) ;
2017-08-01 00:43:51 -04:00
}
}
} ;
} ;
methods . push ( 'stop' ) ;
for ( var _i = 0 , _total = methods . length ; _i < _total ; _i ++ ) {
assignMethods ( methods [ _i ] ) ;
}
var initEvents = [ 'rendererready' ] ;
for ( var _i2 = 0 , _total2 = initEvents . length ; _i2 < _total2 ; _i2 ++ ) {
var event = ( 0 , _general . createEvent ) ( initEvents [ _i2 ] , flash ) ;
mediaElement . dispatchEvent ( event ) ;
}
_window2 . default [ '__ready__' + flash . id ] = function ( ) {
flash . flashReady = true ;
flash . flashApi = _document2 . default . getElementById ( '__' + flash . id ) ;
if ( flash . flashApiStack . length ) {
for ( var _i3 = 0 , _total3 = flash . flashApiStack . length ; _i3 < _total3 ; _i3 ++ ) {
var stackItem = flash . flashApiStack [ _i3 ] ;
if ( stackItem . type === 'set' ) {
var propName = stackItem . propName ,
capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
flash [ 'set' + capName ] ( stackItem . value ) ;
} else if ( stackItem . type === 'call' ) {
flash [ stackItem . methodName ] ( ) ;
}
}
}
} ;
_window2 . default [ '__event__' + flash . id ] = function ( eventName , message ) {
var event = ( 0 , _general . createEvent ) ( eventName , flash ) ;
if ( message ) {
try {
event . data = JSON . parse ( message ) ;
event . details . data = JSON . parse ( message ) ;
} catch ( e ) {
event . message = message ;
}
}
flash . mediaElement . dispatchEvent ( event ) ;
} ;
flash . flashWrapper = _document2 . default . createElement ( 'div' ) ;
if ( [ 'always' , 'sameDomain' ] . indexOf ( flash . options . shimScriptAccess ) === - 1 ) {
flash . options . shimScriptAccess = 'sameDomain' ;
}
var autoplay = mediaElement . originalNode . autoplay ,
flashVars = [ 'uid=' + flash . id , 'autoplay=' + autoplay , 'allowScriptAccess=' + flash . options . shimScriptAccess , 'preload=' + ( mediaElement . originalNode . getAttribute ( 'preload' ) || '' ) ] ,
isVideo = mediaElement . originalNode !== null && mediaElement . originalNode . tagName . toLowerCase ( ) === 'video' ,
flashHeight = isVideo ? mediaElement . originalNode . height : 1 ,
flashWidth = isVideo ? mediaElement . originalNode . width : 1 ;
if ( mediaElement . originalNode . getAttribute ( 'src' ) ) {
flashVars . push ( 'src=' + mediaElement . originalNode . getAttribute ( 'src' ) ) ;
}
if ( flash . options . enablePseudoStreaming === true ) {
flashVars . push ( 'pseudostreamstart=' + flash . options . pseudoStreamingStartQueryParam ) ;
flashVars . push ( 'pseudostreamtype=' + flash . options . pseudoStreamingType ) ;
}
2017-10-16 14:07:52 -04:00
if ( flash . options . streamDelimiter ) {
flashVars . push ( 'streamdelimiter=' + encodeURIComponent ( flash . options . streamDelimiter ) ) ;
}
if ( flash . options . proxyType ) {
flashVars . push ( 'proxytype=' + flash . options . proxyType ) ;
}
2017-08-01 00:43:51 -04:00
mediaElement . appendChild ( flash . flashWrapper ) ;
mediaElement . originalNode . style . display = 'none' ;
var settings = [ ] ;
2017-10-16 14:07:52 -04:00
if ( _constants . IS _IE || _constants . IS _EDGE ) {
2017-08-01 00:43:51 -04:00
var specialIEContainer = _document2 . default . createElement ( 'div' ) ;
flash . flashWrapper . appendChild ( specialIEContainer ) ;
2017-10-16 14:07:52 -04:00
if ( _constants . IS _EDGE ) {
settings = [ 'type="application/x-shockwave-flash"' , 'data="' + flash . options . pluginPath + flash . options . filename + '"' , 'id="__' + flash . id + '"' , 'width="' + flashWidth + '"' , 'height="' + flashHeight + '\'"' ] ;
} else {
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 + '"' ] ;
}
2017-08-01 00:43:51 -04:00
if ( ! isVideo ) {
settings . push ( 'style="clip: rect(0 0 0 0); position: absolute;"' ) ;
}
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>' ;
} else {
2017-10-16 14:07:52 -04:00
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 ( '&' ) + '"' ] ;
2017-08-01 00:43:51 -04:00
2017-10-16 14:07:52 -04:00
if ( isVideo ) {
settings . push ( 'width="' + flashWidth + '"' ) ;
settings . push ( 'height="' + flashHeight + '"' ) ;
} else {
settings . push ( 'style="position: fixed; left: -9999em; top: -9999em;"' ) ;
2017-08-01 00:43:51 -04:00
}
flash . flashWrapper . innerHTML = '<embed ' + settings . join ( ' ' ) + '>' ;
}
flash . flashNode = flash . flashWrapper . lastChild ;
flash . hide = function ( ) {
2017-10-16 14:07:52 -04:00
isActive = false ;
2017-08-01 00:43:51 -04:00
if ( isVideo ) {
flash . flashNode . style . display = 'none' ;
}
} ;
flash . show = function ( ) {
2017-10-16 14:07:52 -04:00
isActive = true ;
2017-08-01 00:43:51 -04:00
if ( isVideo ) {
flash . flashNode . style . display = '' ;
}
} ;
flash . setSize = function ( width , height ) {
flash . flashNode . style . width = width + 'px' ;
flash . flashNode . style . height = height + 'px' ;
if ( flash . flashApi !== null && typeof flash . flashApi . fire _setSize === 'function' ) {
flash . flashApi . fire _setSize ( width , height ) ;
}
} ;
flash . destroy = function ( ) {
flash . flashNode . remove ( ) ;
} ;
if ( mediaFiles && mediaFiles . length > 0 ) {
for ( var _i4 = 0 , _total4 = mediaFiles . length ; _i4 < _total4 ; _i4 ++ ) {
if ( _renderer . renderer . renderers [ options . prefix ] . canPlayType ( mediaFiles [ _i4 ] . type ) ) {
flash . setSrc ( mediaFiles [ _i4 ] . src ) ;
break ;
}
}
}
return flash ;
}
} ;
var hasFlash = PluginDetector . hasPluginVersion ( 'flash' , [ 10 , 0 , 0 ] ) ;
if ( hasFlash ) {
_media . typeChecks . push ( function ( url ) {
url = url . toLowerCase ( ) ;
if ( url . startsWith ( 'rtmp' ) ) {
if ( ~ url . indexOf ( '.mp3' ) ) {
return 'audio/rtmp' ;
} else {
return 'video/rtmp' ;
}
} else if ( /\.og(a|g)/i . test ( url ) ) {
return 'audio/ogg' ;
} else if ( ~ url . indexOf ( '.m3u8' ) ) {
return 'application/x-mpegURL' ;
} else if ( ~ url . indexOf ( '.mpd' ) ) {
return 'application/dash+xml' ;
} else if ( ~ url . indexOf ( '.flv' ) ) {
return 'video/flv' ;
} else {
return null ;
}
} ) ;
var FlashMediaElementVideoRenderer = {
name : 'flash_video' ,
options : {
prefix : 'flash_video' ,
filename : 'mediaelement-flash-video.swf' ,
enablePseudoStreaming : false ,
pseudoStreamingStartQueryParam : 'start' ,
2017-10-16 14:07:52 -04:00
pseudoStreamingType : 'byte' ,
proxyType : '' ,
streamDelimiter : ''
2017-08-01 00:43:51 -04:00
} ,
canPlayType : function canPlayType ( type ) {
return ~ [ 'video/mp4' , 'video/rtmp' , 'audio/rtmp' , 'rtmp/mp4' , 'audio/mp4' , 'video/flv' , 'video/x-flv' ] . indexOf ( type . toLowerCase ( ) ) ;
} ,
create : FlashMediaElementRenderer . create
} ;
_renderer . renderer . add ( FlashMediaElementVideoRenderer ) ;
var FlashMediaElementHlsVideoRenderer = {
name : 'flash_hls' ,
options : {
prefix : 'flash_hls' ,
filename : 'mediaelement-flash-video-hls.swf'
} ,
canPlayType : function canPlayType ( type ) {
2017-08-12 02:20:44 -04:00
return ~ [ 'application/x-mpegurl' , 'application/vnd.apple.mpegurl' , 'audio/mpegurl' , 'audio/hls' , 'video/hls' ] . indexOf ( type . toLowerCase ( ) ) ;
2017-08-01 00:43:51 -04:00
} ,
create : FlashMediaElementRenderer . create
} ;
_renderer . renderer . add ( FlashMediaElementHlsVideoRenderer ) ;
var FlashMediaElementMdashVideoRenderer = {
name : 'flash_dash' ,
options : {
prefix : 'flash_dash' ,
filename : 'mediaelement-flash-video-mdash.swf'
} ,
canPlayType : function canPlayType ( type ) {
return ~ [ 'application/dash+xml' ] . indexOf ( type . toLowerCase ( ) ) ;
} ,
create : FlashMediaElementRenderer . create
} ;
_renderer . renderer . add ( FlashMediaElementMdashVideoRenderer ) ;
var FlashMediaElementAudioRenderer = {
name : 'flash_audio' ,
options : {
prefix : 'flash_audio' ,
filename : 'mediaelement-flash-audio.swf'
} ,
canPlayType : function canPlayType ( type ) {
return ~ [ 'audio/mp3' ] . indexOf ( type . toLowerCase ( ) ) ;
} ,
create : FlashMediaElementRenderer . create
} ;
_renderer . renderer . add ( FlashMediaElementAudioRenderer ) ;
var FlashMediaElementAudioOggRenderer = {
name : 'flash_audio_ogg' ,
options : {
prefix : 'flash_audio_ogg' ,
filename : 'mediaelement-flash-audio-ogg.swf'
} ,
canPlayType : function canPlayType ( type ) {
return ~ [ 'audio/ogg' , 'audio/oga' , 'audio/ogv' ] . indexOf ( type . toLowerCase ( ) ) ;
} ,
create : FlashMediaElementRenderer . create
} ;
_renderer . renderer . add ( FlashMediaElementAudioOggRenderer ) ;
}
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "25" : 25 , "27" : 27 , "28" : 28 , "3" : 3 , "5" : 5 , "7" : 7 , "8" : 8 } ] , 21 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
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 ; } ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var NativeFlv = {
promise : null ,
load : function load ( settings ) {
if ( typeof flvjs !== 'undefined' ) {
NativeFlv . promise = new Promise ( function ( resolve ) {
resolve ( ) ;
} ) . then ( function ( ) {
NativeFlv . _createPlayer ( settings ) ;
} ) ;
} else {
2019-10-08 12:06:02 -04:00
settings . options . path = typeof settings . options . path === 'string' ? settings . options . path : 'https://cdn.jsdelivr.net/npm/flv.js@latest' ;
2017-08-01 00:43:51 -04:00
NativeFlv . promise = NativeFlv . promise || ( 0 , _dom . loadScript ) ( settings . options . path ) ;
NativeFlv . promise . then ( function ( ) {
NativeFlv . _createPlayer ( settings ) ;
} ) ;
}
return NativeFlv . promise ;
} ,
_createPlayer : function _createPlayer ( settings ) {
flvjs . LoggingControl . enableDebug = settings . options . debug ;
flvjs . LoggingControl . enableVerbose = settings . options . debug ;
2017-08-28 15:29:47 -04:00
var player = flvjs . createPlayer ( settings . options , settings . configs ) ;
2017-08-01 00:43:51 -04:00
_window2 . default [ '__ready__' + settings . id ] ( player ) ;
return player ;
}
} ;
var FlvNativeRenderer = {
name : 'native_flv' ,
options : {
prefix : 'native_flv' ,
flv : {
2019-10-08 12:06:02 -04:00
path : 'https://cdn.jsdelivr.net/npm/flv.js@latest' ,
2017-08-01 00:43:51 -04:00
cors : true ,
debug : false
}
} ,
canPlayType : function canPlayType ( type ) {
return _constants . HAS _MSE && [ 'video/x-flv' , 'video/flv' ] . indexOf ( type . toLowerCase ( ) ) > - 1 ;
} ,
create : function create ( mediaElement , options , mediaFiles ) {
var originalNode = mediaElement . originalNode ,
id = mediaElement . id + '_' + options . prefix ;
var node = null ,
flvPlayer = null ;
node = originalNode . cloneNode ( true ) ;
options = Object . assign ( options , mediaElement . options ) ;
var props = _mejs2 . default . html5media . properties ,
2019-10-08 12:06:02 -04:00
events = _mejs2 . default . html5media . events . concat ( [ 'click' , 'mouseover' , 'mouseout' ] ) . filter ( function ( e ) {
return e !== 'error' ;
} ) ,
2017-08-01 00:43:51 -04:00
attachNativeEvents = function attachNativeEvents ( e ) {
2019-10-08 12:06:02 -04:00
var event = ( 0 , _general . createEvent ) ( e . type , mediaElement ) ;
mediaElement . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ,
assignGettersSetters = function assignGettersSetters ( propName ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
node [ 'get' + capName ] = function ( ) {
return flvPlayer !== null ? node [ propName ] : null ;
} ;
node [ 'set' + capName ] = function ( value ) {
if ( _mejs2 . default . html5media . readOnlyProperties . indexOf ( propName ) === - 1 ) {
if ( propName === 'src' ) {
node [ propName ] = ( typeof value === 'undefined' ? 'undefined' : _typeof ( value ) ) === 'object' && value . src ? value . src : value ;
if ( flvPlayer !== null ) {
var _flvOptions = { } ;
_flvOptions . type = 'flv' ;
_flvOptions . url = value ;
_flvOptions . cors = options . flv . cors ;
_flvOptions . debug = options . flv . debug ;
_flvOptions . path = options . flv . path ;
2017-08-28 15:29:47 -04:00
var _flvConfigs = options . flv . configs ;
2017-08-01 00:43:51 -04:00
flvPlayer . destroy ( ) ;
for ( var i = 0 , total = events . length ; i < total ; i ++ ) {
node . removeEventListener ( events [ i ] , attachNativeEvents ) ;
}
flvPlayer = NativeFlv . _createPlayer ( {
options : _flvOptions ,
2017-08-28 15:29:47 -04:00
configs : _flvConfigs ,
2017-08-01 00:43:51 -04:00
id : id
} ) ;
flvPlayer . attachMediaElement ( node ) ;
flvPlayer . load ( ) ;
}
} else {
node [ propName ] = value ;
}
}
} ;
} ;
for ( var i = 0 , total = props . length ; i < total ; i ++ ) {
assignGettersSetters ( props [ i ] ) ;
}
_window2 . default [ '__ready__' + id ] = function ( _flvPlayer ) {
mediaElement . flvPlayer = flvPlayer = _flvPlayer ;
var flvEvents = flvjs . Events ,
assignEvents = function assignEvents ( eventName ) {
if ( eventName === 'loadedmetadata' ) {
flvPlayer . unload ( ) ;
flvPlayer . detachMediaElement ( ) ;
flvPlayer . attachMediaElement ( node ) ;
flvPlayer . load ( ) ;
}
node . addEventListener ( eventName , attachNativeEvents ) ;
} ;
for ( var _i = 0 , _total = events . length ; _i < _total ; _i ++ ) {
assignEvents ( events [ _i ] ) ;
}
2017-08-12 02:20:44 -04:00
var assignFlvEvents = function assignFlvEvents ( name , data ) {
if ( name === 'error' ) {
var message = data [ 0 ] + ': ' + data [ 1 ] + ' ' + data [ 2 ] . msg ;
mediaElement . generateError ( message , node . src ) ;
} else {
2019-10-08 12:06:02 -04:00
var _event = ( 0 , _general . createEvent ) ( name , mediaElement ) ;
_event . data = data ;
mediaElement . dispatchEvent ( _event ) ;
2017-08-12 02:20:44 -04:00
}
2017-08-01 00:43:51 -04:00
} ;
var _loop = function _loop ( eventType ) {
if ( flvEvents . hasOwnProperty ( eventType ) ) {
2017-08-12 02:20:44 -04:00
flvPlayer . on ( flvEvents [ eventType ] , function ( ) {
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
return assignFlvEvents ( flvEvents [ eventType ] , args ) ;
2017-08-01 00:43:51 -04:00
} ) ;
}
} ;
for ( var eventType in flvEvents ) {
_loop ( eventType ) ;
}
} ;
if ( mediaFiles && mediaFiles . length > 0 ) {
for ( var _i2 = 0 , _total2 = mediaFiles . length ; _i2 < _total2 ; _i2 ++ ) {
if ( _renderer . renderer . renderers [ options . prefix ] . canPlayType ( mediaFiles [ _i2 ] . type ) ) {
node . setAttribute ( 'src' , mediaFiles [ _i2 ] . src ) ;
break ;
}
}
}
node . setAttribute ( 'id' , id ) ;
originalNode . parentNode . insertBefore ( node , originalNode ) ;
originalNode . autoplay = false ;
originalNode . style . display = 'none' ;
var flvOptions = { } ;
flvOptions . type = 'flv' ;
flvOptions . url = node . src ;
flvOptions . cors = options . flv . cors ;
flvOptions . debug = options . flv . debug ;
flvOptions . path = options . flv . path ;
2017-08-28 15:29:47 -04:00
var flvConfigs = options . flv . configs ;
2017-08-01 00:43:51 -04:00
node . setSize = function ( width , height ) {
node . style . width = width + 'px' ;
node . style . height = height + 'px' ;
return node ;
} ;
node . hide = function ( ) {
if ( flvPlayer !== null ) {
flvPlayer . pause ( ) ;
}
node . style . display = 'none' ;
return node ;
} ;
node . show = function ( ) {
node . style . display = '' ;
return node ;
} ;
node . destroy = function ( ) {
if ( flvPlayer !== null ) {
flvPlayer . destroy ( ) ;
}
} ;
var event = ( 0 , _general . createEvent ) ( 'rendererready' , node ) ;
mediaElement . dispatchEvent ( event ) ;
mediaElement . promises . push ( NativeFlv . load ( {
options : flvOptions ,
2017-08-28 15:29:47 -04:00
configs : flvConfigs ,
2017-08-01 00:43:51 -04:00
id : id
} ) ) ;
return node ;
}
} ;
_media . typeChecks . push ( function ( url ) {
return ~ url . toLowerCase ( ) . indexOf ( '.flv' ) ? 'video/flv' : null ;
} ) ;
_renderer . renderer . add ( FlvNativeRenderer ) ;
2020-09-29 11:53:06 -04:00
} , { "25" : 25 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 22 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
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 ; } ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var NativeHls = {
promise : null ,
load : function load ( settings ) {
if ( typeof Hls !== 'undefined' ) {
NativeHls . promise = new Promise ( function ( resolve ) {
resolve ( ) ;
} ) . then ( function ( ) {
NativeHls . _createPlayer ( settings ) ;
} ) ;
} else {
2019-10-08 12:06:02 -04:00
settings . options . path = typeof settings . options . path === 'string' ? settings . options . path : 'https://cdn.jsdelivr.net/npm/hls.js@latest' ;
2017-08-01 00:43:51 -04:00
NativeHls . promise = NativeHls . promise || ( 0 , _dom . loadScript ) ( settings . options . path ) ;
NativeHls . promise . then ( function ( ) {
NativeHls . _createPlayer ( settings ) ;
} ) ;
}
return NativeHls . promise ;
} ,
_createPlayer : function _createPlayer ( settings ) {
var player = new Hls ( settings . options ) ;
_window2 . default [ '__ready__' + settings . id ] ( player ) ;
return player ;
}
} ;
var HlsNativeRenderer = {
name : 'native_hls' ,
options : {
prefix : 'native_hls' ,
hls : {
2019-10-08 12:06:02 -04:00
path : 'https://cdn.jsdelivr.net/npm/hls.js@latest' ,
2017-08-01 00:43:51 -04:00
autoStartLoad : false ,
debug : false
}
} ,
canPlayType : function canPlayType ( type ) {
2017-08-12 02:20:44 -04:00
return _constants . HAS _MSE && [ 'application/x-mpegurl' , 'application/vnd.apple.mpegurl' , 'audio/mpegurl' , 'audio/hls' , 'video/hls' ] . indexOf ( type . toLowerCase ( ) ) > - 1 ;
2017-08-01 00:43:51 -04:00
} ,
create : function create ( mediaElement , options , mediaFiles ) {
var originalNode = mediaElement . originalNode ,
id = mediaElement . id + '_' + options . prefix ,
preload = originalNode . getAttribute ( 'preload' ) ,
autoplay = originalNode . autoplay ;
var hlsPlayer = null ,
2017-08-28 15:29:47 -04:00
node = null ,
index = 0 ,
total = mediaFiles . length ;
2017-08-01 00:43:51 -04:00
node = originalNode . cloneNode ( true ) ;
options = Object . assign ( options , mediaElement . options ) ;
options . hls . autoStartLoad = preload && preload !== 'none' || autoplay ;
var props = _mejs2 . default . html5media . properties ,
2019-10-08 12:06:02 -04:00
events = _mejs2 . default . html5media . events . concat ( [ 'click' , 'mouseover' , 'mouseout' ] ) . filter ( function ( e ) {
return e !== 'error' ;
} ) ,
2017-08-01 00:43:51 -04:00
attachNativeEvents = function attachNativeEvents ( e ) {
2019-10-08 12:06:02 -04:00
var event = ( 0 , _general . createEvent ) ( e . type , mediaElement ) ;
mediaElement . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ,
assignGettersSetters = function assignGettersSetters ( propName ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
node [ 'get' + capName ] = function ( ) {
return hlsPlayer !== null ? node [ propName ] : null ;
} ;
node [ 'set' + capName ] = function ( value ) {
if ( _mejs2 . default . html5media . readOnlyProperties . indexOf ( propName ) === - 1 ) {
if ( propName === 'src' ) {
node [ propName ] = ( typeof value === 'undefined' ? 'undefined' : _typeof ( value ) ) === 'object' && value . src ? value . src : value ;
if ( hlsPlayer !== null ) {
hlsPlayer . destroy ( ) ;
2017-08-28 15:29:47 -04:00
for ( var i = 0 , _total = events . length ; i < _total ; i ++ ) {
2017-08-01 00:43:51 -04:00
node . removeEventListener ( events [ i ] , attachNativeEvents ) ;
}
hlsPlayer = NativeHls . _createPlayer ( {
options : options . hls ,
id : id
} ) ;
hlsPlayer . loadSource ( value ) ;
hlsPlayer . attachMedia ( node ) ;
}
} else {
node [ propName ] = value ;
}
}
} ;
} ;
2017-08-28 15:29:47 -04:00
for ( var i = 0 , _total2 = props . length ; i < _total2 ; i ++ ) {
2017-08-01 00:43:51 -04:00
assignGettersSetters ( props [ i ] ) ;
}
_window2 . default [ '__ready__' + id ] = function ( _hlsPlayer ) {
mediaElement . hlsPlayer = hlsPlayer = _hlsPlayer ;
var hlsEvents = Hls . Events ,
assignEvents = function assignEvents ( eventName ) {
if ( eventName === 'loadedmetadata' ) {
var url = mediaElement . originalNode . src ;
hlsPlayer . detachMedia ( ) ;
hlsPlayer . loadSource ( url ) ;
hlsPlayer . attachMedia ( node ) ;
}
node . addEventListener ( eventName , attachNativeEvents ) ;
} ;
2017-08-28 15:29:47 -04:00
for ( var _i = 0 , _total3 = events . length ; _i < _total3 ; _i ++ ) {
2017-08-01 00:43:51 -04:00
assignEvents ( events [ _i ] ) ;
}
var recoverDecodingErrorDate = void 0 ,
recoverSwapAudioCodecDate = void 0 ;
2017-08-12 02:20:44 -04:00
var assignHlsEvents = function assignHlsEvents ( name , data ) {
if ( name === 'hlsError' ) {
2017-08-28 15:29:47 -04:00
console . warn ( data ) ;
data = data [ 1 ] ;
2017-08-01 00:43:51 -04:00
if ( data . fatal ) {
switch ( data . type ) {
case 'mediaError' :
var now = new Date ( ) . getTime ( ) ;
if ( ! recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000 ) {
recoverDecodingErrorDate = new Date ( ) . getTime ( ) ;
hlsPlayer . recoverMediaError ( ) ;
} else if ( ! recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000 ) {
recoverSwapAudioCodecDate = new Date ( ) . getTime ( ) ;
console . warn ( 'Attempting to swap Audio Codec and recover from media error' ) ;
hlsPlayer . swapAudioCodec ( ) ;
hlsPlayer . recoverMediaError ( ) ;
} else {
2017-08-28 15:29:47 -04:00
var message = 'Cannot recover, last media error recovery failed' ;
mediaElement . generateError ( message , node . src ) ;
console . error ( message ) ;
2017-08-01 00:43:51 -04:00
}
break ;
case 'networkError' :
2017-08-28 15:29:47 -04:00
if ( data . details === 'manifestLoadError' ) {
2017-10-16 14:07:52 -04:00
if ( index < total && mediaFiles [ index + 1 ] !== undefined ) {
2017-08-28 15:29:47 -04:00
node . setSrc ( mediaFiles [ index ++ ] . src ) ;
node . load ( ) ;
node . play ( ) ;
2017-10-16 14:07:52 -04:00
} else {
var _message = 'Network error' ;
mediaElement . generateError ( _message , mediaFiles ) ;
console . error ( _message ) ;
2017-08-28 15:29:47 -04:00
}
} else {
2017-10-16 14:07:52 -04:00
var _message2 = 'Network error' ;
mediaElement . generateError ( _message2 , mediaFiles ) ;
console . error ( _message2 ) ;
2017-08-28 15:29:47 -04:00
}
2017-08-01 00:43:51 -04:00
break ;
default :
hlsPlayer . destroy ( ) ;
break ;
}
2019-10-08 12:06:02 -04:00
return ;
2017-08-01 00:43:51 -04:00
}
}
2019-10-08 12:06:02 -04:00
var event = ( 0 , _general . createEvent ) ( name , mediaElement ) ;
event . data = data ;
mediaElement . dispatchEvent ( event ) ;
2017-08-01 00:43:51 -04:00
} ;
2017-08-12 02:20:44 -04:00
var _loop = function _loop ( eventType ) {
2017-08-01 00:43:51 -04:00
if ( hlsEvents . hasOwnProperty ( eventType ) ) {
2017-08-12 02:20:44 -04:00
hlsPlayer . on ( hlsEvents [ eventType ] , function ( ) {
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
return assignHlsEvents ( hlsEvents [ eventType ] , args ) ;
} ) ;
2017-08-01 00:43:51 -04:00
}
2017-08-12 02:20:44 -04:00
} ;
for ( var eventType in hlsEvents ) {
_loop ( eventType ) ;
2017-08-01 00:43:51 -04:00
}
} ;
2017-08-28 15:29:47 -04:00
if ( total > 0 ) {
for ( ; index < total ; index ++ ) {
if ( _renderer . renderer . renderers [ options . prefix ] . canPlayType ( mediaFiles [ index ] . type ) ) {
node . setAttribute ( 'src' , mediaFiles [ index ] . src ) ;
2017-08-01 00:43:51 -04:00
break ;
}
}
}
if ( preload !== 'auto' && ! autoplay ) {
node . addEventListener ( 'play' , function ( ) {
if ( hlsPlayer !== null ) {
hlsPlayer . startLoad ( ) ;
}
} ) ;
node . addEventListener ( 'pause' , function ( ) {
if ( hlsPlayer !== null ) {
hlsPlayer . stopLoad ( ) ;
}
} ) ;
}
node . setAttribute ( 'id' , id ) ;
originalNode . parentNode . insertBefore ( node , originalNode ) ;
originalNode . autoplay = false ;
originalNode . style . display = 'none' ;
node . setSize = function ( width , height ) {
node . style . width = width + 'px' ;
node . style . height = height + 'px' ;
return node ;
} ;
node . hide = function ( ) {
node . pause ( ) ;
node . style . display = 'none' ;
return node ;
} ;
node . show = function ( ) {
node . style . display = '' ;
return node ;
} ;
node . destroy = function ( ) {
if ( hlsPlayer !== null ) {
hlsPlayer . stopLoad ( ) ;
hlsPlayer . destroy ( ) ;
}
} ;
var event = ( 0 , _general . createEvent ) ( 'rendererready' , node ) ;
mediaElement . dispatchEvent ( event ) ;
mediaElement . promises . push ( NativeHls . load ( {
options : options . hls ,
id : id
} ) ) ;
return node ;
}
} ;
_media . typeChecks . push ( function ( url ) {
return ~ url . toLowerCase ( ) . indexOf ( '.m3u8' ) ? 'application/x-mpegURL' : null ;
} ) ;
_renderer . renderer . add ( HlsNativeRenderer ) ;
2020-09-29 11:53:06 -04:00
} , { "25" : 25 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 23 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _constants = _dereq _ ( 25 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var HtmlMediaElement = {
name : 'html5' ,
options : {
prefix : 'html5'
} ,
canPlayType : function canPlayType ( type ) {
var mediaElement = _document2 . default . createElement ( 'video' ) ;
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 ) {
return 'yes' ;
} else if ( mediaElement . canPlayType ) {
return mediaElement . canPlayType ( type . toLowerCase ( ) ) . replace ( /no/ , '' ) ;
} else {
return '' ;
}
} ,
create : function create ( mediaElement , options , mediaFiles ) {
var id = mediaElement . id + '_' + options . prefix ;
2017-10-16 14:07:52 -04:00
var isActive = false ;
2017-08-01 00:43:51 -04:00
var node = null ;
if ( mediaElement . originalNode === undefined || mediaElement . originalNode === null ) {
node = _document2 . default . createElement ( 'audio' ) ;
mediaElement . appendChild ( node ) ;
} else {
node = mediaElement . originalNode ;
}
node . setAttribute ( 'id' , id ) ;
var props = _mejs2 . default . html5media . properties ,
assignGettersSetters = function assignGettersSetters ( propName ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
node [ 'get' + capName ] = function ( ) {
return node [ propName ] ;
} ;
node [ 'set' + capName ] = function ( value ) {
if ( _mejs2 . default . html5media . readOnlyProperties . indexOf ( propName ) === - 1 ) {
node [ propName ] = value ;
}
} ;
} ;
2017-08-28 15:29:47 -04:00
for ( var i = 0 , _total = props . length ; i < _total ; i ++ ) {
2017-08-01 00:43:51 -04:00
assignGettersSetters ( props [ i ] ) ;
}
2019-10-08 12:06:02 -04:00
var events = _mejs2 . default . html5media . events . concat ( [ 'click' , 'mouseover' , 'mouseout' ] ) . filter ( function ( e ) {
return e !== 'error' ;
} ) ,
2017-08-01 00:43:51 -04:00
assignEvents = function assignEvents ( eventName ) {
node . addEventListener ( eventName , function ( e ) {
2017-10-16 14:07:52 -04:00
if ( isActive ) {
var _event = ( 0 , _general . createEvent ) ( e . type , e . target ) ;
mediaElement . dispatchEvent ( _event ) ;
}
2017-08-01 00:43:51 -04:00
} ) ;
} ;
2017-08-28 15:29:47 -04:00
for ( var _i = 0 , _total2 = events . length ; _i < _total2 ; _i ++ ) {
2017-08-01 00:43:51 -04:00
assignEvents ( events [ _i ] ) ;
}
node . setSize = function ( width , height ) {
node . style . width = width + 'px' ;
node . style . height = height + 'px' ;
return node ;
} ;
node . hide = function ( ) {
2017-10-16 14:07:52 -04:00
isActive = false ;
2017-08-01 00:43:51 -04:00
node . style . display = 'none' ;
return node ;
} ;
node . show = function ( ) {
2017-10-16 14:07:52 -04:00
isActive = true ;
2017-08-01 00:43:51 -04:00
node . style . display = '' ;
return node ;
} ;
2017-08-28 15:29:47 -04:00
var index = 0 ,
total = mediaFiles . length ;
if ( total > 0 ) {
for ( ; index < total ; index ++ ) {
if ( _renderer . renderer . renderers [ options . prefix ] . canPlayType ( mediaFiles [ index ] . type ) ) {
node . setAttribute ( 'src' , mediaFiles [ index ] . src ) ;
2017-08-01 00:43:51 -04:00
break ;
}
}
}
2017-08-28 15:29:47 -04:00
node . addEventListener ( 'error' , function ( e ) {
2020-09-29 11:53:06 -04:00
if ( e && e . target && e . target . error && e . target . error . code === 4 && isActive ) {
2017-10-16 14:07:52 -04:00
if ( index < total && mediaFiles [ index + 1 ] !== undefined ) {
2017-08-28 15:29:47 -04:00
node . src = mediaFiles [ index ++ ] . src ;
node . load ( ) ;
node . play ( ) ;
} else {
mediaElement . generateError ( 'Media error: Format(s) not supported or source(s) not found' , mediaFiles ) ;
}
}
} ) ;
2017-08-01 00:43:51 -04:00
var event = ( 0 , _general . createEvent ) ( 'rendererready' , node ) ;
mediaElement . dispatchEvent ( event ) ;
return node ;
}
} ;
_window2 . default . HtmlMediaElement = _mejs2 . default . HtmlMediaElement = HtmlMediaElement ;
_renderer . renderer . add ( HtmlMediaElement ) ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "25" : 25 , "27" : 27 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 24 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _renderer = _dereq _ ( 8 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _media = _dereq _ ( 28 ) ;
2017-08-01 00:43:51 -04:00
2020-09-29 11:53:06 -04:00
var _dom = _dereq _ ( 26 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var YouTubeApi = {
isIframeStarted : false ,
isIframeLoaded : false ,
iframeQueue : [ ] ,
enqueueIframe : function enqueueIframe ( settings ) {
YouTubeApi . isLoaded = typeof YT !== 'undefined' && YT . loaded ;
if ( YouTubeApi . isLoaded ) {
YouTubeApi . createIframe ( settings ) ;
} else {
YouTubeApi . loadIframeApi ( ) ;
YouTubeApi . iframeQueue . push ( settings ) ;
}
} ,
loadIframeApi : function loadIframeApi ( ) {
if ( ! YouTubeApi . isIframeStarted ) {
( 0 , _dom . loadScript ) ( 'https://www.youtube.com/player_api' ) ;
YouTubeApi . isIframeStarted = true ;
}
} ,
iFrameReady : function iFrameReady ( ) {
YouTubeApi . isLoaded = true ;
YouTubeApi . isIframeLoaded = true ;
while ( YouTubeApi . iframeQueue . length > 0 ) {
var settings = YouTubeApi . iframeQueue . pop ( ) ;
YouTubeApi . createIframe ( settings ) ;
}
} ,
createIframe : function createIframe ( settings ) {
return new YT . Player ( settings . containerId , settings ) ;
} ,
getYouTubeId : function getYouTubeId ( url ) {
var youTubeId = '' ;
if ( url . indexOf ( '?' ) > 0 ) {
youTubeId = YouTubeApi . getYouTubeIdFromParam ( url ) ;
if ( youTubeId === '' ) {
youTubeId = YouTubeApi . getYouTubeIdFromUrl ( url ) ;
}
} else {
youTubeId = YouTubeApi . getYouTubeIdFromUrl ( url ) ;
}
var id = youTubeId . substring ( youTubeId . lastIndexOf ( '/' ) + 1 ) ;
youTubeId = id . split ( '?' ) ;
return youTubeId [ 0 ] ;
} ,
getYouTubeIdFromParam : function getYouTubeIdFromParam ( url ) {
if ( url === undefined || url === null || ! url . trim ( ) . length ) {
return null ;
}
var parts = url . split ( '?' ) ,
parameters = parts [ 1 ] . split ( '&' ) ;
var youTubeId = '' ;
for ( var i = 0 , total = parameters . length ; i < total ; i ++ ) {
var paramParts = parameters [ i ] . split ( '=' ) ;
if ( paramParts [ 0 ] === 'v' ) {
youTubeId = paramParts [ 1 ] ;
break ;
}
}
return youTubeId ;
} ,
getYouTubeIdFromUrl : function getYouTubeIdFromUrl ( url ) {
if ( url === undefined || url === null || ! url . trim ( ) . length ) {
return null ;
}
var parts = url . split ( '?' ) ;
url = parts [ 0 ] ;
return url . substring ( url . lastIndexOf ( '/' ) + 1 ) ;
} ,
getYouTubeNoCookieUrl : function getYouTubeNoCookieUrl ( url ) {
if ( url === undefined || url === null || ! url . trim ( ) . length || url . indexOf ( '//www.youtube' ) === - 1 ) {
return url ;
}
var parts = url . split ( '/' ) ;
parts [ 2 ] = parts [ 2 ] . replace ( '.com' , '-nocookie.com' ) ;
return parts . join ( '/' ) ;
}
} ;
var YouTubeIframeRenderer = {
name : 'youtube_iframe' ,
options : {
prefix : 'youtube_iframe' ,
youtube : {
autoplay : 0 ,
controls : 0 ,
disablekb : 1 ,
end : 0 ,
loop : 0 ,
modestbranding : 0 ,
playsinline : 0 ,
rel : 0 ,
showinfo : 0 ,
start : 0 ,
iv _load _policy : 3 ,
nocookie : false ,
imageQuality : null
}
} ,
canPlayType : function canPlayType ( type ) {
return ~ [ 'video/youtube' , 'video/x-youtube' ] . indexOf ( type . toLowerCase ( ) ) ;
} ,
create : function create ( mediaElement , options , mediaFiles ) {
var youtube = { } ,
apiStack = [ ] ,
readyState = 4 ;
var youTubeApi = null ,
paused = true ,
ended = false ,
youTubeIframe = null ,
volume = 1 ;
youtube . options = options ;
youtube . id = mediaElement . id + '_' + options . prefix ;
youtube . mediaElement = mediaElement ;
var props = _mejs2 . default . html5media . properties ,
assignGettersSetters = function assignGettersSetters ( propName ) {
var capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
youtube [ 'get' + capName ] = function ( ) {
if ( youTubeApi !== null ) {
var value = null ;
switch ( propName ) {
case 'currentTime' :
return youTubeApi . getCurrentTime ( ) ;
case 'duration' :
return youTubeApi . getDuration ( ) ;
case 'volume' :
volume = youTubeApi . getVolume ( ) / 100 ;
return volume ;
2019-10-08 12:06:02 -04:00
case 'playbackRate' :
return youTubeApi . getPlaybackRate ( ) ;
2017-08-01 00:43:51 -04:00
case 'paused' :
return paused ;
case 'ended' :
return ended ;
case 'muted' :
return youTubeApi . isMuted ( ) ;
case 'buffered' :
var percentLoaded = youTubeApi . getVideoLoadedFraction ( ) ,
duration = youTubeApi . getDuration ( ) ;
return {
start : function start ( ) {
return 0 ;
} ,
end : function end ( ) {
return percentLoaded * duration ;
} ,
length : 1
} ;
case 'src' :
return youTubeApi . getVideoUrl ( ) ;
case 'readyState' :
return readyState ;
}
return value ;
} else {
return null ;
}
} ;
youtube [ 'set' + capName ] = function ( value ) {
if ( youTubeApi !== null ) {
switch ( propName ) {
case 'src' :
var url = typeof value === 'string' ? value : value [ 0 ] . src ,
_videoId = YouTubeApi . getYouTubeId ( url ) ;
if ( mediaElement . originalNode . autoplay ) {
youTubeApi . loadVideoById ( _videoId ) ;
} else {
youTubeApi . cueVideoById ( _videoId ) ;
}
break ;
case 'currentTime' :
youTubeApi . seekTo ( value ) ;
break ;
case 'muted' :
if ( value ) {
youTubeApi . mute ( ) ;
} else {
youTubeApi . unMute ( ) ;
}
setTimeout ( function ( ) {
var event = ( 0 , _general . createEvent ) ( 'volumechange' , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
} , 50 ) ;
break ;
case 'volume' :
volume = value ;
youTubeApi . setVolume ( value * 100 ) ;
setTimeout ( function ( ) {
var event = ( 0 , _general . createEvent ) ( 'volumechange' , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
} , 50 ) ;
break ;
2019-10-08 12:06:02 -04:00
case 'playbackRate' :
youTubeApi . setPlaybackRate ( value ) ;
setTimeout ( function ( ) {
var event = ( 0 , _general . createEvent ) ( 'ratechange' , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
} , 50 ) ;
break ;
2017-08-01 00:43:51 -04:00
case 'readyState' :
var event = ( 0 , _general . createEvent ) ( 'canplay' , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
break ;
default :
break ;
}
} else {
apiStack . push ( { type : 'set' , propName : propName , value : value } ) ;
}
} ;
} ;
for ( var i = 0 , total = props . length ; i < total ; i ++ ) {
assignGettersSetters ( props [ i ] ) ;
}
var methods = _mejs2 . default . html5media . methods ,
assignMethods = function assignMethods ( methodName ) {
youtube [ methodName ] = function ( ) {
if ( youTubeApi !== null ) {
switch ( methodName ) {
case 'play' :
paused = false ;
return youTubeApi . playVideo ( ) ;
case 'pause' :
paused = true ;
return youTubeApi . pauseVideo ( ) ;
case 'load' :
return null ;
}
} else {
apiStack . push ( { type : 'call' , methodName : methodName } ) ;
}
} ;
} ;
for ( var _i = 0 , _total = methods . length ; _i < _total ; _i ++ ) {
assignMethods ( methods [ _i ] ) ;
}
2019-10-08 12:06:02 -04:00
var errorHandler = function errorHandler ( error ) {
var message = '' ;
switch ( error . data ) {
case 2 :
message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.' ;
break ;
case 5 :
message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.' ;
break ;
case 100 :
message = 'The video requested was not found. Either video has been removed or has been marked as private.' ;
break ;
case 101 :
case 105 :
message = 'The owner of the requested video does not allow it to be played in embedded players.' ;
break ;
default :
message = 'Unknown error.' ;
break ;
}
mediaElement . generateError ( 'Code ' + error . data + ': ' + message , mediaFiles ) ;
} ;
2017-08-01 00:43:51 -04:00
var youtubeContainer = _document2 . default . createElement ( 'div' ) ;
youtubeContainer . id = youtube . id ;
if ( youtube . options . youtube . nocookie ) {
mediaElement . originalNode . src = YouTubeApi . getYouTubeNoCookieUrl ( mediaFiles [ 0 ] . src ) ;
}
mediaElement . originalNode . parentNode . insertBefore ( youtubeContainer , mediaElement . originalNode ) ;
mediaElement . originalNode . style . display = 'none' ;
var isAudio = mediaElement . originalNode . tagName . toLowerCase ( ) === 'audio' ,
height = isAudio ? '1' : mediaElement . originalNode . height ,
width = isAudio ? '1' : mediaElement . originalNode . width ,
videoId = YouTubeApi . getYouTubeId ( mediaFiles [ 0 ] . src ) ,
youtubeSettings = {
id : youtube . id ,
containerId : youtubeContainer . id ,
videoId : videoId ,
height : height ,
width : width ,
2022-09-29 10:21:11 -04:00
host : youtube . options . youtube && youtube . options . youtube . nocookie ? 'https://www.youtube-nocookie.com' : undefined ,
2017-08-01 00:43:51 -04:00
playerVars : Object . assign ( {
controls : 0 ,
rel : 0 ,
disablekb : 1 ,
showinfo : 0 ,
modestbranding : 0 ,
html5 : 1 ,
iv _load _policy : 3
} , youtube . options . youtube ) ,
origin : _window2 . default . location . host ,
events : {
onReady : function onReady ( e ) {
mediaElement . youTubeApi = youTubeApi = e . target ;
mediaElement . youTubeState = {
paused : true ,
ended : false
} ;
if ( apiStack . length ) {
for ( var _i2 = 0 , _total2 = apiStack . length ; _i2 < _total2 ; _i2 ++ ) {
var stackItem = apiStack [ _i2 ] ;
if ( stackItem . type === 'set' ) {
var propName = stackItem . propName ,
capName = '' + propName . substring ( 0 , 1 ) . toUpperCase ( ) + propName . substring ( 1 ) ;
youtube [ 'set' + capName ] ( stackItem . value ) ;
} else if ( stackItem . type === 'call' ) {
youtube [ stackItem . methodName ] ( ) ;
}
}
}
youTubeIframe = youTubeApi . getIframe ( ) ;
2017-10-16 14:07:52 -04:00
if ( mediaElement . originalNode . muted ) {
2017-08-01 00:43:51 -04:00
youTubeApi . mute ( ) ;
}
var events = [ 'mouseover' , 'mouseout' ] ,
assignEvents = function assignEvents ( e ) {
var newEvent = ( 0 , _general . createEvent ) ( e . type , youtube ) ;
mediaElement . dispatchEvent ( newEvent ) ;
} ;
for ( var _i3 = 0 , _total3 = events . length ; _i3 < _total3 ; _i3 ++ ) {
youTubeIframe . addEventListener ( events [ _i3 ] , assignEvents , false ) ;
}
var initEvents = [ 'rendererready' , 'loadedmetadata' , 'loadeddata' , 'canplay' ] ;
for ( var _i4 = 0 , _total4 = initEvents . length ; _i4 < _total4 ; _i4 ++ ) {
var event = ( 0 , _general . createEvent ) ( initEvents [ _i4 ] , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
}
} ,
onStateChange : function onStateChange ( e ) {
var events = [ ] ;
switch ( e . data ) {
case - 1 :
events = [ 'loadedmetadata' ] ;
paused = true ;
ended = false ;
break ;
case 0 :
events = [ 'ended' ] ;
paused = false ;
ended = ! youtube . options . youtube . loop ;
if ( ! youtube . options . youtube . loop ) {
youtube . stopInterval ( ) ;
}
break ;
case 1 :
events = [ 'play' , 'playing' ] ;
paused = false ;
ended = false ;
youtube . startInterval ( ) ;
break ;
case 2 :
events = [ 'pause' ] ;
paused = true ;
ended = false ;
youtube . stopInterval ( ) ;
break ;
case 3 :
events = [ 'progress' ] ;
ended = false ;
break ;
case 5 :
events = [ 'loadeddata' , 'loadedmetadata' , 'canplay' ] ;
paused = true ;
ended = false ;
break ;
}
for ( var _i5 = 0 , _total5 = events . length ; _i5 < _total5 ; _i5 ++ ) {
var event = ( 0 , _general . createEvent ) ( events [ _i5 ] , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
}
} ,
onError : function onError ( e ) {
2019-10-08 12:06:02 -04:00
return errorHandler ( e ) ;
2017-08-01 00:43:51 -04:00
}
}
} ;
2017-10-16 14:07:52 -04:00
if ( isAudio || mediaElement . originalNode . hasAttribute ( 'playsinline' ) ) {
2017-08-01 00:43:51 -04:00
youtubeSettings . playerVars . playsinline = 1 ;
}
2017-10-16 14:07:52 -04:00
if ( mediaElement . originalNode . controls ) {
youtubeSettings . playerVars . controls = 1 ;
}
2017-08-01 00:43:51 -04:00
if ( mediaElement . originalNode . autoplay ) {
youtubeSettings . playerVars . autoplay = 1 ;
}
if ( mediaElement . originalNode . loop ) {
youtubeSettings . playerVars . loop = 1 ;
}
2019-10-08 12:06:02 -04:00
if ( ( youtubeSettings . playerVars . loop && parseInt ( youtubeSettings . playerVars . loop , 10 ) === 1 || mediaElement . originalNode . src . indexOf ( 'loop=' ) > - 1 ) && ! youtubeSettings . playerVars . playlist && mediaElement . originalNode . src . indexOf ( 'playlist=' ) === - 1 ) {
youtubeSettings . playerVars . playlist = YouTubeApi . getYouTubeId ( mediaElement . originalNode . src ) ;
}
2017-08-01 00:43:51 -04:00
YouTubeApi . enqueueIframe ( youtubeSettings ) ;
youtube . onEvent = function ( eventName , player , _youTubeState ) {
if ( _youTubeState !== null && _youTubeState !== undefined ) {
mediaElement . youTubeState = _youTubeState ;
}
} ;
youtube . setSize = function ( width , height ) {
if ( youTubeApi !== null ) {
youTubeApi . setSize ( width , height ) ;
}
} ;
youtube . hide = function ( ) {
youtube . stopInterval ( ) ;
youtube . pause ( ) ;
if ( youTubeIframe ) {
youTubeIframe . style . display = 'none' ;
}
} ;
youtube . show = function ( ) {
if ( youTubeIframe ) {
youTubeIframe . style . display = '' ;
}
} ;
youtube . destroy = function ( ) {
youTubeApi . destroy ( ) ;
} ;
youtube . interval = null ;
youtube . startInterval = function ( ) {
youtube . interval = setInterval ( function ( ) {
var event = ( 0 , _general . createEvent ) ( 'timeupdate' , youtube ) ;
mediaElement . dispatchEvent ( event ) ;
} , 250 ) ;
} ;
youtube . stopInterval = function ( ) {
if ( youtube . interval ) {
clearInterval ( youtube . interval ) ;
}
} ;
youtube . getPosterUrl = function ( ) {
var quality = options . youtube . imageQuality ,
resolutions = [ 'default' , 'hqdefault' , 'mqdefault' , 'sddefault' , 'maxresdefault' ] ,
id = YouTubeApi . getYouTubeId ( mediaElement . originalNode . src ) ;
return quality && resolutions . indexOf ( quality ) > - 1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '' ;
} ;
return youtube ;
}
} ;
_window2 . default . onYouTubePlayerAPIReady = function ( ) {
YouTubeApi . iFrameReady ( ) ;
} ;
_media . typeChecks . push ( function ( url ) {
return ( /\/\/(www\.youtube|youtu\.?be)/i . test ( url ) ? 'video/x-youtube' : null
) ;
} ) ;
_renderer . renderer . add ( YouTubeIframeRenderer ) ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "26" : 26 , "27" : 27 , "28" : 28 , "3" : 3 , "7" : 7 , "8" : 8 } ] , 25 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2017-10-16 14:07:52 -04:00
exports . cancelFullScreen = exports . requestFullScreen = exports . isFullScreen = exports . FULLSCREEN _EVENT _NAME = exports . HAS _NATIVE _FULLSCREEN _ENABLED = exports . HAS _TRUE _NATIVE _FULLSCREEN = exports . HAS _IOS _FULLSCREEN = exports . HAS _MS _NATIVE _FULLSCREEN = exports . HAS _MOZ _NATIVE _FULLSCREEN = exports . HAS _WEBKIT _NATIVE _FULLSCREEN = exports . HAS _NATIVE _FULLSCREEN = exports . SUPPORTS _NATIVE _HLS = exports . SUPPORT _PASSIVE _EVENT = exports . SUPPORT _POINTER _EVENTS = exports . HAS _MSE = exports . IS _STOCK _ANDROID = exports . IS _SAFARI = exports . IS _FIREFOX = exports . IS _CHROME = exports . IS _EDGE = exports . IS _IE = exports . IS _ANDROID = exports . IS _IOS = exports . IS _IPOD = exports . IS _IPHONE = exports . IS _IPAD = exports . UA = exports . NAV = undefined ;
2017-08-01 00:43:51 -04:00
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var NAV = exports . NAV = _window2 . default . navigator ;
var UA = exports . UA = NAV . userAgent . toLowerCase ( ) ;
var IS _IPAD = exports . IS _IPAD = /ipad/i . test ( UA ) && ! _window2 . default . MSStream ;
var IS _IPHONE = exports . IS _IPHONE = /iphone/i . test ( UA ) && ! _window2 . default . MSStream ;
var IS _IPOD = exports . IS _IPOD = /ipod/i . test ( UA ) && ! _window2 . default . MSStream ;
var IS _IOS = exports . IS _IOS = /ipad|iphone|ipod/i . test ( UA ) && ! _window2 . default . MSStream ;
var IS _ANDROID = exports . IS _ANDROID = /android/i . test ( UA ) ;
var IS _IE = exports . IS _IE = /(trident|microsoft)/i . test ( NAV . appName ) ;
var IS _EDGE = exports . IS _EDGE = 'msLaunchUri' in NAV && ! ( 'documentMode' in _document2 . default ) ;
var IS _CHROME = exports . IS _CHROME = /chrome/i . test ( UA ) ;
var IS _FIREFOX = exports . IS _FIREFOX = /firefox/i . test ( UA ) ;
var IS _SAFARI = exports . IS _SAFARI = /safari/i . test ( UA ) && ! IS _CHROME ;
var IS _STOCK _ANDROID = exports . IS _STOCK _ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i . test ( UA ) ;
var HAS _MSE = exports . HAS _MSE = 'MediaSource' in _window2 . default ;
var SUPPORT _POINTER _EVENTS = exports . SUPPORT _POINTER _EVENTS = function ( ) {
var element = _document2 . default . createElement ( 'x' ) ,
documentElement = _document2 . default . documentElement ,
getComputedStyle = _window2 . default . getComputedStyle ;
if ( ! ( 'pointerEvents' in element . style ) ) {
return false ;
}
element . style . pointerEvents = 'auto' ;
element . style . pointerEvents = 'x' ;
documentElement . appendChild ( element ) ;
2019-10-08 12:06:02 -04:00
var supports = getComputedStyle && ( getComputedStyle ( element , '' ) || { } ) . pointerEvents === 'auto' ;
2017-08-01 00:43:51 -04:00
element . remove ( ) ;
return ! ! supports ;
} ( ) ;
2017-10-16 14:07:52 -04:00
var SUPPORT _PASSIVE _EVENT = exports . SUPPORT _PASSIVE _EVENT = function ( ) {
var supportsPassive = false ;
try {
var opts = Object . defineProperty ( { } , 'passive' , {
get : function get ( ) {
supportsPassive = true ;
}
} ) ;
_window2 . default . addEventListener ( 'test' , null , opts ) ;
} catch ( e ) { }
return supportsPassive ;
} ( ) ;
2017-08-01 00:43:51 -04:00
var html5Elements = [ 'source' , 'track' , 'audio' , 'video' ] ;
var video = void 0 ;
for ( var i = 0 , total = html5Elements . length ; i < total ; i ++ ) {
video = _document2 . default . createElement ( html5Elements [ i ] ) ;
}
2020-09-29 11:53:06 -04:00
var SUPPORTS _NATIVE _HLS = exports . SUPPORTS _NATIVE _HLS = IS _SAFARI || IS _IE && /edge/i . test ( UA ) ;
2017-08-01 00:43:51 -04:00
var hasiOSFullScreen = video . webkitEnterFullscreen !== undefined ;
var hasNativeFullscreen = video . requestFullscreen !== undefined ;
if ( hasiOSFullScreen && /mac os x 10_5/i . test ( UA ) ) {
hasNativeFullscreen = false ;
hasiOSFullScreen = false ;
}
var hasWebkitNativeFullScreen = video . webkitRequestFullScreen !== undefined ;
var hasMozNativeFullScreen = video . mozRequestFullScreen !== undefined ;
var hasMsNativeFullScreen = video . msRequestFullscreen !== undefined ;
var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen ;
var nativeFullScreenEnabled = hasTrueNativeFullScreen ;
var fullScreenEventName = '' ;
var isFullScreen = void 0 ,
requestFullScreen = void 0 ,
cancelFullScreen = void 0 ;
if ( hasMozNativeFullScreen ) {
nativeFullScreenEnabled = _document2 . default . mozFullScreenEnabled ;
} else if ( hasMsNativeFullScreen ) {
nativeFullScreenEnabled = _document2 . default . msFullscreenEnabled ;
}
if ( IS _CHROME ) {
hasiOSFullScreen = false ;
}
if ( hasTrueNativeFullScreen ) {
if ( hasWebkitNativeFullScreen ) {
fullScreenEventName = 'webkitfullscreenchange' ;
} else if ( hasMozNativeFullScreen ) {
2020-09-29 11:53:06 -04:00
fullScreenEventName = 'fullscreenchange' ;
2017-08-01 00:43:51 -04:00
} else if ( hasMsNativeFullScreen ) {
fullScreenEventName = 'MSFullscreenChange' ;
}
exports . isFullScreen = isFullScreen = function isFullScreen ( ) {
if ( hasMozNativeFullScreen ) {
return _document2 . default . mozFullScreen ;
} else if ( hasWebkitNativeFullScreen ) {
return _document2 . default . webkitIsFullScreen ;
} else if ( hasMsNativeFullScreen ) {
return _document2 . default . msFullscreenElement !== null ;
}
} ;
exports . requestFullScreen = requestFullScreen = function requestFullScreen ( el ) {
if ( hasWebkitNativeFullScreen ) {
el . webkitRequestFullScreen ( ) ;
} else if ( hasMozNativeFullScreen ) {
el . mozRequestFullScreen ( ) ;
} else if ( hasMsNativeFullScreen ) {
el . msRequestFullscreen ( ) ;
}
} ;
exports . cancelFullScreen = cancelFullScreen = function cancelFullScreen ( ) {
if ( hasWebkitNativeFullScreen ) {
_document2 . default . webkitCancelFullScreen ( ) ;
} else if ( hasMozNativeFullScreen ) {
_document2 . default . mozCancelFullScreen ( ) ;
} else if ( hasMsNativeFullScreen ) {
_document2 . default . msExitFullscreen ( ) ;
}
} ;
}
var HAS _NATIVE _FULLSCREEN = exports . HAS _NATIVE _FULLSCREEN = hasNativeFullscreen ;
var HAS _WEBKIT _NATIVE _FULLSCREEN = exports . HAS _WEBKIT _NATIVE _FULLSCREEN = hasWebkitNativeFullScreen ;
var HAS _MOZ _NATIVE _FULLSCREEN = exports . HAS _MOZ _NATIVE _FULLSCREEN = hasMozNativeFullScreen ;
var HAS _MS _NATIVE _FULLSCREEN = exports . HAS _MS _NATIVE _FULLSCREEN = hasMsNativeFullScreen ;
var HAS _IOS _FULLSCREEN = exports . HAS _IOS _FULLSCREEN = hasiOSFullScreen ;
var HAS _TRUE _NATIVE _FULLSCREEN = exports . HAS _TRUE _NATIVE _FULLSCREEN = hasTrueNativeFullScreen ;
var HAS _NATIVE _FULLSCREEN _ENABLED = exports . HAS _NATIVE _FULLSCREEN _ENABLED = nativeFullScreenEnabled ;
var FULLSCREEN _EVENT _NAME = exports . FULLSCREEN _EVENT _NAME = fullScreenEventName ;
exports . isFullScreen = isFullScreen ;
exports . requestFullScreen = requestFullScreen ;
exports . cancelFullScreen = cancelFullScreen ;
_mejs2 . default . Features = _mejs2 . default . Features || { } ;
_mejs2 . default . Features . isiPad = IS _IPAD ;
_mejs2 . default . Features . isiPod = IS _IPOD ;
_mejs2 . default . Features . isiPhone = IS _IPHONE ;
_mejs2 . default . Features . isiOS = _mejs2 . default . Features . isiPhone || _mejs2 . default . Features . isiPad ;
_mejs2 . default . Features . isAndroid = IS _ANDROID ;
_mejs2 . default . Features . isIE = IS _IE ;
_mejs2 . default . Features . isEdge = IS _EDGE ;
_mejs2 . default . Features . isChrome = IS _CHROME ;
_mejs2 . default . Features . isFirefox = IS _FIREFOX ;
_mejs2 . default . Features . isSafari = IS _SAFARI ;
_mejs2 . default . Features . isStockAndroid = IS _STOCK _ANDROID ;
_mejs2 . default . Features . hasMSE = HAS _MSE ;
_mejs2 . default . Features . supportsNativeHLS = SUPPORTS _NATIVE _HLS ;
_mejs2 . default . Features . supportsPointerEvents = SUPPORT _POINTER _EVENTS ;
2017-10-16 14:07:52 -04:00
_mejs2 . default . Features . supportsPassiveEvent = SUPPORT _PASSIVE _EVENT ;
2017-08-01 00:43:51 -04:00
_mejs2 . default . Features . hasiOSFullScreen = HAS _IOS _FULLSCREEN ;
_mejs2 . default . Features . hasNativeFullscreen = HAS _NATIVE _FULLSCREEN ;
_mejs2 . default . Features . hasWebkitNativeFullScreen = HAS _WEBKIT _NATIVE _FULLSCREEN ;
_mejs2 . default . Features . hasMozNativeFullScreen = HAS _MOZ _NATIVE _FULLSCREEN ;
_mejs2 . default . Features . hasMsNativeFullScreen = HAS _MS _NATIVE _FULLSCREEN ;
_mejs2 . default . Features . hasTrueNativeFullScreen = HAS _TRUE _NATIVE _FULLSCREEN ;
_mejs2 . default . Features . nativeFullScreenEnabled = HAS _NATIVE _FULLSCREEN _ENABLED ;
_mejs2 . default . Features . fullScreenEventName = FULLSCREEN _EVENT _NAME ;
_mejs2 . default . Features . isFullScreen = isFullScreen ;
_mejs2 . default . Features . requestFullScreen = requestFullScreen ;
_mejs2 . default . Features . cancelFullScreen = cancelFullScreen ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "3" : 3 , "7" : 7 } ] , 26 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . removeClass = exports . addClass = exports . hasClass = undefined ;
exports . loadScript = loadScript ;
exports . offset = offset ;
exports . toggleClass = toggleClass ;
exports . fadeOut = fadeOut ;
exports . fadeIn = fadeIn ;
exports . siblings = siblings ;
exports . visible = visible ;
exports . ajax = ajax ;
var _window = _dereq _ ( 3 ) ;
var _window2 = _interopRequireDefault ( _window ) ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function loadScript ( url ) {
return new Promise ( function ( resolve , reject ) {
var script = _document2 . default . createElement ( 'script' ) ;
script . src = url ;
script . async = true ;
script . onload = function ( ) {
script . remove ( ) ;
resolve ( ) ;
} ;
script . onerror = function ( ) {
script . remove ( ) ;
reject ( ) ;
} ;
_document2 . default . head . appendChild ( script ) ;
} ) ;
}
function offset ( el ) {
var rect = el . getBoundingClientRect ( ) ,
scrollLeft = _window2 . default . pageXOffset || _document2 . default . documentElement . scrollLeft ,
scrollTop = _window2 . default . pageYOffset || _document2 . default . documentElement . scrollTop ;
return { top : rect . top + scrollTop , left : rect . left + scrollLeft } ;
}
var hasClassMethod = void 0 ,
addClassMethod = void 0 ,
removeClassMethod = void 0 ;
if ( 'classList' in _document2 . default . documentElement ) {
hasClassMethod = function hasClassMethod ( el , className ) {
return el . classList !== undefined && el . classList . contains ( className ) ;
} ;
addClassMethod = function addClassMethod ( el , className ) {
return el . classList . add ( className ) ;
} ;
removeClassMethod = function removeClassMethod ( el , className ) {
return el . classList . remove ( className ) ;
} ;
} else {
hasClassMethod = function hasClassMethod ( el , className ) {
return new RegExp ( '\\b' + className + '\\b' ) . test ( el . className ) ;
} ;
addClassMethod = function addClassMethod ( el , className ) {
if ( ! hasClass ( el , className ) ) {
el . className += ' ' + className ;
}
} ;
removeClassMethod = function removeClassMethod ( el , className ) {
el . className = el . className . replace ( new RegExp ( '\\b' + className + '\\b' , 'g' ) , '' ) ;
} ;
}
var hasClass = exports . hasClass = hasClassMethod ;
var addClass = exports . addClass = addClassMethod ;
var removeClass = exports . removeClass = removeClassMethod ;
function toggleClass ( el , className ) {
hasClass ( el , className ) ? removeClass ( el , className ) : addClass ( el , className ) ;
}
function fadeOut ( el ) {
var duration = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 400 ;
var callback = arguments [ 2 ] ;
if ( ! el . style . opacity ) {
el . style . opacity = 1 ;
}
var start = null ;
_window2 . default . requestAnimationFrame ( function animate ( timestamp ) {
start = start || timestamp ;
var progress = timestamp - start ;
var opacity = parseFloat ( 1 - progress / duration , 2 ) ;
el . style . opacity = opacity < 0 ? 0 : opacity ;
if ( progress > duration ) {
if ( callback && typeof callback === 'function' ) {
callback ( ) ;
}
} else {
_window2 . default . requestAnimationFrame ( animate ) ;
}
} ) ;
}
function fadeIn ( el ) {
var duration = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 400 ;
var callback = arguments [ 2 ] ;
if ( ! el . style . opacity ) {
el . style . opacity = 0 ;
}
var start = null ;
_window2 . default . requestAnimationFrame ( function animate ( timestamp ) {
start = start || timestamp ;
var progress = timestamp - start ;
var opacity = parseFloat ( progress / duration , 2 ) ;
el . style . opacity = opacity > 1 ? 1 : opacity ;
if ( progress > duration ) {
if ( callback && typeof callback === 'function' ) {
callback ( ) ;
}
} else {
_window2 . default . requestAnimationFrame ( animate ) ;
}
} ) ;
}
function siblings ( el , filter ) {
var siblings = [ ] ;
el = el . parentNode . firstChild ;
do {
if ( ! filter || filter ( el ) ) {
siblings . push ( el ) ;
}
} while ( el = el . nextSibling ) ;
return siblings ;
}
function visible ( elem ) {
2017-10-16 14:07:52 -04:00
if ( elem . getClientRects !== undefined && elem . getClientRects === 'function' ) {
return ! ! ( elem . offsetWidth || elem . offsetHeight || elem . getClientRects ( ) . length ) ;
}
return ! ! ( elem . offsetWidth || elem . offsetHeight ) ;
2017-08-01 00:43:51 -04:00
}
function ajax ( url , dataType , success , error ) {
var xhr = _window2 . default . XMLHttpRequest ? new XMLHttpRequest ( ) : new ActiveXObject ( 'Microsoft.XMLHTTP' ) ;
var type = 'application/x-www-form-urlencoded; charset=UTF-8' ,
completed = false ,
accept = '*/' . concat ( '*' ) ;
switch ( dataType ) {
case 'text' :
type = 'text/plain' ;
break ;
case 'json' :
type = 'application/json, text/javascript' ;
break ;
case 'html' :
type = 'text/html' ;
break ;
case 'xml' :
type = 'application/xml, text/xml' ;
break ;
}
if ( type !== 'application/x-www-form-urlencoded' ) {
accept = type + ', */*; q=0.01' ;
}
if ( xhr ) {
xhr . open ( 'GET' , url , true ) ;
xhr . setRequestHeader ( 'Accept' , accept ) ;
xhr . onreadystatechange = function ( ) {
if ( completed ) {
return ;
}
if ( xhr . readyState === 4 ) {
if ( xhr . status === 200 ) {
completed = true ;
var data = void 0 ;
switch ( dataType ) {
case 'json' :
data = JSON . parse ( xhr . responseText ) ;
break ;
case 'xml' :
data = xhr . responseXML ;
break ;
default :
data = xhr . responseText ;
break ;
}
success ( data ) ;
} else if ( typeof error === 'function' ) {
error ( xhr . status ) ;
}
}
} ;
xhr . send ( ) ;
}
}
_mejs2 . default . Utils = _mejs2 . default . Utils || { } ;
_mejs2 . default . Utils . offset = offset ;
_mejs2 . default . Utils . hasClass = hasClass ;
_mejs2 . default . Utils . addClass = addClass ;
_mejs2 . default . Utils . removeClass = removeClass ;
_mejs2 . default . Utils . toggleClass = toggleClass ;
_mejs2 . default . Utils . fadeIn = fadeIn ;
_mejs2 . default . Utils . fadeOut = fadeOut ;
_mejs2 . default . Utils . siblings = siblings ;
_mejs2 . default . Utils . visible = visible ;
_mejs2 . default . Utils . ajax = ajax ;
_mejs2 . default . Utils . loadScript = loadScript ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "3" : 3 , "7" : 7 } ] , 27 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . escapeHTML = escapeHTML ;
exports . debounce = debounce ;
exports . isObjectEmpty = isObjectEmpty ;
exports . splitEvents = splitEvents ;
exports . createEvent = createEvent ;
exports . isNodeAfter = isNodeAfter ;
exports . isString = isString ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function escapeHTML ( input ) {
if ( typeof input !== 'string' ) {
throw new Error ( 'Argument passed must be a string' ) ;
}
var map = {
'&' : '&' ,
'<' : '<' ,
'>' : '>' ,
'"' : '"'
} ;
return input . replace ( /[&<>"]/g , function ( c ) {
return map [ c ] ;
} ) ;
}
function debounce ( func , wait ) {
var _this = this ,
_arguments = arguments ;
var immediate = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
if ( typeof func !== 'function' ) {
throw new Error ( 'First argument must be a function' ) ;
}
if ( typeof wait !== 'number' ) {
throw new Error ( 'Second argument must be a numeric value' ) ;
}
var timeout = void 0 ;
return function ( ) {
var context = _this ,
args = _arguments ;
var later = function later ( ) {
timeout = null ;
if ( ! immediate ) {
func . apply ( context , args ) ;
}
} ;
var callNow = immediate && ! timeout ;
clearTimeout ( timeout ) ;
timeout = setTimeout ( later , wait ) ;
if ( callNow ) {
func . apply ( context , args ) ;
}
} ;
}
function isObjectEmpty ( instance ) {
return Object . getOwnPropertyNames ( instance ) . length <= 0 ;
}
function splitEvents ( events , id ) {
var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/ ;
var ret = { d : [ ] , w : [ ] } ;
( events || '' ) . split ( ' ' ) . forEach ( function ( v ) {
var eventName = '' + v + ( id ? '.' + id : '' ) ;
if ( eventName . startsWith ( '.' ) ) {
ret . d . push ( eventName ) ;
ret . w . push ( eventName ) ;
} else {
ret [ rwindow . test ( v ) ? 'w' : 'd' ] . push ( eventName ) ;
}
} ) ;
ret . d = ret . d . join ( ' ' ) ;
ret . w = ret . w . join ( ' ' ) ;
return ret ;
}
function createEvent ( eventName , target ) {
if ( typeof eventName !== 'string' ) {
throw new Error ( 'Event name must be a string' ) ;
}
var eventFrags = eventName . match ( /([a-z]+\.([a-z]+))/i ) ,
detail = {
target : target
} ;
if ( eventFrags !== null ) {
eventName = eventFrags [ 1 ] ;
detail . namespace = eventFrags [ 2 ] ;
}
return new window . CustomEvent ( eventName , {
detail : detail
} ) ;
}
function isNodeAfter ( sourceNode , targetNode ) {
return ! ! ( sourceNode && targetNode && sourceNode . compareDocumentPosition ( targetNode ) & 2 ) ;
}
function isString ( value ) {
return typeof value === 'string' ;
}
_mejs2 . default . Utils = _mejs2 . default . Utils || { } ;
_mejs2 . default . Utils . escapeHTML = escapeHTML ;
_mejs2 . default . Utils . debounce = debounce ;
_mejs2 . default . Utils . isObjectEmpty = isObjectEmpty ;
_mejs2 . default . Utils . splitEvents = splitEvents ;
_mejs2 . default . Utils . createEvent = createEvent ;
_mejs2 . default . Utils . isNodeAfter = isNodeAfter ;
_mejs2 . default . Utils . isString = isString ;
2020-09-29 11:53:06 -04:00
} , { "7" : 7 } ] , 28 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . typeChecks = undefined ;
exports . absolutizeUrl = absolutizeUrl ;
exports . formatType = formatType ;
exports . getMimeFromType = getMimeFromType ;
exports . getTypeFromFile = getTypeFromFile ;
exports . getExtension = getExtension ;
exports . normalizeExtension = normalizeExtension ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
2020-09-29 11:53:06 -04:00
var _general = _dereq _ ( 27 ) ;
2017-08-01 00:43:51 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var typeChecks = exports . typeChecks = [ ] ;
function absolutizeUrl ( url ) {
if ( typeof url !== 'string' ) {
throw new Error ( '`url` argument must be a string' ) ;
}
var el = document . createElement ( 'div' ) ;
el . innerHTML = '<a href="' + ( 0 , _general . escapeHTML ) ( url ) + '">x</a>' ;
return el . firstChild . href ;
}
function formatType ( url ) {
var type = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : '' ;
2017-08-12 02:20:44 -04:00
return url && ! type ? getTypeFromFile ( url ) : type ;
2017-08-01 00:43:51 -04:00
}
function getMimeFromType ( type ) {
if ( typeof type !== 'string' ) {
throw new Error ( '`type` argument must be a string' ) ;
}
return type && type . indexOf ( ';' ) > - 1 ? type . substr ( 0 , type . indexOf ( ';' ) ) : type ;
}
function getTypeFromFile ( url ) {
if ( typeof url !== 'string' ) {
throw new Error ( '`url` argument must be a string' ) ;
}
for ( var i = 0 , total = typeChecks . length ; i < total ; i ++ ) {
var type = typeChecks [ i ] ( url ) ;
if ( type ) {
return type ;
}
}
var ext = getExtension ( url ) ,
normalizedExt = normalizeExtension ( ext ) ;
var mime = 'video/mp4' ;
if ( normalizedExt ) {
2022-09-29 10:21:11 -04:00
if ( ~ [ 'mp4' , 'm4v' , 'ogg' , 'ogv' , 'webm' , 'flv' , 'mpeg' ] . indexOf ( normalizedExt ) ) {
2017-08-01 00:43:51 -04:00
mime = 'video/' + normalizedExt ;
2022-09-29 10:21:11 -04:00
} else if ( 'mov' === normalizedExt ) {
mime = 'video/quicktime' ;
2017-08-01 00:43:51 -04:00
} else if ( ~ [ 'mp3' , 'oga' , 'wav' , 'mid' , 'midi' ] . indexOf ( normalizedExt ) ) {
mime = 'audio/' + normalizedExt ;
}
}
return mime ;
}
function getExtension ( url ) {
if ( typeof url !== 'string' ) {
throw new Error ( '`url` argument must be a string' ) ;
}
var baseUrl = url . split ( '?' ) [ 0 ] ,
baseName = baseUrl . split ( '\\' ) . pop ( ) . split ( '/' ) . pop ( ) ;
return ~ baseName . indexOf ( '.' ) ? baseName . substring ( baseName . lastIndexOf ( '.' ) + 1 ) : '' ;
}
function normalizeExtension ( extension ) {
if ( typeof extension !== 'string' ) {
throw new Error ( '`extension` argument must be a string' ) ;
}
switch ( extension ) {
case 'mp4' :
case 'm4v' :
return 'mp4' ;
case 'webm' :
case 'webma' :
case 'webmv' :
return 'webm' ;
case 'ogg' :
case 'oga' :
case 'ogv' :
return 'ogg' ;
default :
return extension ;
}
}
_mejs2 . default . Utils = _mejs2 . default . Utils || { } ;
_mejs2 . default . Utils . typeChecks = typeChecks ;
_mejs2 . default . Utils . absolutizeUrl = absolutizeUrl ;
_mejs2 . default . Utils . formatType = formatType ;
_mejs2 . default . Utils . getMimeFromType = getMimeFromType ;
_mejs2 . default . Utils . getTypeFromFile = getTypeFromFile ;
_mejs2 . default . Utils . getExtension = getExtension ;
_mejs2 . default . Utils . normalizeExtension = normalizeExtension ;
2020-09-29 11:53:06 -04:00
} , { "27" : 27 , "7" : 7 } ] , 29 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
var _document = _dereq _ ( 2 ) ;
var _document2 = _interopRequireDefault ( _document ) ;
2020-09-29 11:53:06 -04:00
var _promisePolyfill = _dereq _ ( 4 ) ;
2017-08-01 00:43:51 -04:00
var _promisePolyfill2 = _interopRequireDefault ( _promisePolyfill ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
( function ( arr ) {
arr . forEach ( function ( item ) {
if ( item . hasOwnProperty ( 'remove' ) ) {
return ;
}
Object . defineProperty ( item , 'remove' , {
configurable : true ,
enumerable : true ,
writable : true ,
value : function remove ( ) {
this . parentNode . removeChild ( this ) ;
}
} ) ;
} ) ;
} ) ( [ Element . prototype , CharacterData . prototype , DocumentType . prototype ] ) ;
( function ( ) {
if ( typeof window . CustomEvent === 'function' ) {
return false ;
}
function CustomEvent ( event , params ) {
params = params || { bubbles : false , cancelable : false , detail : undefined } ;
var evt = _document2 . default . createEvent ( 'CustomEvent' ) ;
evt . initCustomEvent ( event , params . bubbles , params . cancelable , params . detail ) ;
return evt ;
}
CustomEvent . prototype = window . Event . prototype ;
window . CustomEvent = CustomEvent ;
} ) ( ) ;
if ( typeof Object . assign !== 'function' ) {
Object . assign = function ( target ) {
if ( target === null || target === undefined ) {
throw new TypeError ( 'Cannot convert undefined or null to object' ) ;
}
var to = Object ( target ) ;
for ( var index = 1 , total = arguments . length ; index < total ; index ++ ) {
var nextSource = arguments [ index ] ;
if ( nextSource !== null ) {
for ( var nextKey in nextSource ) {
if ( Object . prototype . hasOwnProperty . call ( nextSource , nextKey ) ) {
to [ nextKey ] = nextSource [ nextKey ] ;
}
}
}
}
return to ;
} ;
}
if ( ! String . prototype . startsWith ) {
String . prototype . startsWith = function ( searchString , position ) {
position = position || 0 ;
return this . substr ( position , searchString . length ) === searchString ;
} ;
}
if ( ! Element . prototype . matches ) {
Element . prototype . matches = Element . prototype . matchesSelector || Element . prototype . mozMatchesSelector || Element . prototype . msMatchesSelector || Element . prototype . oMatchesSelector || Element . prototype . webkitMatchesSelector || function ( s ) {
var matches = ( this . document || this . ownerDocument ) . querySelectorAll ( s ) ,
i = matches . length - 1 ;
while ( -- i >= 0 && matches . item ( i ) !== this ) { }
return i > - 1 ;
} ;
}
if ( window . Element && ! Element . prototype . closest ) {
Element . prototype . closest = function ( s ) {
var matches = ( this . document || this . ownerDocument ) . querySelectorAll ( s ) ,
i = void 0 ,
el = this ;
do {
i = matches . length ;
while ( -- i >= 0 && matches . item ( i ) !== el ) { }
} while ( i < 0 && ( el = el . parentElement ) ) ;
return el ;
} ;
}
( function ( ) {
var lastTime = 0 ;
var vendors = [ 'ms' , 'moz' , 'webkit' , 'o' ] ;
for ( var x = 0 ; x < vendors . length && ! window . requestAnimationFrame ; ++ x ) {
window . requestAnimationFrame = window [ vendors [ x ] + 'RequestAnimationFrame' ] ;
window . cancelAnimationFrame = window [ vendors [ x ] + 'CancelAnimationFrame' ] || window [ vendors [ x ] + 'CancelRequestAnimationFrame' ] ;
}
if ( ! window . requestAnimationFrame ) window . requestAnimationFrame = function ( callback ) {
var currTime = new Date ( ) . getTime ( ) ;
var timeToCall = Math . max ( 0 , 16 - ( currTime - lastTime ) ) ;
var id = window . setTimeout ( function ( ) {
callback ( currTime + timeToCall ) ;
} , timeToCall ) ;
lastTime = currTime + timeToCall ;
return id ;
} ;
if ( ! window . cancelAnimationFrame ) window . cancelAnimationFrame = function ( id ) {
clearTimeout ( id ) ;
} ;
} ) ( ) ;
if ( /firefox/i . test ( navigator . userAgent ) ) {
2017-08-28 15:29:47 -04:00
var getComputedStyle = window . getComputedStyle ;
2017-08-01 00:43:51 -04:00
window . getComputedStyle = function ( el , pseudoEl ) {
2017-08-28 15:29:47 -04:00
var t = getComputedStyle ( el , pseudoEl ) ;
2017-08-01 00:43:51 -04:00
return t === null ? { getPropertyValue : function getPropertyValue ( ) { } } : t ;
} ;
}
if ( ! window . Promise ) {
window . Promise = _promisePolyfill2 . default ;
}
( function ( constructor ) {
if ( constructor && constructor . prototype && constructor . prototype . children === null ) {
Object . defineProperty ( constructor . prototype , 'children' , {
get : function get ( ) {
var i = 0 ,
node = void 0 ,
nodes = this . childNodes ,
children = [ ] ;
while ( node = nodes [ i ++ ] ) {
if ( node . nodeType === 1 ) {
children . push ( node ) ;
}
}
return children ;
}
} ) ;
}
} ) ( window . Node || window . Element ) ;
2020-09-29 11:53:06 -04:00
} , { "2" : 2 , "4" : 4 } ] , 30 : [ function ( _dereq _ , module , exports ) {
2017-08-01 00:43:51 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . isDropFrame = isDropFrame ;
exports . secondsToTimeCode = secondsToTimeCode ;
exports . timeCodeToSeconds = timeCodeToSeconds ;
exports . calculateTimeFormat = calculateTimeFormat ;
exports . convertSMPTEtoSeconds = convertSMPTEtoSeconds ;
2020-09-29 11:53:06 -04:00
var _mejs = _dereq _ ( 7 ) ;
2017-08-01 00:43:51 -04:00
var _mejs2 = _interopRequireDefault ( _mejs ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function isDropFrame ( ) {
var fps = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : 25 ;
return ! ( fps % 1 === 0 ) ;
}
function secondsToTimeCode ( time ) {
var forceHours = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false ;
var showFrameCount = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
var fps = arguments . length > 3 && arguments [ 3 ] !== undefined ? arguments [ 3 ] : 25 ;
var secondsDecimalLength = arguments . length > 4 && arguments [ 4 ] !== undefined ? arguments [ 4 ] : 0 ;
2019-10-08 12:06:02 -04:00
var timeFormat = arguments . length > 5 && arguments [ 5 ] !== undefined ? arguments [ 5 ] : 'hh:mm:ss' ;
2017-08-01 00:43:51 -04:00
time = ! time || typeof time !== 'number' || time < 0 ? 0 : time ;
var dropFrames = Math . round ( fps * 0.066666 ) ,
timeBase = Math . round ( fps ) ,
framesPer24Hours = Math . round ( fps * 3600 ) * 24 ,
framesPer10Minutes = Math . round ( fps * 600 ) ,
frameSep = isDropFrame ( fps ) ? ';' : ':' ,
hours = void 0 ,
minutes = void 0 ,
seconds = void 0 ,
frames = void 0 ,
f = Math . round ( time * fps ) ;
if ( isDropFrame ( fps ) ) {
if ( f < 0 ) {
f = framesPer24Hours + f ;
}
f = f % framesPer24Hours ;
var d = Math . floor ( f / framesPer10Minutes ) ;
var m = f % framesPer10Minutes ;
f = f + dropFrames * 9 * d ;
if ( m > dropFrames ) {
f = f + dropFrames * Math . floor ( ( m - dropFrames ) / Math . round ( timeBase * 60 - dropFrames ) ) ;
}
var timeBaseDivision = Math . floor ( f / timeBase ) ;
hours = Math . floor ( Math . floor ( timeBaseDivision / 60 ) / 60 ) ;
minutes = Math . floor ( timeBaseDivision / 60 ) % 60 ;
if ( showFrameCount ) {
seconds = timeBaseDivision % 60 ;
} else {
2019-10-08 12:06:02 -04:00
seconds = Math . floor ( f / timeBase % 60 ) . toFixed ( secondsDecimalLength ) ;
2017-08-01 00:43:51 -04:00
}
} else {
hours = Math . floor ( time / 3600 ) % 24 ;
minutes = Math . floor ( time / 60 ) % 60 ;
if ( showFrameCount ) {
seconds = Math . floor ( time % 60 ) ;
} else {
2019-10-08 12:06:02 -04:00
seconds = Math . floor ( time % 60 ) . toFixed ( secondsDecimalLength ) ;
2017-08-01 00:43:51 -04:00
}
}
hours = hours <= 0 ? 0 : hours ;
minutes = minutes <= 0 ? 0 : minutes ;
seconds = seconds <= 0 ? 0 : seconds ;
2019-10-08 12:06:02 -04:00
seconds = seconds === 60 ? 0 : seconds ;
minutes = minutes === 60 ? 0 : minutes ;
2017-10-16 14:07:52 -04:00
var timeFormatFrags = timeFormat . split ( ':' ) ;
var timeFormatSettings = { } ;
for ( var i = 0 , total = timeFormatFrags . length ; i < total ; ++ i ) {
var unique = '' ;
for ( var j = 0 , t = timeFormatFrags [ i ] . length ; j < t ; j ++ ) {
if ( unique . indexOf ( timeFormatFrags [ i ] [ j ] ) < 0 ) {
unique += timeFormatFrags [ i ] [ j ] ;
}
}
if ( ~ [ 'f' , 's' , 'm' , 'h' ] . indexOf ( unique ) ) {
timeFormatSettings [ unique ] = timeFormatFrags [ i ] . length ;
}
}
var result = forceHours || hours > 0 ? ( hours < 10 && timeFormatSettings . h > 1 ? '0' + hours : hours ) + ':' : '' ;
result += ( minutes < 10 && timeFormatSettings . m > 1 ? '0' + minutes : minutes ) + ':' ;
result += '' + ( seconds < 10 && timeFormatSettings . s > 1 ? '0' + seconds : seconds ) ;
2017-08-01 00:43:51 -04:00
if ( showFrameCount ) {
frames = ( f % timeBase ) . toFixed ( 0 ) ;
frames = frames <= 0 ? 0 : frames ;
2017-10-16 14:07:52 -04:00
result += frames < 10 && timeFormatSettings . f ? frameSep + '0' + frames : '' + frameSep + frames ;
2017-08-01 00:43:51 -04:00
}
return result ;
}
function timeCodeToSeconds ( time ) {
var fps = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 25 ;
if ( typeof time !== 'string' ) {
throw new TypeError ( 'Time must be a string' ) ;
}
if ( time . indexOf ( ';' ) > 0 ) {
time = time . replace ( ';' , ':' ) ;
}
if ( ! /\d{2}(\:\d{2}){0,3}/i . test ( time ) ) {
throw new TypeError ( 'Time code must have the format `00:00:00`' ) ;
}
var parts = time . split ( ':' ) ;
var output = void 0 ,
hours = 0 ,
minutes = 0 ,
seconds = 0 ,
frames = 0 ,
totalMinutes = 0 ,
dropFrames = Math . round ( fps * 0.066666 ) ,
timeBase = Math . round ( fps ) ,
hFrames = timeBase * 3600 ,
mFrames = timeBase * 60 ;
switch ( parts . length ) {
default :
case 1 :
seconds = parseInt ( parts [ 0 ] , 10 ) ;
break ;
case 2 :
minutes = parseInt ( parts [ 0 ] , 10 ) ;
seconds = parseInt ( parts [ 1 ] , 10 ) ;
break ;
case 3 :
hours = parseInt ( parts [ 0 ] , 10 ) ;
minutes = parseInt ( parts [ 1 ] , 10 ) ;
seconds = parseInt ( parts [ 2 ] , 10 ) ;
break ;
case 4 :
hours = parseInt ( parts [ 0 ] , 10 ) ;
minutes = parseInt ( parts [ 1 ] , 10 ) ;
seconds = parseInt ( parts [ 2 ] , 10 ) ;
frames = parseInt ( parts [ 3 ] , 10 ) ;
break ;
}
if ( isDropFrame ( fps ) ) {
totalMinutes = 60 * hours + minutes ;
output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * ( totalMinutes - Math . floor ( totalMinutes / 10 ) ) ;
} else {
output = ( hFrames * hours + mFrames * minutes + fps * seconds + frames ) / fps ;
}
return parseFloat ( output . toFixed ( 3 ) ) ;
}
function calculateTimeFormat ( time , options ) {
var fps = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : 25 ;
time = ! time || typeof time !== 'number' || time < 0 ? 0 : time ;
var hours = Math . floor ( time / 3600 ) % 24 ,
minutes = Math . floor ( time / 60 ) % 60 ,
seconds = Math . floor ( time % 60 ) ,
frames = Math . floor ( ( time % 1 * fps ) . toFixed ( 3 ) ) ,
lis = [ [ frames , 'f' ] , [ seconds , 's' ] , [ minutes , 'm' ] , [ hours , 'h' ] ] ;
var format = options . timeFormat ,
firstTwoPlaces = format [ 1 ] === format [ 0 ] ,
separatorIndex = firstTwoPlaces ? 2 : 1 ,
separator = format . length < separatorIndex ? format [ separatorIndex ] : ':' ,
firstChar = format [ 0 ] ,
required = false ;
for ( var i = 0 , len = lis . length ; i < len ; i ++ ) {
if ( ~ format . indexOf ( lis [ i ] [ 1 ] ) ) {
required = true ;
} else if ( required ) {
var hasNextValue = false ;
for ( var j = i ; j < len ; j ++ ) {
if ( lis [ j ] [ 0 ] > 0 ) {
hasNextValue = true ;
break ;
}
}
if ( ! hasNextValue ) {
break ;
}
if ( ! firstTwoPlaces ) {
format = firstChar + format ;
}
format = lis [ i ] [ 1 ] + separator + format ;
if ( firstTwoPlaces ) {
format = lis [ i ] [ 1 ] + format ;
}
firstChar = lis [ i ] [ 1 ] ;
}
}
2017-10-16 14:07:52 -04:00
options . timeFormat = format ;
2017-08-01 00:43:51 -04:00
}
function convertSMPTEtoSeconds ( SMPTE ) {
if ( typeof SMPTE !== 'string' ) {
throw new TypeError ( 'Argument must be a string value' ) ;
}
SMPTE = SMPTE . replace ( ',' , '.' ) ;
var decimalLen = ~ SMPTE . indexOf ( '.' ) ? SMPTE . split ( '.' ) [ 1 ] . length : 0 ;
var secs = 0 ,
multiplier = 1 ;
SMPTE = SMPTE . split ( ':' ) . reverse ( ) ;
for ( var i = 0 , total = SMPTE . length ; i < total ; i ++ ) {
multiplier = 1 ;
if ( i > 0 ) {
multiplier = Math . pow ( 60 , i ) ;
}
secs += Number ( SMPTE [ i ] ) * multiplier ;
}
return Number ( secs . toFixed ( decimalLen ) ) ;
}
_mejs2 . default . Utils = _mejs2 . default . Utils || { } ;
_mejs2 . default . Utils . secondsToTimeCode = secondsToTimeCode ;
_mejs2 . default . Utils . timeCodeToSeconds = timeCodeToSeconds ;
_mejs2 . default . Utils . calculateTimeFormat = calculateTimeFormat ;
_mejs2 . default . Utils . convertSMPTEtoSeconds = convertSMPTEtoSeconds ;
2020-09-29 11:53:06 -04:00
} , { "7" : 7 } ] } , { } , [ 29 , 6 , 5 , 15 , 23 , 20 , 19 , 21 , 22 , 24 , 16 , 18 , 17 , 9 , 10 , 11 , 12 , 13 , 14 ] ) ;