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