[ 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_(10); 407 408 var _general = _dereq_(19); 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 },{"10":10,"19":19,"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_(19); 682 683 var _media2 = _dereq_(20); 684 685 var _renderer = _dereq_(9); 686 687 var _constants = _dereq_(17); 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 },{"17":17,"19":19,"2":2,"20":20,"3":3,"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 Object.defineProperty(exports, "__esModule", { 1265 value: true 1266 }); 1267 var EN = exports.EN = { 1268 'mejs.plural-form': 1, 1269 1270 'mejs.download-file': 'Download File', 1271 1272 '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/', 1273 1274 'mejs.fullscreen': 'Fullscreen', 1275 1276 'mejs.play': 'Play', 1277 'mejs.pause': 'Pause', 1278 1279 'mejs.time-slider': 'Time Slider', 1280 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.', 1281 'mejs.live-broadcast': 'Live Broadcast', 1282 1283 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.', 1284 'mejs.unmute': 'Unmute', 1285 'mejs.mute': 'Mute', 1286 'mejs.volume-slider': 'Volume Slider', 1287 1288 'mejs.video-player': 'Video Player', 1289 'mejs.audio-player': 'Audio Player', 1290 1291 'mejs.captions-subtitles': 'Captions/Subtitles', 1292 'mejs.captions-chapters': 'Chapters', 1293 'mejs.none': 'None', 1294 'mejs.afrikaans': 'Afrikaans', 1295 'mejs.albanian': 'Albanian', 1296 'mejs.arabic': 'Arabic', 1297 'mejs.belarusian': 'Belarusian', 1298 'mejs.bulgarian': 'Bulgarian', 1299 'mejs.catalan': 'Catalan', 1300 'mejs.chinese': 'Chinese', 1301 'mejs.chinese-simplified': 'Chinese (Simplified)', 1302 'mejs.chinese-traditional': 'Chinese (Traditional)', 1303 'mejs.croatian': 'Croatian', 1304 'mejs.czech': 'Czech', 1305 'mejs.danish': 'Danish', 1306 'mejs.dutch': 'Dutch', 1307 'mejs.english': 'English', 1308 'mejs.estonian': 'Estonian', 1309 'mejs.filipino': 'Filipino', 1310 'mejs.finnish': 'Finnish', 1311 'mejs.french': 'French', 1312 'mejs.galician': 'Galician', 1313 'mejs.german': 'German', 1314 'mejs.greek': 'Greek', 1315 'mejs.haitian-creole': 'Haitian Creole', 1316 'mejs.hebrew': 'Hebrew', 1317 'mejs.hindi': 'Hindi', 1318 'mejs.hungarian': 'Hungarian', 1319 'mejs.icelandic': 'Icelandic', 1320 'mejs.indonesian': 'Indonesian', 1321 'mejs.irish': 'Irish', 1322 'mejs.italian': 'Italian', 1323 'mejs.japanese': 'Japanese', 1324 'mejs.korean': 'Korean', 1325 'mejs.latvian': 'Latvian', 1326 'mejs.lithuanian': 'Lithuanian', 1327 'mejs.macedonian': 'Macedonian', 1328 'mejs.malay': 'Malay', 1329 'mejs.maltese': 'Maltese', 1330 'mejs.norwegian': 'Norwegian', 1331 'mejs.persian': 'Persian', 1332 'mejs.polish': 'Polish', 1333 'mejs.portuguese': 'Portuguese', 1334 'mejs.romanian': 'Romanian', 1335 'mejs.russian': 'Russian', 1336 'mejs.serbian': 'Serbian', 1337 'mejs.slovak': 'Slovak', 1338 'mejs.slovenian': 'Slovenian', 1339 'mejs.spanish': 'Spanish', 1340 'mejs.swahili': 'Swahili', 1341 'mejs.swedish': 'Swedish', 1342 'mejs.tagalog': 'Tagalog', 1343 'mejs.thai': 'Thai', 1344 'mejs.turkish': 'Turkish', 1345 'mejs.ukrainian': 'Ukrainian', 1346 'mejs.vietnamese': 'Vietnamese', 1347 'mejs.welsh': 'Welsh', 1348 'mejs.yiddish': 'Yiddish' 1349 }; 1350 1351 },{}],11:[function(_dereq_,module,exports){ 1352 'use strict'; 1353 1354 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; }; 1355 1356 var _window = _dereq_(3); 1357 1358 var _window2 = _interopRequireDefault(_window); 1359 1360 var _mejs = _dereq_(8); 1361 1362 var _mejs2 = _interopRequireDefault(_mejs); 1363 1364 var _renderer = _dereq_(9); 1365 1366 var _general = _dereq_(19); 1367 1368 var _media = _dereq_(20); 1369 1370 var _constants = _dereq_(17); 1371 1372 var _dom = _dereq_(18); 1373 1374 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1375 1376 var NativeDash = { 1377 1378 promise: null, 1379 1380 load: function load(settings) { 1381 if (typeof dashjs !== 'undefined') { 1382 NativeDash.promise = new Promise(function (resolve) { 1383 resolve(); 1384 }).then(function () { 1385 NativeDash._createPlayer(settings); 1386 }); 1387 } else { 1388 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js'; 1389 1390 NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); 1391 NativeDash.promise.then(function () { 1392 NativeDash._createPlayer(settings); 1393 }); 1394 } 1395 1396 return NativeDash.promise; 1397 }, 1398 1399 _createPlayer: function _createPlayer(settings) { 1400 var player = dashjs.MediaPlayer().create(); 1401 _window2.default['__ready__' + settings.id](player); 1402 return player; 1403 } 1404 }; 1405 1406 var DashNativeRenderer = { 1407 name: 'native_dash', 1408 options: { 1409 prefix: 'native_dash', 1410 dash: { 1411 path: 'https://cdn.dashjs.org/latest/dash.all.min.js', 1412 debug: false, 1413 drm: {}, 1414 1415 robustnessLevel: '' 1416 } 1417 }, 1418 1419 canPlayType: function canPlayType(type) { 1420 return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; 1421 }, 1422 1423 create: function create(mediaElement, options, mediaFiles) { 1424 1425 var originalNode = mediaElement.originalNode, 1426 id = mediaElement.id + '_' + options.prefix, 1427 autoplay = originalNode.autoplay, 1428 children = originalNode.children; 1429 1430 var node = null, 1431 dashPlayer = null; 1432 1433 originalNode.removeAttribute('type'); 1434 for (var i = 0, total = children.length; i < total; i++) { 1435 children[i].removeAttribute('type'); 1436 } 1437 1438 node = originalNode.cloneNode(true); 1439 options = Object.assign(options, mediaElement.options); 1440 1441 var props = _mejs2.default.html5media.properties, 1442 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { 1443 return e !== 'error'; 1444 }), 1445 attachNativeEvents = function attachNativeEvents(e) { 1446 var event = (0, _general.createEvent)(e.type, mediaElement); 1447 mediaElement.dispatchEvent(event); 1448 }, 1449 assignGettersSetters = function assignGettersSetters(propName) { 1450 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 1451 1452 node['get' + capName] = function () { 1453 return dashPlayer !== null ? node[propName] : null; 1454 }; 1455 1456 node['set' + capName] = function (value) { 1457 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { 1458 if (propName === 'src') { 1459 var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; 1460 node[propName] = source; 1461 if (dashPlayer !== null) { 1462 dashPlayer.reset(); 1463 for (var _i = 0, _total = events.length; _i < _total; _i++) { 1464 node.removeEventListener(events[_i], attachNativeEvents); 1465 } 1466 dashPlayer = NativeDash._createPlayer({ 1467 options: options.dash, 1468 id: id 1469 }); 1470 1471 if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') { 1472 dashPlayer.setProtectionData(value.drm); 1473 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { 1474 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); 1475 } 1476 } 1477 dashPlayer.attachSource(source); 1478 if (autoplay) { 1479 dashPlayer.play(); 1480 } 1481 } 1482 } else { 1483 node[propName] = value; 1484 } 1485 } 1486 }; 1487 }; 1488 1489 for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) { 1490 assignGettersSetters(props[_i2]); 1491 } 1492 1493 _window2.default['__ready__' + id] = function (_dashPlayer) { 1494 mediaElement.dashPlayer = dashPlayer = _dashPlayer; 1495 1496 var dashEvents = dashjs.MediaPlayer.events, 1497 assignEvents = function assignEvents(eventName) { 1498 if (eventName === 'loadedmetadata') { 1499 dashPlayer.initialize(); 1500 dashPlayer.attachView(node); 1501 dashPlayer.setAutoPlay(false); 1502 1503 if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) { 1504 dashPlayer.setProtectionData(options.dash.drm); 1505 if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { 1506 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); 1507 } 1508 } 1509 dashPlayer.attachSource(node.getSrc()); 1510 } 1511 1512 node.addEventListener(eventName, attachNativeEvents); 1513 }; 1514 1515 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { 1516 assignEvents(events[_i3]); 1517 } 1518 1519 var assignMdashEvents = function assignMdashEvents(e) { 1520 if (e.type.toLowerCase() === 'error') { 1521 mediaElement.generateError(e.message, node.src); 1522 console.error(e); 1523 } else { 1524 var _event = (0, _general.createEvent)(e.type, mediaElement); 1525 _event.data = e; 1526 mediaElement.dispatchEvent(_event); 1527 } 1528 }; 1529 1530 for (var eventType in dashEvents) { 1531 if (dashEvents.hasOwnProperty(eventType)) { 1532 dashPlayer.on(dashEvents[eventType], function (e) { 1533 return assignMdashEvents(e); 1534 }); 1535 } 1536 } 1537 }; 1538 1539 if (mediaFiles && mediaFiles.length > 0) { 1540 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { 1541 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { 1542 node.setAttribute('src', mediaFiles[_i4].src); 1543 if (typeof mediaFiles[_i4].drm !== 'undefined') { 1544 options.dash.drm = mediaFiles[_i4].drm; 1545 } 1546 break; 1547 } 1548 } 1549 } 1550 1551 node.setAttribute('id', id); 1552 1553 originalNode.parentNode.insertBefore(node, originalNode); 1554 originalNode.autoplay = false; 1555 originalNode.style.display = 'none'; 1556 1557 node.setSize = function (width, height) { 1558 node.style.width = width + 'px'; 1559 node.style.height = height + 'px'; 1560 return node; 1561 }; 1562 1563 node.hide = function () { 1564 node.pause(); 1565 node.style.display = 'none'; 1566 return node; 1567 }; 1568 1569 node.show = function () { 1570 node.style.display = ''; 1571 return node; 1572 }; 1573 1574 node.destroy = function () { 1575 if (dashPlayer !== null) { 1576 dashPlayer.reset(); 1577 } 1578 }; 1579 1580 var event = (0, _general.createEvent)('rendererready', node); 1581 mediaElement.dispatchEvent(event); 1582 1583 mediaElement.promises.push(NativeDash.load({ 1584 options: options.dash, 1585 id: id 1586 })); 1587 1588 return node; 1589 } 1590 }; 1591 1592 _media.typeChecks.push(function (url) { 1593 return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; 1594 }); 1595 1596 _renderer.renderer.add(DashNativeRenderer); 1597 1598 },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],12:[function(_dereq_,module,exports){ 1599 'use strict'; 1600 1601 Object.defineProperty(exports, "__esModule", { 1602 value: true 1603 }); 1604 exports.PluginDetector = undefined; 1605 1606 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; }; 1607 1608 var _window = _dereq_(3); 1609 1610 var _window2 = _interopRequireDefault(_window); 1611 1612 var _document = _dereq_(2); 1613 1614 var _document2 = _interopRequireDefault(_document); 1615 1616 var _mejs = _dereq_(8); 1617 1618 var _mejs2 = _interopRequireDefault(_mejs); 1619 1620 var _i18n = _dereq_(6); 1621 1622 var _i18n2 = _interopRequireDefault(_i18n); 1623 1624 var _renderer = _dereq_(9); 1625 1626 var _general = _dereq_(19); 1627 1628 var _constants = _dereq_(17); 1629 1630 var _media = _dereq_(20); 1631 1632 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 1633 1634 var PluginDetector = exports.PluginDetector = { 1635 plugins: [], 1636 1637 hasPluginVersion: function hasPluginVersion(plugin, v) { 1638 var pv = PluginDetector.plugins[plugin]; 1639 v[1] = v[1] || 0; 1640 v[2] = v[2] || 0; 1641 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]; 1642 }, 1643 1644 addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { 1645 PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); 1646 }, 1647 1648 detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { 1649 1650 var version = [0, 0, 0], 1651 description = void 0, 1652 ax = void 0; 1653 1654 if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { 1655 description = _constants.NAV.plugins[pluginName].description; 1656 if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { 1657 version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.'); 1658 for (var i = 0, total = version.length; i < total; i++) { 1659 version[i] = parseInt(version[i].match(/\d+/), 10); 1660 } 1661 } 1662 } else if (_window2.default.ActiveXObject !== undefined) { 1663 try { 1664 ax = new ActiveXObject(activeX); 1665 if (ax) { 1666 version = axDetect(ax); 1667 } 1668 } catch (e) { 1669 1670 } 1671 } 1672 return version; 1673 } 1674 }; 1675 1676 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { 1677 var version = [], 1678 d = ax.GetVariable("$version"); 1679 1680 if (d) { 1681 d = d.split(" ")[1].split(","); 1682 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; 1683 } 1684 return version; 1685 }); 1686 1687 var FlashMediaElementRenderer = { 1688 create: function create(mediaElement, options, mediaFiles) { 1689 1690 var flash = {}; 1691 var isActive = false; 1692 1693 flash.options = options; 1694 flash.id = mediaElement.id + '_' + flash.options.prefix; 1695 flash.mediaElement = mediaElement; 1696 flash.flashState = {}; 1697 flash.flashApi = null; 1698 flash.flashApiStack = []; 1699 1700 var props = _mejs2.default.html5media.properties, 1701 assignGettersSetters = function assignGettersSetters(propName) { 1702 flash.flashState[propName] = null; 1703 1704 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 1705 1706 flash['get' + capName] = function () { 1707 if (flash.flashApi !== null) { 1708 if (typeof flash.flashApi['get_' + propName] === 'function') { 1709 var value = flash.flashApi['get_' + propName](); 1710 1711 if (propName === 'buffered') { 1712 return { 1713 start: function start() { 1714 return 0; 1715 }, 1716 end: function end() { 1717 return value; 1718 }, 1719 length: 1 1720 }; 1721 } 1722 return value; 1723 } else { 1724 return null; 1725 } 1726 } else { 1727 return null; 1728 } 1729 }; 1730 1731 flash['set' + capName] = function (value) { 1732 if (propName === 'src') { 1733 value = (0, _media.absolutizeUrl)(value); 1734 } 1735 1736 if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { 1737 try { 1738 flash.flashApi['set_' + propName](value); 1739 } catch (e) { 1740 1741 } 1742 } else { 1743 flash.flashApiStack.push({ 1744 type: 'set', 1745 propName: propName, 1746 value: value 1747 }); 1748 } 1749 }; 1750 }; 1751 1752 for (var i = 0, total = props.length; i < total; i++) { 1753 assignGettersSetters(props[i]); 1754 } 1755 1756 var methods = _mejs2.default.html5media.methods, 1757 assignMethods = function assignMethods(methodName) { 1758 flash[methodName] = function () { 1759 if (isActive) { 1760 if (flash.flashApi !== null) { 1761 if (flash.flashApi['fire_' + methodName]) { 1762 try { 1763 flash.flashApi['fire_' + methodName](); 1764 } catch (e) { 1765 1766 } 1767 } else { 1768 1769 } 1770 } else { 1771 flash.flashApiStack.push({ 1772 type: 'call', 1773 methodName: methodName 1774 }); 1775 } 1776 } 1777 }; 1778 }; 1779 methods.push('stop'); 1780 for (var _i = 0, _total = methods.length; _i < _total; _i++) { 1781 assignMethods(methods[_i]); 1782 } 1783 1784 var initEvents = ['rendererready']; 1785 1786 for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { 1787 var event = (0, _general.createEvent)(initEvents[_i2], flash); 1788 mediaElement.dispatchEvent(event); 1789 } 1790 1791 _window2.default['__ready__' + flash.id] = function () { 1792 1793 flash.flashReady = true; 1794 flash.flashApi = _document2.default.getElementById('__' + flash.id); 1795 1796 if (flash.flashApiStack.length) { 1797 for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { 1798 var stackItem = flash.flashApiStack[_i3]; 1799 1800 if (stackItem.type === 'set') { 1801 var propName = stackItem.propName, 1802 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 1803 1804 flash['set' + capName](stackItem.value); 1805 } else if (stackItem.type === 'call') { 1806 flash[stackItem.methodName](); 1807 } 1808 } 1809 } 1810 }; 1811 1812 _window2.default['__event__' + flash.id] = function (eventName, message) { 1813 var event = (0, _general.createEvent)(eventName, flash); 1814 if (message) { 1815 try { 1816 event.data = JSON.parse(message); 1817 event.details.data = JSON.parse(message); 1818 } catch (e) { 1819 event.message = message; 1820 } 1821 } 1822 1823 flash.mediaElement.dispatchEvent(event); 1824 }; 1825 1826 flash.flashWrapper = _document2.default.createElement('div'); 1827 1828 if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { 1829 flash.options.shimScriptAccess = 'sameDomain'; 1830 } 1831 1832 var autoplay = mediaElement.originalNode.autoplay, 1833 flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')], 1834 isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video', 1835 flashHeight = isVideo ? mediaElement.originalNode.height : 1, 1836 flashWidth = isVideo ? mediaElement.originalNode.width : 1; 1837 1838 if (mediaElement.originalNode.getAttribute('src')) { 1839 flashVars.push('src=' + mediaElement.originalNode.getAttribute('src')); 1840 } 1841 1842 if (flash.options.enablePseudoStreaming === true) { 1843 flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam); 1844 flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType); 1845 } 1846 1847 if (flash.options.streamDelimiter) { 1848 flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter)); 1849 } 1850 1851 if (flash.options.proxyType) { 1852 flashVars.push('proxytype=' + flash.options.proxyType); 1853 } 1854 1855 mediaElement.appendChild(flash.flashWrapper); 1856 mediaElement.originalNode.style.display = 'none'; 1857 1858 var settings = []; 1859 1860 if (_constants.IS_IE || _constants.IS_EDGE) { 1861 var specialIEContainer = _document2.default.createElement('div'); 1862 flash.flashWrapper.appendChild(specialIEContainer); 1863 1864 if (_constants.IS_EDGE) { 1865 settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"']; 1866 } else { 1867 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 + '"']; 1868 } 1869 1870 if (!isVideo) { 1871 settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); 1872 } 1873 1874 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>'; 1875 } else { 1876 1877 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('&') + '"']; 1878 1879 if (isVideo) { 1880 settings.push('width="' + flashWidth + '"'); 1881 settings.push('height="' + flashHeight + '"'); 1882 } else { 1883 settings.push('style="position: fixed; left: -9999em; top: -9999em;"'); 1884 } 1885 1886 flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>'; 1887 } 1888 1889 flash.flashNode = flash.flashWrapper.lastChild; 1890 1891 flash.hide = function () { 1892 isActive = false; 1893 if (isVideo) { 1894 flash.flashNode.style.display = 'none'; 1895 } 1896 }; 1897 flash.show = function () { 1898 isActive = true; 1899 if (isVideo) { 1900 flash.flashNode.style.display = ''; 1901 } 1902 }; 1903 flash.setSize = function (width, height) { 1904 flash.flashNode.style.width = width + 'px'; 1905 flash.flashNode.style.height = height + 'px'; 1906 1907 if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') { 1908 flash.flashApi.fire_setSize(width, height); 1909 } 1910 }; 1911 1912 flash.destroy = function () { 1913 flash.flashNode.remove(); 1914 }; 1915 1916 if (mediaFiles && mediaFiles.length > 0) { 1917 for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { 1918 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { 1919 flash.setSrc(mediaFiles[_i4].src); 1920 break; 1921 } 1922 } 1923 } 1924 1925 return flash; 1926 } 1927 }; 1928 1929 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); 1930 1931 if (hasFlash) { 1932 _media.typeChecks.push(function (url) { 1933 url = url.toLowerCase(); 1934 1935 if (url.startsWith('rtmp')) { 1936 if (~url.indexOf('.mp3')) { 1937 return 'audio/rtmp'; 1938 } else { 1939 return 'video/rtmp'; 1940 } 1941 } else if (/\.og(a|g)/i.test(url)) { 1942 return 'audio/ogg'; 1943 } else if (~url.indexOf('.m3u8')) { 1944 return 'application/x-mpegURL'; 1945 } else if (~url.indexOf('.mpd')) { 1946 return 'application/dash+xml'; 1947 } else if (~url.indexOf('.flv')) { 1948 return 'video/flv'; 1949 } else { 1950 return null; 1951 } 1952 }); 1953 1954 var FlashMediaElementVideoRenderer = { 1955 name: 'flash_video', 1956 options: { 1957 prefix: 'flash_video', 1958 filename: 'mediaelement-flash-video.swf', 1959 enablePseudoStreaming: false, 1960 1961 pseudoStreamingStartQueryParam: 'start', 1962 1963 pseudoStreamingType: 'byte', 1964 1965 proxyType: '', 1966 1967 streamDelimiter: '' 1968 }, 1969 1970 canPlayType: function canPlayType(type) { 1971 return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); 1972 }, 1973 1974 create: FlashMediaElementRenderer.create 1975 1976 }; 1977 _renderer.renderer.add(FlashMediaElementVideoRenderer); 1978 1979 var FlashMediaElementHlsVideoRenderer = { 1980 name: 'flash_hls', 1981 options: { 1982 prefix: 'flash_hls', 1983 filename: 'mediaelement-flash-video-hls.swf' 1984 }, 1985 1986 canPlayType: function canPlayType(type) { 1987 return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); 1988 }, 1989 1990 create: FlashMediaElementRenderer.create 1991 }; 1992 _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); 1993 1994 var FlashMediaElementMdashVideoRenderer = { 1995 name: 'flash_dash', 1996 options: { 1997 prefix: 'flash_dash', 1998 filename: 'mediaelement-flash-video-mdash.swf' 1999 }, 2000 2001 canPlayType: function canPlayType(type) { 2002 return ~['application/dash+xml'].indexOf(type.toLowerCase()); 2003 }, 2004 2005 create: FlashMediaElementRenderer.create 2006 }; 2007 _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); 2008 2009 var FlashMediaElementAudioRenderer = { 2010 name: 'flash_audio', 2011 options: { 2012 prefix: 'flash_audio', 2013 filename: 'mediaelement-flash-audio.swf' 2014 }, 2015 2016 canPlayType: function canPlayType(type) { 2017 return ~['audio/mp3'].indexOf(type.toLowerCase()); 2018 }, 2019 2020 create: FlashMediaElementRenderer.create 2021 }; 2022 _renderer.renderer.add(FlashMediaElementAudioRenderer); 2023 2024 var FlashMediaElementAudioOggRenderer = { 2025 name: 'flash_audio_ogg', 2026 options: { 2027 prefix: 'flash_audio_ogg', 2028 filename: 'mediaelement-flash-audio-ogg.swf' 2029 }, 2030 2031 canPlayType: function canPlayType(type) { 2032 return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); 2033 }, 2034 2035 create: FlashMediaElementRenderer.create 2036 }; 2037 _renderer.renderer.add(FlashMediaElementAudioOggRenderer); 2038 } 2039 2040 },{"17":17,"19":19,"2":2,"20":20,"3":3,"6":6,"8":8,"9":9}],13:[function(_dereq_,module,exports){ 2041 'use strict'; 2042 2043 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; }; 2044 2045 var _window = _dereq_(3); 2046 2047 var _window2 = _interopRequireDefault(_window); 2048 2049 var _mejs = _dereq_(8); 2050 2051 var _mejs2 = _interopRequireDefault(_mejs); 2052 2053 var _renderer = _dereq_(9); 2054 2055 var _general = _dereq_(19); 2056 2057 var _constants = _dereq_(17); 2058 2059 var _media = _dereq_(20); 2060 2061 var _dom = _dereq_(18); 2062 2063 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2064 2065 var NativeFlv = { 2066 2067 promise: null, 2068 2069 load: function load(settings) { 2070 if (typeof flvjs !== 'undefined') { 2071 NativeFlv.promise = new Promise(function (resolve) { 2072 resolve(); 2073 }).then(function () { 2074 NativeFlv._createPlayer(settings); 2075 }); 2076 } else { 2077 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest'; 2078 2079 NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); 2080 NativeFlv.promise.then(function () { 2081 NativeFlv._createPlayer(settings); 2082 }); 2083 } 2084 2085 return NativeFlv.promise; 2086 }, 2087 2088 _createPlayer: function _createPlayer(settings) { 2089 flvjs.LoggingControl.enableDebug = settings.options.debug; 2090 flvjs.LoggingControl.enableVerbose = settings.options.debug; 2091 var player = flvjs.createPlayer(settings.options, settings.configs); 2092 _window2.default['__ready__' + settings.id](player); 2093 return player; 2094 } 2095 }; 2096 2097 var FlvNativeRenderer = { 2098 name: 'native_flv', 2099 options: { 2100 prefix: 'native_flv', 2101 flv: { 2102 path: 'https://cdn.jsdelivr.net/npm/flv.js@latest', 2103 2104 cors: true, 2105 debug: false 2106 } 2107 }, 2108 2109 canPlayType: function canPlayType(type) { 2110 return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; 2111 }, 2112 2113 create: function create(mediaElement, options, mediaFiles) { 2114 2115 var originalNode = mediaElement.originalNode, 2116 id = mediaElement.id + '_' + options.prefix; 2117 2118 var node = null, 2119 flvPlayer = null; 2120 2121 node = originalNode.cloneNode(true); 2122 options = Object.assign(options, mediaElement.options); 2123 2124 var props = _mejs2.default.html5media.properties, 2125 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { 2126 return e !== 'error'; 2127 }), 2128 attachNativeEvents = function attachNativeEvents(e) { 2129 var event = (0, _general.createEvent)(e.type, mediaElement); 2130 mediaElement.dispatchEvent(event); 2131 }, 2132 assignGettersSetters = function assignGettersSetters(propName) { 2133 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 2134 2135 node['get' + capName] = function () { 2136 return flvPlayer !== null ? node[propName] : null; 2137 }; 2138 2139 node['set' + capName] = function (value) { 2140 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { 2141 if (propName === 'src') { 2142 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; 2143 if (flvPlayer !== null) { 2144 var _flvOptions = {}; 2145 _flvOptions.type = 'flv'; 2146 _flvOptions.url = value; 2147 _flvOptions.cors = options.flv.cors; 2148 _flvOptions.debug = options.flv.debug; 2149 _flvOptions.path = options.flv.path; 2150 var _flvConfigs = options.flv.configs; 2151 2152 flvPlayer.destroy(); 2153 for (var i = 0, total = events.length; i < total; i++) { 2154 node.removeEventListener(events[i], attachNativeEvents); 2155 } 2156 flvPlayer = NativeFlv._createPlayer({ 2157 options: _flvOptions, 2158 configs: _flvConfigs, 2159 id: id 2160 }); 2161 flvPlayer.attachMediaElement(node); 2162 flvPlayer.load(); 2163 } 2164 } else { 2165 node[propName] = value; 2166 } 2167 } 2168 }; 2169 }; 2170 2171 for (var i = 0, total = props.length; i < total; i++) { 2172 assignGettersSetters(props[i]); 2173 } 2174 2175 _window2.default['__ready__' + id] = function (_flvPlayer) { 2176 mediaElement.flvPlayer = flvPlayer = _flvPlayer; 2177 2178 var flvEvents = flvjs.Events, 2179 assignEvents = function assignEvents(eventName) { 2180 if (eventName === 'loadedmetadata') { 2181 flvPlayer.unload(); 2182 flvPlayer.detachMediaElement(); 2183 flvPlayer.attachMediaElement(node); 2184 flvPlayer.load(); 2185 } 2186 2187 node.addEventListener(eventName, attachNativeEvents); 2188 }; 2189 2190 for (var _i = 0, _total = events.length; _i < _total; _i++) { 2191 assignEvents(events[_i]); 2192 } 2193 2194 var assignFlvEvents = function assignFlvEvents(name, data) { 2195 if (name === 'error') { 2196 var message = data[0] + ': ' + data[1] + ' ' + data[2].msg; 2197 mediaElement.generateError(message, node.src); 2198 } else { 2199 var _event = (0, _general.createEvent)(name, mediaElement); 2200 _event.data = data; 2201 mediaElement.dispatchEvent(_event); 2202 } 2203 }; 2204 2205 var _loop = function _loop(eventType) { 2206 if (flvEvents.hasOwnProperty(eventType)) { 2207 flvPlayer.on(flvEvents[eventType], function () { 2208 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 2209 args[_key] = arguments[_key]; 2210 } 2211 2212 return assignFlvEvents(flvEvents[eventType], args); 2213 }); 2214 } 2215 }; 2216 2217 for (var eventType in flvEvents) { 2218 _loop(eventType); 2219 } 2220 }; 2221 2222 if (mediaFiles && mediaFiles.length > 0) { 2223 for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { 2224 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { 2225 node.setAttribute('src', mediaFiles[_i2].src); 2226 break; 2227 } 2228 } 2229 } 2230 2231 node.setAttribute('id', id); 2232 2233 originalNode.parentNode.insertBefore(node, originalNode); 2234 originalNode.autoplay = false; 2235 originalNode.style.display = 'none'; 2236 2237 var flvOptions = {}; 2238 flvOptions.type = 'flv'; 2239 flvOptions.url = node.src; 2240 flvOptions.cors = options.flv.cors; 2241 flvOptions.debug = options.flv.debug; 2242 flvOptions.path = options.flv.path; 2243 var flvConfigs = options.flv.configs; 2244 2245 node.setSize = function (width, height) { 2246 node.style.width = width + 'px'; 2247 node.style.height = height + 'px'; 2248 return node; 2249 }; 2250 2251 node.hide = function () { 2252 if (flvPlayer !== null) { 2253 flvPlayer.pause(); 2254 } 2255 node.style.display = 'none'; 2256 return node; 2257 }; 2258 2259 node.show = function () { 2260 node.style.display = ''; 2261 return node; 2262 }; 2263 2264 node.destroy = function () { 2265 if (flvPlayer !== null) { 2266 flvPlayer.destroy(); 2267 } 2268 }; 2269 2270 var event = (0, _general.createEvent)('rendererready', node); 2271 mediaElement.dispatchEvent(event); 2272 2273 mediaElement.promises.push(NativeFlv.load({ 2274 options: flvOptions, 2275 configs: flvConfigs, 2276 id: id 2277 })); 2278 2279 return node; 2280 } 2281 }; 2282 2283 _media.typeChecks.push(function (url) { 2284 return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; 2285 }); 2286 2287 _renderer.renderer.add(FlvNativeRenderer); 2288 2289 },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],14:[function(_dereq_,module,exports){ 2290 'use strict'; 2291 2292 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; }; 2293 2294 var _window = _dereq_(3); 2295 2296 var _window2 = _interopRequireDefault(_window); 2297 2298 var _mejs = _dereq_(8); 2299 2300 var _mejs2 = _interopRequireDefault(_mejs); 2301 2302 var _renderer = _dereq_(9); 2303 2304 var _general = _dereq_(19); 2305 2306 var _constants = _dereq_(17); 2307 2308 var _media = _dereq_(20); 2309 2310 var _dom = _dereq_(18); 2311 2312 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2313 2314 var NativeHls = { 2315 2316 promise: null, 2317 2318 load: function load(settings) { 2319 if (typeof Hls !== 'undefined') { 2320 NativeHls.promise = new Promise(function (resolve) { 2321 resolve(); 2322 }).then(function () { 2323 NativeHls._createPlayer(settings); 2324 }); 2325 } else { 2326 settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest'; 2327 2328 NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); 2329 NativeHls.promise.then(function () { 2330 NativeHls._createPlayer(settings); 2331 }); 2332 } 2333 2334 return NativeHls.promise; 2335 }, 2336 2337 _createPlayer: function _createPlayer(settings) { 2338 var player = new Hls(settings.options); 2339 _window2.default['__ready__' + settings.id](player); 2340 return player; 2341 } 2342 }; 2343 2344 var HlsNativeRenderer = { 2345 name: 'native_hls', 2346 options: { 2347 prefix: 'native_hls', 2348 hls: { 2349 path: 'https://cdn.jsdelivr.net/npm/hls.js@latest', 2350 2351 autoStartLoad: false, 2352 debug: false 2353 } 2354 }, 2355 2356 canPlayType: function canPlayType(type) { 2357 return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; 2358 }, 2359 2360 create: function create(mediaElement, options, mediaFiles) { 2361 2362 var originalNode = mediaElement.originalNode, 2363 id = mediaElement.id + '_' + options.prefix, 2364 preload = originalNode.getAttribute('preload'), 2365 autoplay = originalNode.autoplay; 2366 2367 var hlsPlayer = null, 2368 node = null, 2369 index = 0, 2370 total = mediaFiles.length; 2371 2372 node = originalNode.cloneNode(true); 2373 options = Object.assign(options, mediaElement.options); 2374 options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; 2375 2376 var props = _mejs2.default.html5media.properties, 2377 events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { 2378 return e !== 'error'; 2379 }), 2380 attachNativeEvents = function attachNativeEvents(e) { 2381 var event = (0, _general.createEvent)(e.type, mediaElement); 2382 mediaElement.dispatchEvent(event); 2383 }, 2384 assignGettersSetters = function assignGettersSetters(propName) { 2385 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 2386 2387 node['get' + capName] = function () { 2388 return hlsPlayer !== null ? node[propName] : null; 2389 }; 2390 2391 node['set' + capName] = function (value) { 2392 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { 2393 if (propName === 'src') { 2394 node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; 2395 if (hlsPlayer !== null) { 2396 hlsPlayer.destroy(); 2397 for (var i = 0, _total = events.length; i < _total; i++) { 2398 node.removeEventListener(events[i], attachNativeEvents); 2399 } 2400 hlsPlayer = NativeHls._createPlayer({ 2401 options: options.hls, 2402 id: id 2403 }); 2404 hlsPlayer.loadSource(value); 2405 hlsPlayer.attachMedia(node); 2406 } 2407 } else { 2408 node[propName] = value; 2409 } 2410 } 2411 }; 2412 }; 2413 2414 for (var i = 0, _total2 = props.length; i < _total2; i++) { 2415 assignGettersSetters(props[i]); 2416 } 2417 2418 _window2.default['__ready__' + id] = function (_hlsPlayer) { 2419 mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; 2420 var hlsEvents = Hls.Events, 2421 assignEvents = function assignEvents(eventName) { 2422 if (eventName === 'loadedmetadata') { 2423 var url = mediaElement.originalNode.src; 2424 hlsPlayer.detachMedia(); 2425 hlsPlayer.loadSource(url); 2426 hlsPlayer.attachMedia(node); 2427 } 2428 2429 node.addEventListener(eventName, attachNativeEvents); 2430 }; 2431 2432 for (var _i = 0, _total3 = events.length; _i < _total3; _i++) { 2433 assignEvents(events[_i]); 2434 } 2435 2436 var recoverDecodingErrorDate = void 0, 2437 recoverSwapAudioCodecDate = void 0; 2438 var assignHlsEvents = function assignHlsEvents(name, data) { 2439 if (name === 'hlsError') { 2440 console.warn(data); 2441 data = data[1]; 2442 2443 if (data.fatal) { 2444 switch (data.type) { 2445 case 'mediaError': 2446 var now = new Date().getTime(); 2447 if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) { 2448 recoverDecodingErrorDate = new Date().getTime(); 2449 hlsPlayer.recoverMediaError(); 2450 } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) { 2451 recoverSwapAudioCodecDate = new Date().getTime(); 2452 console.warn('Attempting to swap Audio Codec and recover from media error'); 2453 hlsPlayer.swapAudioCodec(); 2454 hlsPlayer.recoverMediaError(); 2455 } else { 2456 var message = 'Cannot recover, last media error recovery failed'; 2457 mediaElement.generateError(message, node.src); 2458 console.error(message); 2459 } 2460 break; 2461 case 'networkError': 2462 if (data.details === 'manifestLoadError') { 2463 if (index < total && mediaFiles[index + 1] !== undefined) { 2464 node.setSrc(mediaFiles[index++].src); 2465 node.load(); 2466 node.play(); 2467 } else { 2468 var _message = 'Network error'; 2469 mediaElement.generateError(_message, mediaFiles); 2470 console.error(_message); 2471 } 2472 } else { 2473 var _message2 = 'Network error'; 2474 mediaElement.generateError(_message2, mediaFiles); 2475 console.error(_message2); 2476 } 2477 break; 2478 default: 2479 hlsPlayer.destroy(); 2480 break; 2481 } 2482 return; 2483 } 2484 } 2485 var event = (0, _general.createEvent)(name, mediaElement); 2486 event.data = data; 2487 mediaElement.dispatchEvent(event); 2488 }; 2489 2490 var _loop = function _loop(eventType) { 2491 if (hlsEvents.hasOwnProperty(eventType)) { 2492 hlsPlayer.on(hlsEvents[eventType], function () { 2493 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 2494 args[_key] = arguments[_key]; 2495 } 2496 2497 return assignHlsEvents(hlsEvents[eventType], args); 2498 }); 2499 } 2500 }; 2501 2502 for (var eventType in hlsEvents) { 2503 _loop(eventType); 2504 } 2505 }; 2506 2507 if (total > 0) { 2508 for (; index < total; index++) { 2509 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { 2510 node.setAttribute('src', mediaFiles[index].src); 2511 break; 2512 } 2513 } 2514 } 2515 2516 if (preload !== 'auto' && !autoplay) { 2517 node.addEventListener('play', function () { 2518 if (hlsPlayer !== null) { 2519 hlsPlayer.startLoad(); 2520 } 2521 }); 2522 2523 node.addEventListener('pause', function () { 2524 if (hlsPlayer !== null) { 2525 hlsPlayer.stopLoad(); 2526 } 2527 }); 2528 } 2529 2530 node.setAttribute('id', id); 2531 2532 originalNode.parentNode.insertBefore(node, originalNode); 2533 originalNode.autoplay = false; 2534 originalNode.style.display = 'none'; 2535 2536 node.setSize = function (width, height) { 2537 node.style.width = width + 'px'; 2538 node.style.height = height + 'px'; 2539 return node; 2540 }; 2541 2542 node.hide = function () { 2543 node.pause(); 2544 node.style.display = 'none'; 2545 return node; 2546 }; 2547 2548 node.show = function () { 2549 node.style.display = ''; 2550 return node; 2551 }; 2552 2553 node.destroy = function () { 2554 if (hlsPlayer !== null) { 2555 hlsPlayer.stopLoad(); 2556 hlsPlayer.destroy(); 2557 } 2558 }; 2559 2560 var event = (0, _general.createEvent)('rendererready', node); 2561 mediaElement.dispatchEvent(event); 2562 2563 mediaElement.promises.push(NativeHls.load({ 2564 options: options.hls, 2565 id: id 2566 })); 2567 2568 return node; 2569 } 2570 }; 2571 2572 _media.typeChecks.push(function (url) { 2573 return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; 2574 }); 2575 2576 _renderer.renderer.add(HlsNativeRenderer); 2577 2578 },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],15:[function(_dereq_,module,exports){ 2579 'use strict'; 2580 2581 var _window = _dereq_(3); 2582 2583 var _window2 = _interopRequireDefault(_window); 2584 2585 var _document = _dereq_(2); 2586 2587 var _document2 = _interopRequireDefault(_document); 2588 2589 var _mejs = _dereq_(8); 2590 2591 var _mejs2 = _interopRequireDefault(_mejs); 2592 2593 var _renderer = _dereq_(9); 2594 2595 var _general = _dereq_(19); 2596 2597 var _constants = _dereq_(17); 2598 2599 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2600 2601 var HtmlMediaElement = { 2602 name: 'html5', 2603 options: { 2604 prefix: 'html5' 2605 }, 2606 2607 canPlayType: function canPlayType(type) { 2608 2609 var mediaElement = _document2.default.createElement('video'); 2610 2611 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) { 2612 return 'yes'; 2613 } else if (mediaElement.canPlayType) { 2614 return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); 2615 } else { 2616 return ''; 2617 } 2618 }, 2619 2620 create: function create(mediaElement, options, mediaFiles) { 2621 2622 var id = mediaElement.id + '_' + options.prefix; 2623 var isActive = false; 2624 2625 var node = null; 2626 2627 if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { 2628 node = _document2.default.createElement('audio'); 2629 mediaElement.appendChild(node); 2630 } else { 2631 node = mediaElement.originalNode; 2632 } 2633 2634 node.setAttribute('id', id); 2635 2636 var props = _mejs2.default.html5media.properties, 2637 assignGettersSetters = function assignGettersSetters(propName) { 2638 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 2639 2640 node['get' + capName] = function () { 2641 return node[propName]; 2642 }; 2643 2644 node['set' + capName] = function (value) { 2645 if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { 2646 node[propName] = value; 2647 } 2648 }; 2649 }; 2650 2651 for (var i = 0, _total = props.length; i < _total; i++) { 2652 assignGettersSetters(props[i]); 2653 } 2654 2655 var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { 2656 return e !== 'error'; 2657 }), 2658 assignEvents = function assignEvents(eventName) { 2659 node.addEventListener(eventName, function (e) { 2660 if (isActive) { 2661 var _event = (0, _general.createEvent)(e.type, e.target); 2662 mediaElement.dispatchEvent(_event); 2663 } 2664 }); 2665 }; 2666 2667 for (var _i = 0, _total2 = events.length; _i < _total2; _i++) { 2668 assignEvents(events[_i]); 2669 } 2670 2671 node.setSize = function (width, height) { 2672 node.style.width = width + 'px'; 2673 node.style.height = height + 'px'; 2674 return node; 2675 }; 2676 2677 node.hide = function () { 2678 isActive = false; 2679 node.style.display = 'none'; 2680 2681 return node; 2682 }; 2683 2684 node.show = function () { 2685 isActive = true; 2686 node.style.display = ''; 2687 2688 return node; 2689 }; 2690 2691 var index = 0, 2692 total = mediaFiles.length; 2693 if (total > 0) { 2694 for (; index < total; index++) { 2695 if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { 2696 node.setAttribute('src', mediaFiles[index].src); 2697 break; 2698 } 2699 } 2700 } 2701 2702 node.addEventListener('error', function (e) { 2703 if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) { 2704 if (index < total && mediaFiles[index + 1] !== undefined) { 2705 node.src = mediaFiles[index++].src; 2706 node.load(); 2707 node.play(); 2708 } else { 2709 mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles); 2710 } 2711 } 2712 }); 2713 2714 var event = (0, _general.createEvent)('rendererready', node); 2715 mediaElement.dispatchEvent(event); 2716 2717 return node; 2718 } 2719 }; 2720 2721 _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement; 2722 2723 _renderer.renderer.add(HtmlMediaElement); 2724 2725 },{"17":17,"19":19,"2":2,"3":3,"8":8,"9":9}],16:[function(_dereq_,module,exports){ 2726 'use strict'; 2727 2728 var _window = _dereq_(3); 2729 2730 var _window2 = _interopRequireDefault(_window); 2731 2732 var _document = _dereq_(2); 2733 2734 var _document2 = _interopRequireDefault(_document); 2735 2736 var _mejs = _dereq_(8); 2737 2738 var _mejs2 = _interopRequireDefault(_mejs); 2739 2740 var _renderer = _dereq_(9); 2741 2742 var _general = _dereq_(19); 2743 2744 var _media = _dereq_(20); 2745 2746 var _dom = _dereq_(18); 2747 2748 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 2749 2750 var YouTubeApi = { 2751 isIframeStarted: false, 2752 2753 isIframeLoaded: false, 2754 2755 iframeQueue: [], 2756 2757 enqueueIframe: function enqueueIframe(settings) { 2758 YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; 2759 2760 if (YouTubeApi.isLoaded) { 2761 YouTubeApi.createIframe(settings); 2762 } else { 2763 YouTubeApi.loadIframeApi(); 2764 YouTubeApi.iframeQueue.push(settings); 2765 } 2766 }, 2767 2768 loadIframeApi: function loadIframeApi() { 2769 if (!YouTubeApi.isIframeStarted) { 2770 (0, _dom.loadScript)('https://www.youtube.com/player_api'); 2771 YouTubeApi.isIframeStarted = true; 2772 } 2773 }, 2774 2775 iFrameReady: function iFrameReady() { 2776 2777 YouTubeApi.isLoaded = true; 2778 YouTubeApi.isIframeLoaded = true; 2779 2780 while (YouTubeApi.iframeQueue.length > 0) { 2781 var settings = YouTubeApi.iframeQueue.pop(); 2782 YouTubeApi.createIframe(settings); 2783 } 2784 }, 2785 2786 createIframe: function createIframe(settings) { 2787 return new YT.Player(settings.containerId, settings); 2788 }, 2789 2790 getYouTubeId: function getYouTubeId(url) { 2791 2792 var youTubeId = ''; 2793 2794 if (url.indexOf('?') > 0) { 2795 youTubeId = YouTubeApi.getYouTubeIdFromParam(url); 2796 2797 if (youTubeId === '') { 2798 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); 2799 } 2800 } else { 2801 youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); 2802 } 2803 2804 var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1); 2805 youTubeId = id.split('?'); 2806 return youTubeId[0]; 2807 }, 2808 2809 getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { 2810 2811 if (url === undefined || url === null || !url.trim().length) { 2812 return null; 2813 } 2814 2815 var parts = url.split('?'), 2816 parameters = parts[1].split('&'); 2817 2818 var youTubeId = ''; 2819 2820 for (var i = 0, total = parameters.length; i < total; i++) { 2821 var paramParts = parameters[i].split('='); 2822 if (paramParts[0] === 'v') { 2823 youTubeId = paramParts[1]; 2824 break; 2825 } 2826 } 2827 2828 return youTubeId; 2829 }, 2830 2831 getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { 2832 2833 if (url === undefined || url === null || !url.trim().length) { 2834 return null; 2835 } 2836 2837 var parts = url.split('?'); 2838 url = parts[0]; 2839 return url.substring(url.lastIndexOf('/') + 1); 2840 }, 2841 2842 getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { 2843 if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { 2844 return url; 2845 } 2846 2847 var parts = url.split('/'); 2848 parts[2] = parts[2].replace('.com', '-nocookie.com'); 2849 return parts.join('/'); 2850 } 2851 }; 2852 2853 var YouTubeIframeRenderer = { 2854 name: 'youtube_iframe', 2855 2856 options: { 2857 prefix: 'youtube_iframe', 2858 2859 youtube: { 2860 autoplay: 0, 2861 controls: 0, 2862 disablekb: 1, 2863 end: 0, 2864 loop: 0, 2865 modestbranding: 0, 2866 playsinline: 0, 2867 rel: 0, 2868 showinfo: 0, 2869 start: 0, 2870 iv_load_policy: 3, 2871 2872 nocookie: false, 2873 2874 imageQuality: null 2875 } 2876 }, 2877 2878 canPlayType: function canPlayType(type) { 2879 return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); 2880 }, 2881 2882 create: function create(mediaElement, options, mediaFiles) { 2883 2884 var youtube = {}, 2885 apiStack = [], 2886 readyState = 4; 2887 2888 var youTubeApi = null, 2889 paused = true, 2890 ended = false, 2891 youTubeIframe = null, 2892 volume = 1; 2893 2894 youtube.options = options; 2895 youtube.id = mediaElement.id + '_' + options.prefix; 2896 youtube.mediaElement = mediaElement; 2897 2898 var props = _mejs2.default.html5media.properties, 2899 assignGettersSetters = function assignGettersSetters(propName) { 2900 2901 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 2902 2903 youtube['get' + capName] = function () { 2904 if (youTubeApi !== null) { 2905 var value = null; 2906 2907 switch (propName) { 2908 case 'currentTime': 2909 return youTubeApi.getCurrentTime(); 2910 case 'duration': 2911 return youTubeApi.getDuration(); 2912 case 'volume': 2913 volume = youTubeApi.getVolume() / 100; 2914 return volume; 2915 case 'playbackRate': 2916 return youTubeApi.getPlaybackRate(); 2917 case 'paused': 2918 return paused; 2919 case 'ended': 2920 return ended; 2921 case 'muted': 2922 return youTubeApi.isMuted(); 2923 case 'buffered': 2924 var percentLoaded = youTubeApi.getVideoLoadedFraction(), 2925 duration = youTubeApi.getDuration(); 2926 return { 2927 start: function start() { 2928 return 0; 2929 }, 2930 end: function end() { 2931 return percentLoaded * duration; 2932 }, 2933 length: 1 2934 }; 2935 case 'src': 2936 return youTubeApi.getVideoUrl(); 2937 case 'readyState': 2938 return readyState; 2939 } 2940 2941 return value; 2942 } else { 2943 return null; 2944 } 2945 }; 2946 2947 youtube['set' + capName] = function (value) { 2948 if (youTubeApi !== null) { 2949 switch (propName) { 2950 case 'src': 2951 var url = typeof value === 'string' ? value : value[0].src, 2952 _videoId = YouTubeApi.getYouTubeId(url); 2953 2954 if (mediaElement.originalNode.autoplay) { 2955 youTubeApi.loadVideoById(_videoId); 2956 } else { 2957 youTubeApi.cueVideoById(_videoId); 2958 } 2959 break; 2960 case 'currentTime': 2961 youTubeApi.seekTo(value); 2962 break; 2963 case 'muted': 2964 if (value) { 2965 youTubeApi.mute(); 2966 } else { 2967 youTubeApi.unMute(); 2968 } 2969 setTimeout(function () { 2970 var event = (0, _general.createEvent)('volumechange', youtube); 2971 mediaElement.dispatchEvent(event); 2972 }, 50); 2973 break; 2974 case 'volume': 2975 volume = value; 2976 youTubeApi.setVolume(value * 100); 2977 setTimeout(function () { 2978 var event = (0, _general.createEvent)('volumechange', youtube); 2979 mediaElement.dispatchEvent(event); 2980 }, 50); 2981 break; 2982 case 'playbackRate': 2983 youTubeApi.setPlaybackRate(value); 2984 setTimeout(function () { 2985 var event = (0, _general.createEvent)('ratechange', youtube); 2986 mediaElement.dispatchEvent(event); 2987 }, 50); 2988 break; 2989 case 'readyState': 2990 var event = (0, _general.createEvent)('canplay', youtube); 2991 mediaElement.dispatchEvent(event); 2992 break; 2993 default: 2994 2995 break; 2996 } 2997 } else { 2998 apiStack.push({ type: 'set', propName: propName, value: value }); 2999 } 3000 }; 3001 }; 3002 3003 for (var i = 0, total = props.length; i < total; i++) { 3004 assignGettersSetters(props[i]); 3005 } 3006 3007 var methods = _mejs2.default.html5media.methods, 3008 assignMethods = function assignMethods(methodName) { 3009 youtube[methodName] = function () { 3010 if (youTubeApi !== null) { 3011 switch (methodName) { 3012 case 'play': 3013 paused = false; 3014 return youTubeApi.playVideo(); 3015 case 'pause': 3016 paused = true; 3017 return youTubeApi.pauseVideo(); 3018 case 'load': 3019 return null; 3020 } 3021 } else { 3022 apiStack.push({ type: 'call', methodName: methodName }); 3023 } 3024 }; 3025 }; 3026 3027 for (var _i = 0, _total = methods.length; _i < _total; _i++) { 3028 assignMethods(methods[_i]); 3029 } 3030 3031 var errorHandler = function errorHandler(error) { 3032 var message = ''; 3033 switch (error.data) { 3034 case 2: 3035 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.'; 3036 break; 3037 case 5: 3038 message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.'; 3039 break; 3040 case 100: 3041 message = 'The video requested was not found. Either video has been removed or has been marked as private.'; 3042 break; 3043 case 101: 3044 case 105: 3045 message = 'The owner of the requested video does not allow it to be played in embedded players.'; 3046 break; 3047 default: 3048 message = 'Unknown error.'; 3049 break; 3050 } 3051 mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles); 3052 }; 3053 3054 var youtubeContainer = _document2.default.createElement('div'); 3055 youtubeContainer.id = youtube.id; 3056 3057 if (youtube.options.youtube.nocookie) { 3058 mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src); 3059 } 3060 3061 mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode); 3062 mediaElement.originalNode.style.display = 'none'; 3063 3064 var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', 3065 height = isAudio ? '1' : mediaElement.originalNode.height, 3066 width = isAudio ? '1' : mediaElement.originalNode.width, 3067 videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), 3068 youtubeSettings = { 3069 id: youtube.id, 3070 containerId: youtubeContainer.id, 3071 videoId: videoId, 3072 height: height, 3073 width: width, 3074 host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined, 3075 playerVars: Object.assign({ 3076 controls: 0, 3077 rel: 0, 3078 disablekb: 1, 3079 showinfo: 0, 3080 modestbranding: 0, 3081 html5: 1, 3082 iv_load_policy: 3 3083 }, youtube.options.youtube), 3084 origin: _window2.default.location.host, 3085 events: { 3086 onReady: function onReady(e) { 3087 mediaElement.youTubeApi = youTubeApi = e.target; 3088 mediaElement.youTubeState = { 3089 paused: true, 3090 ended: false 3091 }; 3092 3093 if (apiStack.length) { 3094 for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { 3095 3096 var stackItem = apiStack[_i2]; 3097 3098 if (stackItem.type === 'set') { 3099 var propName = stackItem.propName, 3100 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 3101 3102 youtube['set' + capName](stackItem.value); 3103 } else if (stackItem.type === 'call') { 3104 youtube[stackItem.methodName](); 3105 } 3106 } 3107 } 3108 3109 youTubeIframe = youTubeApi.getIframe(); 3110 3111 if (mediaElement.originalNode.muted) { 3112 youTubeApi.mute(); 3113 } 3114 3115 var events = ['mouseover', 'mouseout'], 3116 assignEvents = function assignEvents(e) { 3117 var newEvent = (0, _general.createEvent)(e.type, youtube); 3118 mediaElement.dispatchEvent(newEvent); 3119 }; 3120 3121 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { 3122 youTubeIframe.addEventListener(events[_i3], assignEvents, false); 3123 } 3124 3125 var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; 3126 3127 for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { 3128 var event = (0, _general.createEvent)(initEvents[_i4], youtube); 3129 mediaElement.dispatchEvent(event); 3130 } 3131 }, 3132 onStateChange: function onStateChange(e) { 3133 var events = []; 3134 3135 switch (e.data) { 3136 case -1: 3137 events = ['loadedmetadata']; 3138 paused = true; 3139 ended = false; 3140 break; 3141 case 0: 3142 events = ['ended']; 3143 paused = false; 3144 ended = !youtube.options.youtube.loop; 3145 if (!youtube.options.youtube.loop) { 3146 youtube.stopInterval(); 3147 } 3148 break; 3149 case 1: 3150 events = ['play', 'playing']; 3151 paused = false; 3152 ended = false; 3153 youtube.startInterval(); 3154 break; 3155 case 2: 3156 events = ['pause']; 3157 paused = true; 3158 ended = false; 3159 youtube.stopInterval(); 3160 break; 3161 case 3: 3162 events = ['progress']; 3163 ended = false; 3164 break; 3165 case 5: 3166 events = ['loadeddata', 'loadedmetadata', 'canplay']; 3167 paused = true; 3168 ended = false; 3169 break; 3170 } 3171 3172 for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { 3173 var event = (0, _general.createEvent)(events[_i5], youtube); 3174 mediaElement.dispatchEvent(event); 3175 } 3176 }, 3177 onError: function onError(e) { 3178 return errorHandler(e); 3179 } 3180 } 3181 }; 3182 3183 if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) { 3184 youtubeSettings.playerVars.playsinline = 1; 3185 } 3186 3187 if (mediaElement.originalNode.controls) { 3188 youtubeSettings.playerVars.controls = 1; 3189 } 3190 if (mediaElement.originalNode.autoplay) { 3191 youtubeSettings.playerVars.autoplay = 1; 3192 } 3193 if (mediaElement.originalNode.loop) { 3194 youtubeSettings.playerVars.loop = 1; 3195 } 3196 3197 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) { 3198 youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); 3199 } 3200 3201 YouTubeApi.enqueueIframe(youtubeSettings); 3202 3203 youtube.onEvent = function (eventName, player, _youTubeState) { 3204 if (_youTubeState !== null && _youTubeState !== undefined) { 3205 mediaElement.youTubeState = _youTubeState; 3206 } 3207 }; 3208 3209 youtube.setSize = function (width, height) { 3210 if (youTubeApi !== null) { 3211 youTubeApi.setSize(width, height); 3212 } 3213 }; 3214 youtube.hide = function () { 3215 youtube.stopInterval(); 3216 youtube.pause(); 3217 if (youTubeIframe) { 3218 youTubeIframe.style.display = 'none'; 3219 } 3220 }; 3221 youtube.show = function () { 3222 if (youTubeIframe) { 3223 youTubeIframe.style.display = ''; 3224 } 3225 }; 3226 youtube.destroy = function () { 3227 youTubeApi.destroy(); 3228 }; 3229 youtube.interval = null; 3230 3231 youtube.startInterval = function () { 3232 youtube.interval = setInterval(function () { 3233 var event = (0, _general.createEvent)('timeupdate', youtube); 3234 mediaElement.dispatchEvent(event); 3235 }, 250); 3236 }; 3237 youtube.stopInterval = function () { 3238 if (youtube.interval) { 3239 clearInterval(youtube.interval); 3240 } 3241 }; 3242 youtube.getPosterUrl = function () { 3243 var quality = options.youtube.imageQuality, 3244 resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'], 3245 id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); 3246 return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : ''; 3247 }; 3248 3249 return youtube; 3250 } 3251 }; 3252 3253 _window2.default.onYouTubePlayerAPIReady = function () { 3254 YouTubeApi.iFrameReady(); 3255 }; 3256 3257 _media.typeChecks.push(function (url) { 3258 return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null 3259 ); 3260 }); 3261 3262 _renderer.renderer.add(YouTubeIframeRenderer); 3263 3264 },{"18":18,"19":19,"2":2,"20":20,"3":3,"8":8,"9":9}],17:[function(_dereq_,module,exports){ 3265 'use strict'; 3266 3267 Object.defineProperty(exports, "__esModule", { 3268 value: true 3269 }); 3270 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; 3271 3272 var _window = _dereq_(3); 3273 3274 var _window2 = _interopRequireDefault(_window); 3275 3276 var _document = _dereq_(2); 3277 3278 var _document2 = _interopRequireDefault(_document); 3279 3280 var _mejs = _dereq_(8); 3281 3282 var _mejs2 = _interopRequireDefault(_mejs); 3283 3284 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3285 3286 var NAV = exports.NAV = _window2.default.navigator; 3287 var UA = exports.UA = NAV.userAgent.toLowerCase(); 3288 var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream; 3289 var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream; 3290 var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream; 3291 var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream; 3292 var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); 3293 var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); 3294 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); 3295 var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); 3296 var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); 3297 var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; 3298 var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); 3299 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; 3300 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { 3301 var element = _document2.default.createElement('x'), 3302 documentElement = _document2.default.documentElement, 3303 getComputedStyle = _window2.default.getComputedStyle; 3304 3305 if (!('pointerEvents' in element.style)) { 3306 return false; 3307 } 3308 3309 element.style.pointerEvents = 'auto'; 3310 element.style.pointerEvents = 'x'; 3311 documentElement.appendChild(element); 3312 var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto'; 3313 element.remove(); 3314 return !!supports; 3315 }(); 3316 3317 var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () { 3318 var supportsPassive = false; 3319 try { 3320 var opts = Object.defineProperty({}, 'passive', { 3321 get: function get() { 3322 supportsPassive = true; 3323 } 3324 }); 3325 _window2.default.addEventListener('test', null, opts); 3326 } catch (e) {} 3327 3328 return supportsPassive; 3329 }(); 3330 3331 var html5Elements = ['source', 'track', 'audio', 'video']; 3332 var video = void 0; 3333 3334 for (var i = 0, total = html5Elements.length; i < total; i++) { 3335 video = _document2.default.createElement(html5Elements[i]); 3336 } 3337 3338 var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA); 3339 3340 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; 3341 3342 var hasNativeFullscreen = video.requestFullscreen !== undefined; 3343 3344 if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { 3345 hasNativeFullscreen = false; 3346 hasiOSFullScreen = false; 3347 } 3348 3349 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; 3350 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; 3351 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; 3352 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; 3353 var nativeFullScreenEnabled = hasTrueNativeFullScreen; 3354 var fullScreenEventName = ''; 3355 var isFullScreen = void 0, 3356 requestFullScreen = void 0, 3357 cancelFullScreen = void 0; 3358 3359 if (hasMozNativeFullScreen) { 3360 nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; 3361 } else if (hasMsNativeFullScreen) { 3362 nativeFullScreenEnabled = _document2.default.msFullscreenEnabled; 3363 } 3364 3365 if (IS_CHROME) { 3366 hasiOSFullScreen = false; 3367 } 3368 3369 if (hasTrueNativeFullScreen) { 3370 if (hasWebkitNativeFullScreen) { 3371 fullScreenEventName = 'webkitfullscreenchange'; 3372 } else if (hasMozNativeFullScreen) { 3373 fullScreenEventName = 'fullscreenchange'; 3374 } else if (hasMsNativeFullScreen) { 3375 fullScreenEventName = 'MSFullscreenChange'; 3376 } 3377 3378 exports.isFullScreen = isFullScreen = function isFullScreen() { 3379 if (hasMozNativeFullScreen) { 3380 return _document2.default.mozFullScreen; 3381 } else if (hasWebkitNativeFullScreen) { 3382 return _document2.default.webkitIsFullScreen; 3383 } else if (hasMsNativeFullScreen) { 3384 return _document2.default.msFullscreenElement !== null; 3385 } 3386 }; 3387 3388 exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { 3389 if (hasWebkitNativeFullScreen) { 3390 el.webkitRequestFullScreen(); 3391 } else if (hasMozNativeFullScreen) { 3392 el.mozRequestFullScreen(); 3393 } else if (hasMsNativeFullScreen) { 3394 el.msRequestFullscreen(); 3395 } 3396 }; 3397 3398 exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() { 3399 if (hasWebkitNativeFullScreen) { 3400 _document2.default.webkitCancelFullScreen(); 3401 } else if (hasMozNativeFullScreen) { 3402 _document2.default.mozCancelFullScreen(); 3403 } else if (hasMsNativeFullScreen) { 3404 _document2.default.msExitFullscreen(); 3405 } 3406 }; 3407 } 3408 3409 var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen; 3410 var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen; 3411 var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen; 3412 var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen; 3413 var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; 3414 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; 3415 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; 3416 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; 3417 exports.isFullScreen = isFullScreen; 3418 exports.requestFullScreen = requestFullScreen; 3419 exports.cancelFullScreen = cancelFullScreen; 3420 3421 3422 _mejs2.default.Features = _mejs2.default.Features || {}; 3423 _mejs2.default.Features.isiPad = IS_IPAD; 3424 _mejs2.default.Features.isiPod = IS_IPOD; 3425 _mejs2.default.Features.isiPhone = IS_IPHONE; 3426 _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad; 3427 _mejs2.default.Features.isAndroid = IS_ANDROID; 3428 _mejs2.default.Features.isIE = IS_IE; 3429 _mejs2.default.Features.isEdge = IS_EDGE; 3430 _mejs2.default.Features.isChrome = IS_CHROME; 3431 _mejs2.default.Features.isFirefox = IS_FIREFOX; 3432 _mejs2.default.Features.isSafari = IS_SAFARI; 3433 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; 3434 _mejs2.default.Features.hasMSE = HAS_MSE; 3435 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; 3436 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; 3437 _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT; 3438 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; 3439 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; 3440 _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN; 3441 _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN; 3442 _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN; 3443 _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN; 3444 _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED; 3445 _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME; 3446 _mejs2.default.Features.isFullScreen = isFullScreen; 3447 _mejs2.default.Features.requestFullScreen = requestFullScreen; 3448 _mejs2.default.Features.cancelFullScreen = cancelFullScreen; 3449 3450 },{"2":2,"3":3,"8":8}],18:[function(_dereq_,module,exports){ 3451 'use strict'; 3452 3453 Object.defineProperty(exports, "__esModule", { 3454 value: true 3455 }); 3456 exports.removeClass = exports.addClass = exports.hasClass = undefined; 3457 exports.loadScript = loadScript; 3458 exports.offset = offset; 3459 exports.toggleClass = toggleClass; 3460 exports.fadeOut = fadeOut; 3461 exports.fadeIn = fadeIn; 3462 exports.siblings = siblings; 3463 exports.visible = visible; 3464 exports.ajax = ajax; 3465 3466 var _window = _dereq_(3); 3467 3468 var _window2 = _interopRequireDefault(_window); 3469 3470 var _document = _dereq_(2); 3471 3472 var _document2 = _interopRequireDefault(_document); 3473 3474 var _mejs = _dereq_(8); 3475 3476 var _mejs2 = _interopRequireDefault(_mejs); 3477 3478 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3479 3480 function loadScript(url) { 3481 return new Promise(function (resolve, reject) { 3482 var script = _document2.default.createElement('script'); 3483 script.src = url; 3484 script.async = true; 3485 script.onload = function () { 3486 script.remove(); 3487 resolve(); 3488 }; 3489 script.onerror = function () { 3490 script.remove(); 3491 reject(); 3492 }; 3493 _document2.default.head.appendChild(script); 3494 }); 3495 } 3496 3497 function offset(el) { 3498 var rect = el.getBoundingClientRect(), 3499 scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, 3500 scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; 3501 return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; 3502 } 3503 3504 var hasClassMethod = void 0, 3505 addClassMethod = void 0, 3506 removeClassMethod = void 0; 3507 3508 if ('classList' in _document2.default.documentElement) { 3509 hasClassMethod = function hasClassMethod(el, className) { 3510 return el.classList !== undefined && el.classList.contains(className); 3511 }; 3512 addClassMethod = function addClassMethod(el, className) { 3513 return el.classList.add(className); 3514 }; 3515 removeClassMethod = function removeClassMethod(el, className) { 3516 return el.classList.remove(className); 3517 }; 3518 } else { 3519 hasClassMethod = function hasClassMethod(el, className) { 3520 return new RegExp('\\b' + className + '\\b').test(el.className); 3521 }; 3522 addClassMethod = function addClassMethod(el, className) { 3523 if (!hasClass(el, className)) { 3524 el.className += ' ' + className; 3525 } 3526 }; 3527 removeClassMethod = function removeClassMethod(el, className) { 3528 el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); 3529 }; 3530 } 3531 3532 var hasClass = exports.hasClass = hasClassMethod; 3533 var addClass = exports.addClass = addClassMethod; 3534 var removeClass = exports.removeClass = removeClassMethod; 3535 3536 function toggleClass(el, className) { 3537 hasClass(el, className) ? removeClass(el, className) : addClass(el, className); 3538 } 3539 3540 function fadeOut(el) { 3541 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; 3542 var callback = arguments[2]; 3543 3544 if (!el.style.opacity) { 3545 el.style.opacity = 1; 3546 } 3547 3548 var start = null; 3549 _window2.default.requestAnimationFrame(function animate(timestamp) { 3550 start = start || timestamp; 3551 var progress = timestamp - start; 3552 var opacity = parseFloat(1 - progress / duration, 2); 3553 el.style.opacity = opacity < 0 ? 0 : opacity; 3554 if (progress > duration) { 3555 if (callback && typeof callback === 'function') { 3556 callback(); 3557 } 3558 } else { 3559 _window2.default.requestAnimationFrame(animate); 3560 } 3561 }); 3562 } 3563 3564 function fadeIn(el) { 3565 var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; 3566 var callback = arguments[2]; 3567 3568 if (!el.style.opacity) { 3569 el.style.opacity = 0; 3570 } 3571 3572 var start = null; 3573 _window2.default.requestAnimationFrame(function animate(timestamp) { 3574 start = start || timestamp; 3575 var progress = timestamp - start; 3576 var opacity = parseFloat(progress / duration, 2); 3577 el.style.opacity = opacity > 1 ? 1 : opacity; 3578 if (progress > duration) { 3579 if (callback && typeof callback === 'function') { 3580 callback(); 3581 } 3582 } else { 3583 _window2.default.requestAnimationFrame(animate); 3584 } 3585 }); 3586 } 3587 3588 function siblings(el, filter) { 3589 var siblings = []; 3590 el = el.parentNode.firstChild; 3591 do { 3592 if (!filter || filter(el)) { 3593 siblings.push(el); 3594 } 3595 } while (el = el.nextSibling); 3596 return siblings; 3597 } 3598 3599 function visible(elem) { 3600 if (elem.getClientRects !== undefined && elem.getClientRects === 'function') { 3601 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 3602 } 3603 return !!(elem.offsetWidth || elem.offsetHeight); 3604 } 3605 3606 function ajax(url, dataType, success, error) { 3607 var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); 3608 3609 var type = 'application/x-www-form-urlencoded; charset=UTF-8', 3610 completed = false, 3611 accept = '*/'.concat('*'); 3612 3613 switch (dataType) { 3614 case 'text': 3615 type = 'text/plain'; 3616 break; 3617 case 'json': 3618 type = 'application/json, text/javascript'; 3619 break; 3620 case 'html': 3621 type = 'text/html'; 3622 break; 3623 case 'xml': 3624 type = 'application/xml, text/xml'; 3625 break; 3626 } 3627 3628 if (type !== 'application/x-www-form-urlencoded') { 3629 accept = type + ', */*; q=0.01'; 3630 } 3631 3632 if (xhr) { 3633 xhr.open('GET', url, true); 3634 xhr.setRequestHeader('Accept', accept); 3635 xhr.onreadystatechange = function () { 3636 if (completed) { 3637 return; 3638 } 3639 3640 if (xhr.readyState === 4) { 3641 if (xhr.status === 200) { 3642 completed = true; 3643 var data = void 0; 3644 switch (dataType) { 3645 case 'json': 3646 data = JSON.parse(xhr.responseText); 3647 break; 3648 case 'xml': 3649 data = xhr.responseXML; 3650 break; 3651 default: 3652 data = xhr.responseText; 3653 break; 3654 } 3655 success(data); 3656 } else if (typeof error === 'function') { 3657 error(xhr.status); 3658 } 3659 } 3660 }; 3661 3662 xhr.send(); 3663 } 3664 } 3665 3666 _mejs2.default.Utils = _mejs2.default.Utils || {}; 3667 _mejs2.default.Utils.offset = offset; 3668 _mejs2.default.Utils.hasClass = hasClass; 3669 _mejs2.default.Utils.addClass = addClass; 3670 _mejs2.default.Utils.removeClass = removeClass; 3671 _mejs2.default.Utils.toggleClass = toggleClass; 3672 _mejs2.default.Utils.fadeIn = fadeIn; 3673 _mejs2.default.Utils.fadeOut = fadeOut; 3674 _mejs2.default.Utils.siblings = siblings; 3675 _mejs2.default.Utils.visible = visible; 3676 _mejs2.default.Utils.ajax = ajax; 3677 _mejs2.default.Utils.loadScript = loadScript; 3678 3679 },{"2":2,"3":3,"8":8}],19:[function(_dereq_,module,exports){ 3680 'use strict'; 3681 3682 Object.defineProperty(exports, "__esModule", { 3683 value: true 3684 }); 3685 exports.escapeHTML = escapeHTML; 3686 exports.debounce = debounce; 3687 exports.isObjectEmpty = isObjectEmpty; 3688 exports.splitEvents = splitEvents; 3689 exports.createEvent = createEvent; 3690 exports.isNodeAfter = isNodeAfter; 3691 exports.isString = isString; 3692 3693 var _mejs = _dereq_(8); 3694 3695 var _mejs2 = _interopRequireDefault(_mejs); 3696 3697 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3698 3699 function escapeHTML(input) { 3700 3701 if (typeof input !== 'string') { 3702 throw new Error('Argument passed must be a string'); 3703 } 3704 3705 var map = { 3706 '&': '&', 3707 '<': '<', 3708 '>': '>', 3709 '"': '"' 3710 }; 3711 3712 return input.replace(/[&<>"]/g, function (c) { 3713 return map[c]; 3714 }); 3715 } 3716 3717 function debounce(func, wait) { 3718 var _this = this, 3719 _arguments = arguments; 3720 3721 var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 3722 3723 3724 if (typeof func !== 'function') { 3725 throw new Error('First argument must be a function'); 3726 } 3727 3728 if (typeof wait !== 'number') { 3729 throw new Error('Second argument must be a numeric value'); 3730 } 3731 3732 var timeout = void 0; 3733 return function () { 3734 var context = _this, 3735 args = _arguments; 3736 var later = function later() { 3737 timeout = null; 3738 if (!immediate) { 3739 func.apply(context, args); 3740 } 3741 }; 3742 var callNow = immediate && !timeout; 3743 clearTimeout(timeout); 3744 timeout = setTimeout(later, wait); 3745 3746 if (callNow) { 3747 func.apply(context, args); 3748 } 3749 }; 3750 } 3751 3752 function isObjectEmpty(instance) { 3753 return Object.getOwnPropertyNames(instance).length <= 0; 3754 } 3755 3756 function splitEvents(events, id) { 3757 var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; 3758 3759 var ret = { d: [], w: [] }; 3760 (events || '').split(' ').forEach(function (v) { 3761 var eventName = '' + v + (id ? '.' + id : ''); 3762 3763 if (eventName.startsWith('.')) { 3764 ret.d.push(eventName); 3765 ret.w.push(eventName); 3766 } else { 3767 ret[rwindow.test(v) ? 'w' : 'd'].push(eventName); 3768 } 3769 }); 3770 3771 ret.d = ret.d.join(' '); 3772 ret.w = ret.w.join(' '); 3773 return ret; 3774 } 3775 3776 function createEvent(eventName, target) { 3777 3778 if (typeof eventName !== 'string') { 3779 throw new Error('Event name must be a string'); 3780 } 3781 3782 var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), 3783 detail = { 3784 target: target 3785 }; 3786 3787 if (eventFrags !== null) { 3788 eventName = eventFrags[1]; 3789 detail.namespace = eventFrags[2]; 3790 } 3791 3792 return new window.CustomEvent(eventName, { 3793 detail: detail 3794 }); 3795 } 3796 3797 function isNodeAfter(sourceNode, targetNode) { 3798 3799 return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); 3800 } 3801 3802 function isString(value) { 3803 return typeof value === 'string'; 3804 } 3805 3806 _mejs2.default.Utils = _mejs2.default.Utils || {}; 3807 _mejs2.default.Utils.escapeHTML = escapeHTML; 3808 _mejs2.default.Utils.debounce = debounce; 3809 _mejs2.default.Utils.isObjectEmpty = isObjectEmpty; 3810 _mejs2.default.Utils.splitEvents = splitEvents; 3811 _mejs2.default.Utils.createEvent = createEvent; 3812 _mejs2.default.Utils.isNodeAfter = isNodeAfter; 3813 _mejs2.default.Utils.isString = isString; 3814 3815 },{"8":8}],20:[function(_dereq_,module,exports){ 3816 'use strict'; 3817 3818 Object.defineProperty(exports, "__esModule", { 3819 value: true 3820 }); 3821 exports.typeChecks = undefined; 3822 exports.absolutizeUrl = absolutizeUrl; 3823 exports.formatType = formatType; 3824 exports.getMimeFromType = getMimeFromType; 3825 exports.getTypeFromFile = getTypeFromFile; 3826 exports.getExtension = getExtension; 3827 exports.normalizeExtension = normalizeExtension; 3828 3829 var _mejs = _dereq_(8); 3830 3831 var _mejs2 = _interopRequireDefault(_mejs); 3832 3833 var _general = _dereq_(19); 3834 3835 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3836 3837 var typeChecks = exports.typeChecks = []; 3838 3839 function absolutizeUrl(url) { 3840 3841 if (typeof url !== 'string') { 3842 throw new Error('`url` argument must be a string'); 3843 } 3844 3845 var el = document.createElement('div'); 3846 el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>'; 3847 return el.firstChild.href; 3848 } 3849 3850 function formatType(url) { 3851 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 3852 3853 return url && !type ? getTypeFromFile(url) : type; 3854 } 3855 3856 function getMimeFromType(type) { 3857 3858 if (typeof type !== 'string') { 3859 throw new Error('`type` argument must be a string'); 3860 } 3861 3862 return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; 3863 } 3864 3865 function getTypeFromFile(url) { 3866 3867 if (typeof url !== 'string') { 3868 throw new Error('`url` argument must be a string'); 3869 } 3870 3871 for (var i = 0, total = typeChecks.length; i < total; i++) { 3872 var type = typeChecks[i](url); 3873 3874 if (type) { 3875 return type; 3876 } 3877 } 3878 3879 var ext = getExtension(url), 3880 normalizedExt = normalizeExtension(ext); 3881 3882 var mime = 'video/mp4'; 3883 3884 if (normalizedExt) { 3885 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) { 3886 mime = 'video/' + normalizedExt; 3887 } else if ('mov' === normalizedExt) { 3888 mime = 'video/quicktime'; 3889 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { 3890 mime = 'audio/' + normalizedExt; 3891 } 3892 } 3893 3894 return mime; 3895 } 3896 3897 function getExtension(url) { 3898 3899 if (typeof url !== 'string') { 3900 throw new Error('`url` argument must be a string'); 3901 } 3902 3903 var baseUrl = url.split('?')[0], 3904 baseName = baseUrl.split('\\').pop().split('/').pop(); 3905 return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; 3906 } 3907 3908 function normalizeExtension(extension) { 3909 3910 if (typeof extension !== 'string') { 3911 throw new Error('`extension` argument must be a string'); 3912 } 3913 3914 switch (extension) { 3915 case 'mp4': 3916 case 'm4v': 3917 return 'mp4'; 3918 case 'webm': 3919 case 'webma': 3920 case 'webmv': 3921 return 'webm'; 3922 case 'ogg': 3923 case 'oga': 3924 case 'ogv': 3925 return 'ogg'; 3926 default: 3927 return extension; 3928 } 3929 } 3930 3931 _mejs2.default.Utils = _mejs2.default.Utils || {}; 3932 _mejs2.default.Utils.typeChecks = typeChecks; 3933 _mejs2.default.Utils.absolutizeUrl = absolutizeUrl; 3934 _mejs2.default.Utils.formatType = formatType; 3935 _mejs2.default.Utils.getMimeFromType = getMimeFromType; 3936 _mejs2.default.Utils.getTypeFromFile = getTypeFromFile; 3937 _mejs2.default.Utils.getExtension = getExtension; 3938 _mejs2.default.Utils.normalizeExtension = normalizeExtension; 3939 3940 },{"19":19,"8":8}],21:[function(_dereq_,module,exports){ 3941 'use strict'; 3942 3943 var _document = _dereq_(2); 3944 3945 var _document2 = _interopRequireDefault(_document); 3946 3947 var _promisePolyfill = _dereq_(4); 3948 3949 var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill); 3950 3951 var _svg4everybody = _dereq_(5); 3952 3953 var _svg4everybody2 = _interopRequireDefault(_svg4everybody); 3954 3955 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3956 3957 (function (arr) { 3958 arr.forEach(function (item) { 3959 if (item.hasOwnProperty('remove')) { 3960 return; 3961 } 3962 Object.defineProperty(item, 'remove', { 3963 configurable: true, 3964 enumerable: true, 3965 writable: true, 3966 value: function remove() { 3967 this.parentNode.removeChild(this); 3968 } 3969 }); 3970 }); 3971 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); 3972 3973 (function () { 3974 3975 if (typeof window.CustomEvent === 'function') { 3976 return false; 3977 } 3978 3979 function CustomEvent(event, params) { 3980 params = params || { bubbles: false, cancelable: false, detail: undefined }; 3981 var evt = _document2.default.createEvent('CustomEvent'); 3982 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); 3983 return evt; 3984 } 3985 3986 CustomEvent.prototype = window.Event.prototype; 3987 window.CustomEvent = CustomEvent; 3988 })(); 3989 3990 if (typeof Object.assign !== 'function') { 3991 Object.assign = function (target) { 3992 3993 if (target === null || target === undefined) { 3994 throw new TypeError('Cannot convert undefined or null to object'); 3995 } 3996 3997 var to = Object(target); 3998 3999 for (var index = 1, total = arguments.length; index < total; index++) { 4000 var nextSource = arguments[index]; 4001 4002 if (nextSource !== null) { 4003 for (var nextKey in nextSource) { 4004 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { 4005 to[nextKey] = nextSource[nextKey]; 4006 } 4007 } 4008 } 4009 } 4010 return to; 4011 }; 4012 } 4013 4014 if (!String.prototype.startsWith) { 4015 String.prototype.startsWith = function (searchString, position) { 4016 position = position || 0; 4017 return this.substr(position, searchString.length) === searchString; 4018 }; 4019 } 4020 4021 if (!Element.prototype.matches) { 4022 Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { 4023 var matches = (this.document || this.ownerDocument).querySelectorAll(s), 4024 i = matches.length - 1; 4025 while (--i >= 0 && matches.item(i) !== this) {} 4026 return i > -1; 4027 }; 4028 } 4029 4030 if (window.Element && !Element.prototype.closest) { 4031 Element.prototype.closest = function (s) { 4032 var matches = (this.document || this.ownerDocument).querySelectorAll(s), 4033 i = void 0, 4034 el = this; 4035 do { 4036 i = matches.length; 4037 while (--i >= 0 && matches.item(i) !== el) {} 4038 } while (i < 0 && (el = el.parentElement)); 4039 return el; 4040 }; 4041 } 4042 4043 (function () { 4044 var lastTime = 0; 4045 var vendors = ['ms', 'moz', 'webkit', 'o']; 4046 for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 4047 window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; 4048 window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; 4049 } 4050 4051 if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) { 4052 var currTime = new Date().getTime(); 4053 var timeToCall = Math.max(0, 16 - (currTime - lastTime)); 4054 var id = window.setTimeout(function () { 4055 callback(currTime + timeToCall); 4056 }, timeToCall); 4057 lastTime = currTime + timeToCall; 4058 return id; 4059 }; 4060 4061 if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { 4062 clearTimeout(id); 4063 }; 4064 })(); 4065 4066 if (/firefox/i.test(navigator.userAgent)) { 4067 var getComputedStyle = window.getComputedStyle; 4068 window.getComputedStyle = function (el, pseudoEl) { 4069 var t = getComputedStyle(el, pseudoEl); 4070 return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; 4071 }; 4072 } 4073 4074 if (!window.Promise) { 4075 window.Promise = _promisePolyfill2.default; 4076 } 4077 4078 (0, _svg4everybody2.default)(); 4079 4080 (function (constructor) { 4081 if (constructor && constructor.prototype && constructor.prototype.children === null) { 4082 Object.defineProperty(constructor.prototype, 'children', { 4083 get: function get() { 4084 var i = 0, 4085 node = void 0, 4086 nodes = this.childNodes, 4087 children = []; 4088 while (node = nodes[i++]) { 4089 if (node.nodeType === 1) { 4090 children.push(node); 4091 } 4092 } 4093 return children; 4094 } 4095 }); 4096 } 4097 })(window.Node || window.Element); 4098 4099 },{"2":2,"4":4,"5":5}]},{},[21,7,6,10,15,12,11,13,14,16]);
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 |