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