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