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