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