home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-includes / js / mediaelement / mediaelement-and-player.js next >
Encoding:
JavaScript  |  2017-10-16  |  257.3 KB  |  8,475 lines

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