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