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