From f59827fdc46f9df04c2e580abcb4ba8358b78b2c Mon Sep 17 00:00:00 2001 From: Kasper Moskwiak Date: Thu, 3 Sep 2015 19:38:16 +0200 Subject: [PATCH] videojs update --- node_modules/video.js/dist/alt/video.novtt.js | 5363 ++++++++--------- .../video.js/dist/alt/video.novtt.min.js | 17 +- .../video.js/dist/alt/video.novtt.min.js.map | 2 +- ...0.0-rc.59.zip => video-js-5.0.0-rc.72.zip} | Bin 4350754 -> 4416074 bytes node_modules/video.js/dist/video-js.css | 2 +- node_modules/video.js/dist/video-js.min.css | 2 +- node_modules/video.js/dist/video-js.swf | Bin 17500 -> 16786 bytes node_modules/video.js/dist/video.js | 5363 ++++++++--------- node_modules/video.js/dist/video.js.map | 70 +- node_modules/video.js/dist/video.min.js | 17 +- node_modules/video.js/dist/video.min.js.map | 2 +- node_modules/video.js/dist/video.novtt.js | 5361 ++++++++-------- 12 files changed, 7751 insertions(+), 8448 deletions(-) rename node_modules/video.js/dist/{video-js-5.0.0-rc.59.zip => video-js-5.0.0-rc.72.zip} (51%) diff --git a/node_modules/video.js/dist/alt/video.novtt.js b/node_modules/video.js/dist/alt/video.novtt.js index 110f68b..60aa0d3 100644 --- a/node_modules/video.js/dist/alt/video.novtt.js +++ b/node_modules/video.js/dist/alt/video.novtt.js @@ -1,6 +1,6 @@ /** * @license - * Video.js 5.0.0-rc.59 + * Video.js 5.0.0-rc.72 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * @@ -25,7 +25,7 @@ if (typeof document !== 'undefined') { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvZG9jdW1lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuIl19 },{"min-document":3}],2:[function(_dereq_,module,exports){ (function (global){ if (typeof window !== "undefined") { @@ -39,7 +39,7 @@ if (typeof window !== "undefined") { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzZWxmO1xufSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHt9O1xufVxuIl19 },{}],3:[function(_dereq_,module,exports){ },{}],4:[function(_dereq_,module,exports){ @@ -53,7 +53,7 @@ var nativeMax = Math.max; * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ @@ -192,7 +192,7 @@ var baseFor = createBaseFor(); module.exports = baseFor; -},{"./createBaseFor":17}],9:[function(_dereq_,module,exports){ +},{"./createBaseFor":15}],9:[function(_dereq_,module,exports){ var baseFor = _dereq_('./baseFor'), keysIn = _dereq_('../object/keysIn'); @@ -211,24 +211,7 @@ function baseForIn(object, iteratee) { module.exports = baseForIn; -},{"../object/keysIn":39,"./baseFor":8}],10:[function(_dereq_,module,exports){ -/** - * The base implementation of `_.isFunction` without support for environments - * with incorrect `typeof` results. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - */ -function baseIsFunction(value) { - // Avoid a Chakra JIT bug in compatibility modes of IE 11. - // See https://github.com/jashkenas/underscore/issues/1621 for more details. - return typeof value == 'function' || false; -} - -module.exports = baseIsFunction; - -},{}],11:[function(_dereq_,module,exports){ +},{"../object/keysIn":36,"./baseFor":8}],10:[function(_dereq_,module,exports){ var arrayEach = _dereq_('./arrayEach'), baseMergeDeep = _dereq_('./baseMergeDeep'), isArray = _dereq_('../lang/isArray'), @@ -245,7 +228,7 @@ var arrayEach = _dereq_('./arrayEach'), * @private * @param {Object} object The destination object. * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {Object} Returns `object`. @@ -255,7 +238,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { return object; } var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), - props = isSrcArr ? null : keys(source); + props = isSrcArr ? undefined : keys(source); arrayEach(props || source, function(srcValue, key) { if (props) { @@ -286,7 +269,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { module.exports = baseMerge; -},{"../lang/isArray":30,"../lang/isObject":33,"../lang/isTypedArray":36,"../object/keys":38,"./arrayEach":6,"./baseMergeDeep":12,"./isArrayLike":20,"./isObjectLike":25}],12:[function(_dereq_,module,exports){ +},{"../lang/isArray":27,"../lang/isObject":30,"../lang/isTypedArray":33,"../object/keys":35,"./arrayEach":6,"./baseMergeDeep":11,"./isArrayLike":18,"./isObjectLike":23}],11:[function(_dereq_,module,exports){ var arrayCopy = _dereq_('./arrayCopy'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -305,7 +288,7 @@ var arrayCopy = _dereq_('./arrayCopy'), * @param {Object} source The source object. * @param {string} key The key of the value to merge. * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. @@ -355,7 +338,7 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stack module.exports = baseMergeDeep; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isPlainObject":34,"../lang/isTypedArray":36,"../lang/toPlainObject":37,"./arrayCopy":5,"./isArrayLike":20}],13:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isPlainObject":31,"../lang/isTypedArray":33,"../lang/toPlainObject":34,"./arrayCopy":5,"./isArrayLike":18}],12:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -373,25 +356,7 @@ function baseProperty(key) { module.exports = baseProperty; -},{"./toObject":28}],14:[function(_dereq_,module,exports){ -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); -} - -module.exports = baseToString; - -},{}],15:[function(_dereq_,module,exports){ +},{"./toObject":25}],13:[function(_dereq_,module,exports){ var identity = _dereq_('../utility/identity'); /** @@ -432,16 +397,13 @@ function bindCallback(func, thisArg, argCount) { module.exports = bindCallback; -},{"../utility/identity":43}],16:[function(_dereq_,module,exports){ +},{"../utility/identity":39}],14:[function(_dereq_,module,exports){ var bindCallback = _dereq_('./bindCallback'), isIterateeCall = _dereq_('./isIterateeCall'), restParam = _dereq_('../function/restParam'); /** - * Creates a function that assigns properties of source object(s) to a given - * destination object. - * - * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`. + * Creates a `_.assign`, `_.defaults`, or `_.merge` function. * * @private * @param {Function} assigner The function to assign values. @@ -478,7 +440,7 @@ function createAssigner(assigner) { module.exports = createAssigner; -},{"../function/restParam":4,"./bindCallback":15,"./isIterateeCall":23}],17:[function(_dereq_,module,exports){ +},{"../function/restParam":4,"./bindCallback":13,"./isIterateeCall":21}],15:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -507,7 +469,7 @@ function createBaseFor(fromRight) { module.exports = createBaseFor; -},{"./toObject":28}],18:[function(_dereq_,module,exports){ +},{"./toObject":25}],16:[function(_dereq_,module,exports){ var baseProperty = _dereq_('./baseProperty'); /** @@ -524,7 +486,7 @@ var getLength = baseProperty('length'); module.exports = getLength; -},{"./baseProperty":13}],19:[function(_dereq_,module,exports){ +},{"./baseProperty":12}],17:[function(_dereq_,module,exports){ var isNative = _dereq_('../lang/isNative'); /** @@ -542,7 +504,7 @@ function getNative(object, key) { module.exports = getNative; -},{"../lang/isNative":32}],20:[function(_dereq_,module,exports){ +},{"../lang/isNative":29}],18:[function(_dereq_,module,exports){ var getLength = _dereq_('./getLength'), isLength = _dereq_('./isLength'); @@ -559,7 +521,7 @@ function isArrayLike(value) { module.exports = isArrayLike; -},{"./getLength":18,"./isLength":24}],21:[function(_dereq_,module,exports){ +},{"./getLength":16,"./isLength":22}],19:[function(_dereq_,module,exports){ /** * Checks if `value` is a host object in IE < 9. * @@ -582,12 +544,12 @@ var isHostObject = (function() { module.exports = isHostObject; -},{}],22:[function(_dereq_,module,exports){ +},{}],20:[function(_dereq_,module,exports){ /** Used to detect unsigned integer values. */ var reIsUint = /^\d+$/; /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -608,7 +570,7 @@ function isIndex(value, length) { module.exports = isIndex; -},{}],23:[function(_dereq_,module,exports){ +},{}],21:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('./isArrayLike'), isIndex = _dereq_('./isIndex'), isObject = _dereq_('../lang/isObject'); @@ -638,9 +600,9 @@ function isIterateeCall(value, index, object) { module.exports = isIterateeCall; -},{"../lang/isObject":33,"./isArrayLike":20,"./isIndex":22}],24:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"./isArrayLike":18,"./isIndex":20}],22:[function(_dereq_,module,exports){ /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -648,7 +610,7 @@ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @private * @param {*} value The value to check. @@ -660,7 +622,7 @@ function isLength(value) { module.exports = isLength; -},{}],25:[function(_dereq_,module,exports){ +},{}],23:[function(_dereq_,module,exports){ /** * Checks if `value` is object-like. * @@ -674,70 +636,7 @@ function isObjectLike(value) { module.exports = isObjectLike; -},{}],26:[function(_dereq_,module,exports){ -var baseForIn = _dereq_('./baseForIn'), - isArguments = _dereq_('../lang/isArguments'), - isHostObject = _dereq_('./isHostObject'), - isObjectLike = _dereq_('./isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** - * A fallback implementation of `_.isPlainObject` which checks if `value` - * is an object created by the `Object` constructor or has a `[[Prototype]]` - * of `null`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ -function shimIsPlainObject(value) { - var Ctor; - - // Exit early for non `Object` objects. - if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) || - (!hasOwnProperty.call(value, 'constructor') && - (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) || - (!support.argsTag && isArguments(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - var result; - if (support.ownLast) { - baseForIn(value, function(subValue, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - baseForIn(value, function(subValue, key) { - result = key; - }); - return result === undefined || hasOwnProperty.call(value, result); -} - -module.exports = shimIsPlainObject; - -},{"../lang/isArguments":29,"../support":42,"./baseForIn":9,"./isHostObject":21,"./isObjectLike":25}],27:[function(_dereq_,module,exports){ +},{}],24:[function(_dereq_,module,exports){ var isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), isIndex = _dereq_('./isIndex'), @@ -781,7 +680,7 @@ function shimKeys(object) { module.exports = shimKeys; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isString":35,"../object/keysIn":39,"./isIndex":22,"./isLength":24}],28:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isString":32,"../object/keysIn":36,"./isIndex":20,"./isLength":22}],25:[function(_dereq_,module,exports){ var isObject = _dereq_('../lang/isObject'), isString = _dereq_('../lang/isString'), support = _dereq_('../support'); @@ -809,13 +708,9 @@ function toObject(value) { module.exports = toObject; -},{"../lang/isObject":33,"../lang/isString":35,"../support":42}],29:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"../lang/isString":32,"../support":38}],26:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('../internal/isArrayLike'), - isObjectLike = _dereq_('../internal/isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; + isObjectLike = _dereq_('../internal/isObjectLike'); /** Used for native method references. */ var objectProto = Object.prototype; @@ -823,12 +718,6 @@ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; @@ -849,19 +738,13 @@ var propertyIsEnumerable = objectProto.propertyIsEnumerable; * // => false */ function isArguments(value) { - return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag; -} -// Fallback for environments without a `toStringTag` for `arguments` objects. -if (!support.argsTag) { - isArguments = function(value) { - return isObjectLike(value) && isArrayLike(value) && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); - }; + return isObjectLike(value) && isArrayLike(value) && + hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); } module.exports = isArguments; -},{"../internal/isArrayLike":20,"../internal/isObjectLike":25,"../support":42}],30:[function(_dereq_,module,exports){ +},{"../internal/isArrayLike":18,"../internal/isObjectLike":23}],27:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -873,7 +756,7 @@ var arrayTag = '[object Array]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -903,10 +786,8 @@ var isArray = nativeIsArray || function(value) { module.exports = isArray; -},{"../internal/getNative":19,"../internal/isLength":24,"../internal/isObjectLike":25}],31:[function(_dereq_,module,exports){ -(function (global){ -var baseIsFunction = _dereq_('../internal/baseIsFunction'), - getNative = _dereq_('../internal/getNative'); +},{"../internal/getNative":17,"../internal/isLength":22,"../internal/isObjectLike":23}],28:[function(_dereq_,module,exports){ +var isObject = _dereq_('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]'; @@ -915,14 +796,11 @@ var funcTag = '[object Function]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var Uint8Array = getNative(global, 'Uint8Array'); - /** * Checks if `value` is classified as a `Function` object. * @@ -939,25 +817,20 @@ var Uint8Array = getNative(global, 'Uint8Array'); * _.isFunction(/abc/); * // => false */ -var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { +function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return objToString.call(value) == funcTag; -}; + // and Safari 8 which returns 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; +} module.exports = isFunction; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"../internal/baseIsFunction":10,"../internal/getNative":19}],32:[function(_dereq_,module,exports){ -var escapeRegExp = _dereq_('../string/escapeRegExp'), +},{"./isObject":30}],29:[function(_dereq_,module,exports){ +var isFunction = _dereq_('./isFunction'), isHostObject = _dereq_('../internal/isHostObject'), isObjectLike = _dereq_('../internal/isObjectLike'); -/** `Object#toString` result references. */ -var funcTag = '[object Function]'; - /** Used to detect host constructors (Safari > 5). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; @@ -970,15 +843,9 @@ var fnToString = Function.prototype.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + - escapeRegExp(fnToString.call(hasOwnProperty)) + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); @@ -1002,7 +869,7 @@ function isNative(value) { if (value == null) { return false; } - if (objToString.call(value) == funcTag) { + if (isFunction(value)) { return reIsNative.test(fnToString.call(value)); } return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); @@ -1010,7 +877,7 @@ function isNative(value) { module.exports = isNative; -},{"../internal/isHostObject":21,"../internal/isObjectLike":25,"../string/escapeRegExp":41}],33:[function(_dereq_,module,exports){ +},{"../internal/isHostObject":19,"../internal/isObjectLike":23,"./isFunction":28}],30:[function(_dereq_,module,exports){ /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) @@ -1040,10 +907,11 @@ function isObject(value) { module.exports = isObject; -},{}],34:[function(_dereq_,module,exports){ -var getNative = _dereq_('../internal/getNative'), +},{}],31:[function(_dereq_,module,exports){ +var baseForIn = _dereq_('../internal/baseForIn'), isArguments = _dereq_('./isArguments'), - shimIsPlainObject = _dereq_('../internal/shimIsPlainObject'), + isHostObject = _dereq_('../internal/isHostObject'), + isObjectLike = _dereq_('../internal/isObjectLike'), support = _dereq_('../support'); /** `Object#toString` result references. */ @@ -1052,15 +920,15 @@ var objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var getPrototypeOf = getNative(Object, 'getPrototypeOf'); - /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -1091,21 +959,37 @@ var getPrototypeOf = getNative(Object, 'getPrototypeOf'); * _.isPlainObject(Object.create(null)); * // => true */ -var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) { +function isPlainObject(value) { + var Ctor; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) || + (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { return false; } - var valueOf = getNative(value, 'valueOf'), - objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); -}; + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + if (support.ownLast) { + baseForIn(value, function(subValue, key, object) { + result = hasOwnProperty.call(object, key); + return false; + }); + return result !== false; + } + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); +} module.exports = isPlainObject; -},{"../internal/getNative":19,"../internal/shimIsPlainObject":26,"../support":42,"./isArguments":29}],35:[function(_dereq_,module,exports){ +},{"../internal/baseForIn":9,"../internal/isHostObject":19,"../internal/isObjectLike":23,"../support":38,"./isArguments":26}],32:[function(_dereq_,module,exports){ var isObjectLike = _dereq_('../internal/isObjectLike'); /** `Object#toString` result references. */ @@ -1115,7 +999,7 @@ var stringTag = '[object String]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1142,7 +1026,7 @@ function isString(value) { module.exports = isString; -},{"../internal/isObjectLike":25}],36:[function(_dereq_,module,exports){ +},{"../internal/isObjectLike":23}],33:[function(_dereq_,module,exports){ var isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -1191,7 +1075,7 @@ typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1218,7 +1102,7 @@ function isTypedArray(value) { module.exports = isTypedArray; -},{"../internal/isLength":24,"../internal/isObjectLike":25}],37:[function(_dereq_,module,exports){ +},{"../internal/isLength":22,"../internal/isObjectLike":23}],34:[function(_dereq_,module,exports){ var baseCopy = _dereq_('../internal/baseCopy'), keysIn = _dereq_('../object/keysIn'); @@ -1251,7 +1135,7 @@ function toPlainObject(value) { module.exports = toPlainObject; -},{"../internal/baseCopy":7,"../object/keysIn":39}],38:[function(_dereq_,module,exports){ +},{"../internal/baseCopy":7,"../object/keysIn":36}],35:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isArrayLike = _dereq_('../internal/isArrayLike'), isObject = _dereq_('../lang/isObject'), @@ -1265,7 +1149,7 @@ var nativeKeys = getNative(Object, 'keys'); * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) * for more details. * * @static @@ -1289,7 +1173,7 @@ var nativeKeys = getNative(Object, 'keys'); * // => ['0', '1'] */ var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? null : object.constructor; + var Ctor = object == null ? undefined : object.constructor; if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) { return shimKeys(object); @@ -1299,7 +1183,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"../internal/getNative":19,"../internal/isArrayLike":20,"../internal/shimKeys":27,"../lang/isObject":33,"../support":42}],39:[function(_dereq_,module,exports){ +},{"../internal/getNative":17,"../internal/isArrayLike":18,"../internal/shimKeys":24,"../lang/isObject":30,"../support":38}],36:[function(_dereq_,module,exports){ var arrayEach = _dereq_('../internal/arrayEach'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -1336,7 +1220,7 @@ var errorProto = Error.prototype, var hasOwnProperty = objectProto.hasOwnProperty; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1403,7 +1287,7 @@ function keysIn(object) { while (++index < length) { result[index] = (index + ''); } - // lodash skips the `constructor` property when it infers it is iterating + // lodash skips the `constructor` property when it infers it's iterating // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]` // attribute of an existing property and the `constructor` property of a // prototype defaults to non-enumerable. @@ -1437,7 +1321,7 @@ function keysIn(object) { module.exports = keysIn; -},{"../internal/arrayEach":6,"../internal/isIndex":22,"../internal/isLength":24,"../lang/isArguments":29,"../lang/isArray":30,"../lang/isFunction":31,"../lang/isObject":33,"../lang/isString":35,"../support":42}],40:[function(_dereq_,module,exports){ +},{"../internal/arrayEach":6,"../internal/isIndex":20,"../internal/isLength":22,"../lang/isArguments":26,"../lang/isArray":27,"../lang/isFunction":28,"../lang/isObject":30,"../lang/isString":32,"../support":38}],37:[function(_dereq_,module,exports){ var baseMerge = _dereq_('../internal/baseMerge'), createAssigner = _dereq_('../internal/createAssigner'); @@ -1445,7 +1329,7 @@ var baseMerge = _dereq_('../internal/baseMerge'), * Recursively merges own enumerable properties of the source object(s), that * don't resolve to `undefined` into the destination object. Subsequent sources * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and + * provided it's invoked to produce the merged values of the destination and * source properties. If `customizer` returns `undefined` merging is handled * by the method instead. The `customizer` is bound to `thisArg` and invoked * with five arguments: (objectValue, sourceValue, key, object, source). @@ -1493,60 +1377,12 @@ var merge = createAssigner(baseMerge); module.exports = merge; -},{"../internal/baseMerge":11,"../internal/createAssigner":16}],41:[function(_dereq_,module,exports){ -var baseToString = _dereq_('../internal/baseToString'); - -/** - * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special). - * In addition to special characters the forward slash is escaped to allow for - * easier `eval` use and `Function` compilation. - */ -var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, - reHasRegExpChars = RegExp(reRegExpChars.source); - -/** - * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", - * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' - */ -function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, '\\$&') - : string; -} - -module.exports = escapeRegExp; - -},{"../internal/baseToString":14}],42:[function(_dereq_,module,exports){ -(function (global){ -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - objectTag = '[object Object]'; - +},{"../internal/baseMerge":10,"../internal/createAssigner":14}],38:[function(_dereq_,module,exports){ /** Used for native method references. */ var arrayProto = Array.prototype, errorProto = Error.prototype, objectProto = Object.prototype; -/** Used to detect DOM support. */ -var document = (document = global.window) ? document.document : null; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice; @@ -1568,15 +1404,6 @@ var support = {}; Ctor.prototype = { 'valueOf': x, 'y': x }; for (var key in new Ctor) { props.push(key); } - /** - * Detect if the `toStringTag` of `arguments` objects is resolvable - * (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsTag = objToString.call(arguments) == argsTag; - /** * Detect if `name` or `message` properties of `Error.prototype` are * enumerable by default (IE < 9, Safari < 5.1). @@ -1600,14 +1427,6 @@ var support = {}; */ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype'); - /** - * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.nodeTag = objToString.call(document) != objectTag; - /** * Detect if properties shadowing those on `Object.prototype` are non-enumerable. * @@ -1652,25 +1471,11 @@ var support = {}; * @type boolean */ support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if the DOM is supported. - * - * @memberOf _.support - * @type boolean - */ - try { - support.dom = document.createDocumentFragment().nodeType === 11; - } catch(e) { - support.dom = false; - } }(1, 0)); module.exports = support; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{}],43:[function(_dereq_,module,exports){ +},{}],39:[function(_dereq_,module,exports){ /** * This method returns the first argument provided to it. * @@ -1692,7 +1497,7 @@ function identity(value) { module.exports = identity; -},{}],44:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es6-shim @@ -1702,22 +1507,24 @@ var canBeObject = function (obj) { }; var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var defineProperties = _dereq_('define-properties'); +var toObject = Object; +var push = Array.prototype.push; var propIsEnumerable = Object.prototype.propertyIsEnumerable; -var isEnumerableOn = function (obj) { - return function isEnumerable(prop) { - return propIsEnumerable.call(obj, prop); - }; -}; var assignShim = function assign(target, source1) { if (!canBeObject(target)) { throw new TypeError('target must be an object'); } - var objTarget = Object(target); - var s, source, i, props; + var objTarget = toObject(target); + var s, source, i, props, syms; for (s = 1; s < arguments.length; ++s) { - source = Object(arguments[s]); + source = toObject(arguments[s]); props = keys(source); if (hasSymbols && Object.getOwnPropertySymbols) { - props.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source))); + syms = Object.getOwnPropertySymbols(source); + for (i = 0; i < syms.length; ++i) { + if (propIsEnumerable.call(source, syms[i])) { + push.call(props, syms[i]); + } + } } for (i = 0; i < props.length; ++i) { objTarget[props[i]] = source[props[i]]; @@ -1726,9 +1533,12 @@ var assignShim = function assign(target, source1) { return objTarget; }; -assignShim.shim = function shimObjectAssign() { - if (Object.assign && Object.preventExtensions) { - var assignHasPendingExceptions = (function () { +defineProperties(assignShim, { + shim: function shimObjectAssign() { + var assignHasPendingExceptions = function () { + if (!Object.assign || !Object.preventExtensions) { + return false; + } // Firefox 37 still has "pending exception" logic in its Object.assign implementation, // which is 72% slower than our shim, and Firefox 40's native implementation. var thrower = Object.preventExtensions({ 1: 2 }); @@ -1737,27 +1547,24 @@ assignShim.shim = function shimObjectAssign() { } catch (e) { return thrower[1] === 'y'; } - }()); - if (assignHasPendingExceptions) { - delete Object.assign; - } + }; + defineProperties( + Object, + { assign: assignShim }, + { assign: assignHasPendingExceptions } + ); + return Object.assign || assignShim; } - if (!Object.assign) { - defineProperties(Object, { - assign: assignShim - }); - } - return Object.assign || assignShim; -}; +}); module.exports = assignShim; - -},{"define-properties":45,"object-keys":47}],45:[function(_dereq_,module,exports){ +},{"define-properties":41,"object-keys":43}],41:[function(_dereq_,module,exports){ 'use strict'; var keys = _dereq_('object-keys'); var foreach = _dereq_('foreach'); +var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var toStr = Object.prototype.toString; @@ -1768,7 +1575,10 @@ var isFunction = function (fn) { var arePropertyDescriptorsSupported = function () { var obj = {}; try { - Object.defineProperty(obj, 'x', { value: obj }); + Object.defineProperty(obj, 'x', { value: obj, enumerable: false }); + /* eslint-disable no-unused-vars */ + for (var _ in obj) { return false; } + /* eslint-enable no-unused-vars */ return obj.x === obj; } catch (e) { /* this is IE 8. */ return false; @@ -1794,7 +1604,11 @@ var defineProperty = function (object, name, value, predicate) { var defineProperties = function (object, map) { var predicates = arguments.length > 2 ? arguments[2] : {}; - foreach(keys(map), function (name) { + var props = keys(map); + if (hasSymbols) { + props = props.concat(Object.getOwnPropertySymbols(map)); + } + foreach(props, function (name) { defineProperty(object, name, map[name], predicates[name]); }); }; @@ -1803,7 +1617,7 @@ defineProperties.supportsDescriptors = !!supportsDescriptors; module.exports = defineProperties; -},{"foreach":46,"object-keys":47}],46:[function(_dereq_,module,exports){ +},{"foreach":42,"object-keys":43}],42:[function(_dereq_,module,exports){ var hasOwn = Object.prototype.hasOwnProperty; var toString = Object.prototype.toString; @@ -1827,12 +1641,13 @@ module.exports = function forEach (obj, fn, ctx) { }; -},{}],47:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es5-shim var has = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; +var slice = Array.prototype.slice; var isArgs = _dereq_('./isArguments'); var hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString'); var hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype'); @@ -1845,6 +1660,44 @@ var dontEnums = [ 'propertyIsEnumerable', 'constructor' ]; +var equalsConstructorPrototype = function (o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; +}; +var blacklistedKeys = { + $window: true, + $console: true, + $parent: true, + $self: true, + $frames: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true +}; +var hasAutomationEqualityBug = (function () { + /* global window */ + if (typeof window === 'undefined') { return false; } + for (var k in window) { + if (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } + return false; +}()); +var equalsConstructorPrototypeIfNotBuggy = function (o) { + /* global window */ + if (typeof window === 'undefined' && !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { + return false; + } +}; var keysShim = function keys(object) { var isObject = object !== null && typeof object === 'object'; @@ -1877,8 +1730,7 @@ var keysShim = function keys(object) { } if (hasDontEnumBug) { - var ctor = object.constructor; - var skipConstructor = ctor && ctor.prototype === object; + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); for (var k = 0; k < dontEnums.length; ++k) { if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { @@ -1892,13 +1744,28 @@ var keysShim = function keys(object) { keysShim.shim = function shimObjectKeys() { if (!Object.keys) { Object.keys = keysShim; + } else { + var keysWorksWithArguments = (function () { + // Safari 5.0 bug + return (Object.keys(arguments) || '').length === 2; + }(1, 2)); + if (!keysWorksWithArguments) { + var originalKeys = Object.keys; + Object.keys = function keys(object) { + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } else { + return originalKeys(object); + } + }; + } } return Object.keys || keysShim; }; module.exports = keysShim; -},{"./isArguments":48}],48:[function(_dereq_,module,exports){ +},{"./isArguments":44}],44:[function(_dereq_,module,exports){ 'use strict'; var toStr = Object.prototype.toString; @@ -1907,17 +1774,17 @@ module.exports = function isArguments(value) { var str = toStr.call(value); var isArgs = str === '[object Arguments]'; if (!isArgs) { - isArgs = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toStr.call(value.callee) === '[object Function]'; + isArgs = str !== '[object Array]' && + value !== null && + typeof value === 'object' && + typeof value.length === 'number' && + value.length >= 0 && + toStr.call(value.callee) === '[object Function]'; } return isArgs; }; -},{}],49:[function(_dereq_,module,exports){ +},{}],45:[function(_dereq_,module,exports){ module.exports = SafeParseTuple function SafeParseTuple(obj, reviver) { @@ -1933,27 +1800,27 @@ function SafeParseTuple(obj, reviver) { return [error, json] } -},{}],50:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],46:[function(_dereq_,module,exports){ /** * @file big-play-button.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('./component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('./button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('./component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Initial play button. Shows before the video has played. The hiding of the @@ -1966,14 +1833,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var BigPlayButton = (function (_Button) { + _inherits(BigPlayButton, _Button); + function BigPlayButton(player, options) { _classCallCheck(this, BigPlayButton); _Button.call(this, player, options); } - _inherits(BigPlayButton, _Button); - /** * Allow sub components to stack CSS class names * @@ -1996,51 +1863,53 @@ var BigPlayButton = (function (_Button) { }; return BigPlayButton; -})(_Button3['default']); +})(_buttonJs2['default']); BigPlayButton.prototype.controlText_ = 'Play Video'; -_Component2['default'].registerComponent('BigPlayButton', BigPlayButton); +_componentJs2['default'].registerComponent('BigPlayButton', BigPlayButton); exports['default'] = BigPlayButton; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52}],51:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48}],47:[function(_dereq_,module,exports){ /** * @file button.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('./utils/events.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Events = _interopRequireWildcard(_import2); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/fn.js'); +var _component2 = _interopRequireDefault(_component); -var Fn = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _document = _dereq_('global/document'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * Base class for all buttons @@ -2052,6 +1921,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Button = (function (_Component) { + _inherits(Button, _Component); + function Button(player, options) { _classCallCheck(this, Button); @@ -2065,8 +1936,6 @@ var Button = (function (_Component) { this.on('blur', this.handleBlur); } - _inherits(Button, _Component); - /** * Create the component's DOM element * @@ -2077,14 +1946,14 @@ var Button = (function (_Component) { */ Button.prototype.createEl = function createEl() { - var tag = arguments[0] === undefined ? 'button' : arguments[0]; - var props = arguments[1] === undefined ? {} : arguments[1]; + var tag = arguments.length <= 0 || arguments[0] === undefined ? 'button' : arguments[0]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add standard Aria and Tabindex info - props = _assign2['default']({ + props = _objectAssign2['default']({ className: this.buildCSSClass(), - role: 'button', - type: 'button', // Necessary since the default button type is "submit" + 'role': 'button', + 'type': 'button', // Necessary since the default button type is "submit" 'aria-live': 'polite', // let the screen reader user know that the text of the button may change tabIndex: 0 }, props); @@ -2111,9 +1980,9 @@ var Button = (function (_Component) { */ Button.prototype.controlText = function controlText(text) { - if (!text) { - return this.controlText_ || 'Need Text'; - }this.controlText_ = text; + if (!text) return this.controlText_ || 'Need Text'; + + this.controlText_ = text; this.controlTextEl_.innerHTML = this.localize(this.controlText_); return this; @@ -2145,7 +2014,7 @@ var Button = (function (_Component) { */ Button.prototype.handleFocus = function handleFocus() { - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; /** @@ -2169,65 +2038,68 @@ var Button = (function (_Component) { */ Button.prototype.handleBlur = function handleBlur() { - Events.off(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.off(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; return Button; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('Button', Button); +_component2['default'].registerComponent('Button', Button); exports['default'] = Button; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"global/document":1,"object.assign":44}],52:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"global/document":1,"object.assign":40}],48:[function(_dereq_,module,exports){ /** * @file component.js * * Player Component - Base class for all UI objects */ -var _window = _dereq_('global/window'); +'use strict'; -var _window2 = _interopRequireWildcard(_window); +exports.__esModule = true; -var _import = _dereq_('./utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('./utils/fn.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Fn = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/guid.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Guid = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import4 = _dereq_('./utils/events.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Events = _interopRequireWildcard(_import4); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * Base UI Component class @@ -2266,14 +2138,14 @@ var Component = (function () { if (!player && this.play) { this.player_ = player = this; // eslint-disable-line } else { - this.player_ = player; - } + this.player_ = player; + } // Make a copy of prototype.options_ to protect against overriding defaults - this.options_ = _mergeOptions2['default']({}, this.options_); + this.options_ = _utilsMergeOptionsJs2['default']({}, this.options_); // Updated options with supplied options - options = this.options_ = _mergeOptions2['default'](this.options_, options); + options = this.options_ = _utilsMergeOptionsJs2['default'](this.options_, options); // Get ID from options or options element if one is supplied this.id_ = options.id || options.el && options.el.id; @@ -2283,7 +2155,7 @@ var Component = (function () { // Don't require the player ID function in the case of mock players var id = player && player.id && player.id() || 'no_player'; - this.id_ = '' + id + '_component_' + Guid.newGUID(); + this.id_ = id + '_component_' + Guid.newGUID(); } this.name_ = options.name || null; @@ -2402,13 +2274,13 @@ var Component = (function () { */ Component.prototype.options = function options(obj) { - _log2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); + _utilsLogJs2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); if (!obj) { return this.options_; } - this.options_ = _mergeOptions2['default'](this.options_, obj); + this.options_ = _utilsMergeOptionsJs2['default'](this.options_, obj); return this.options_; }; @@ -2570,7 +2442,7 @@ var Component = (function () { */ Component.prototype.addChild = function addChild(child) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var component = undefined; var componentName = undefined; @@ -2586,13 +2458,13 @@ var Component = (function () { // Same as above, but true is deprecated so show a warning. if (options === true) { - _log2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); + _utilsLogJs2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); options = {}; } // If no componentClass in options, assume componentClass is the name lowercased // (e.g. playButton) - var componentClassName = options.componentClass || _toTitleCase2['default'](componentName); + var componentClassName = options.componentClass || _utilsToTitleCaseJs2['default'](componentName); // Set name through options options.name = componentName; @@ -2605,8 +2477,8 @@ var Component = (function () { // child is a component instance } else { - component = child; - } + component = child; + } this.children_.push(component); @@ -2833,46 +2705,46 @@ var Component = (function () { // Targeting another component or element } else { - (function () { - var target = first; - var type = second; - var fn = Fn.bind(_this2, third); + (function () { + var target = first; + var type = second; + var fn = Fn.bind(_this2, third); - // When this component is disposed, remove the listener from the other component - var removeOnDispose = function removeOnDispose() { - return _this2.off(target, type, fn); - }; + // When this component is disposed, remove the listener from the other component + var removeOnDispose = function removeOnDispose() { + return _this2.off(target, type, fn); + }; - // Use the same function ID so we can remove it later it using the ID - // of the original listener - removeOnDispose.guid = fn.guid; - _this2.on('dispose', removeOnDispose); + // Use the same function ID so we can remove it later it using the ID + // of the original listener + removeOnDispose.guid = fn.guid; + _this2.on('dispose', removeOnDispose); - // If the other component is disposed first we need to clean the reference - // to the other component in this component's removeOnDispose listener - // Otherwise we create a memory leak. - var cleanRemover = function cleanRemover() { - return _this2.off('dispose', removeOnDispose); - }; + // If the other component is disposed first we need to clean the reference + // to the other component in this component's removeOnDispose listener + // Otherwise we create a memory leak. + var cleanRemover = function cleanRemover() { + return _this2.off('dispose', removeOnDispose); + }; - // Add the same function ID so we can easily remove it later - cleanRemover.guid = fn.guid; + // Add the same function ID so we can easily remove it later + cleanRemover.guid = fn.guid; - // Check if this is a DOM node - if (first.nodeName) { - // Add the listener to the other element - Events.on(target, type, fn); - Events.on(target, 'dispose', cleanRemover); + // Check if this is a DOM node + if (first.nodeName) { + // Add the listener to the other element + Events.on(target, type, fn); + Events.on(target, 'dispose', cleanRemover); - // Should be a component - // Not using `instanceof Component` because it makes mock players difficult - } else if (typeof first.on === 'function') { - // Add the listener to the other component - target.on(type, fn); - target.on('dispose', cleanRemover); - } - })(); - } + // Should be a component + // Not using `instanceof Component` because it makes mock players difficult + } else if (typeof first.on === 'function') { + // Add the listener to the other component + target.on(type, fn); + target.on('dispose', cleanRemover); + } + })(); + } return this; }; @@ -2946,9 +2818,8 @@ var Component = (function () { */ Component.prototype.one = function one(first, second, third) { - var _this3 = this; - - var _arguments = arguments; + var _this3 = this, + _arguments = arguments; if (typeof first === 'string' || Array.isArray(first)) { Events.one(this.el_, first, Fn.bind(this, second)); @@ -2958,20 +2829,10 @@ var Component = (function () { var type = second; var fn = Fn.bind(_this3, third); - var newFunc = (function (_newFunc) { - function newFunc() { - return _newFunc.apply(this, arguments); - } - - newFunc.toString = function () { - return _newFunc.toString(); - }; - - return newFunc; - })(function () { + var newFunc = function newFunc() { _this3.off(target, type, newFunc); fn.apply(null, _arguments); - }); + }; // Keep the same function ID so we can remove it later newFunc.guid = fn.guid; @@ -3015,7 +2876,7 @@ var Component = (function () { */ Component.prototype.ready = function ready(fn) { - var sync = arguments[1] === undefined ? false : arguments[1]; + var sync = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; if (fn) { if (this.isReady_) { @@ -3262,7 +3123,7 @@ var Component = (function () { // No px so using % or no style was set, so falling back to offsetWidth/height // If component has display:none, offset will return 0 // TODO: handle display:none and no dimension style using px - return parseInt(this.el_['offset' + _toTitleCase2['default'](widthOrHeight)], 10); + return parseInt(this.el_['offset' + _utilsToTitleCaseJs2['default'](widthOrHeight)], 10); }; /** @@ -3294,7 +3155,7 @@ var Component = (function () { // If more than one finger, don't consider treating this as a click if (event.touches.length === 1) { // Copy the touches object to prevent modifying the original - firstTouch = _assign2['default']({}, event.touches[0]); + firstTouch = _objectAssign2['default']({}, event.touches[0]); // Record start time so we can detect a tap vs. "touch and hold" touchStart = new Date().getTime(); // Reset couldBeTap tracking @@ -3416,7 +3277,7 @@ var Component = (function () { fn = Fn.bind(this, fn); // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't. - var timeoutId = _window2['default'].setTimeout(fn, timeout); + var timeoutId = _globalWindow2['default'].setTimeout(fn, timeout); var disposeFn = function disposeFn() { this.clearTimeout(timeoutId); @@ -3438,7 +3299,7 @@ var Component = (function () { */ Component.prototype.clearTimeout = function clearTimeout(timeoutId) { - _window2['default'].clearTimeout(timeoutId); + _globalWindow2['default'].clearTimeout(timeoutId); var disposeFn = function disposeFn() {}; @@ -3461,7 +3322,7 @@ var Component = (function () { Component.prototype.setInterval = function setInterval(fn, interval) { fn = Fn.bind(this, fn); - var intervalId = _window2['default'].setInterval(fn, interval); + var intervalId = _globalWindow2['default'].setInterval(fn, interval); var disposeFn = function disposeFn() { this.clearInterval(intervalId); @@ -3483,7 +3344,7 @@ var Component = (function () { */ Component.prototype.clearInterval = function clearInterval(intervalId) { - _window2['default'].clearInterval(intervalId); + _globalWindow2['default'].clearInterval(intervalId); var disposeFn = function disposeFn() {}; @@ -3526,9 +3387,9 @@ var Component = (function () { return Component.components_[name]; } - if (_window2['default'] && _window2['default'].videojs && _window2['default'].videojs[name]) { - _log2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); - return _window2['default'].videojs[name]; + if (_globalWindow2['default'] && _globalWindow2['default'].videojs && _globalWindow2['default'].videojs[name]) { + _utilsLogJs2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); + return _globalWindow2['default'].videojs[name]; } }; @@ -3545,7 +3406,7 @@ var Component = (function () { Component.extend = function extend(props) { props = props || {}; - _log2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); + _utilsLogJs2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); // Set up the constructor using the supplied init method // or using the init of the parent object @@ -3590,89 +3451,89 @@ Component.registerComponent('Component', Component); exports['default'] = Component; module.exports = exports['default']; -},{"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/to-title-case.js":120,"global/window":2,"object.assign":44}],53:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/to-title-case.js":116,"global/window":2,"object.assign":40}],49:[function(_dereq_,module,exports){ /** * @file control-bar.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _PlayToggle = _dereq_('./play-toggle.js'); +var _playToggleJs = _dereq_('./play-toggle.js'); -var _PlayToggle2 = _interopRequireWildcard(_PlayToggle); +var _playToggleJs2 = _interopRequireDefault(_playToggleJs); -var _CurrentTimeDisplay = _dereq_('./time-controls/current-time-display.js'); +var _timeControlsCurrentTimeDisplayJs = _dereq_('./time-controls/current-time-display.js'); -var _CurrentTimeDisplay2 = _interopRequireWildcard(_CurrentTimeDisplay); +var _timeControlsCurrentTimeDisplayJs2 = _interopRequireDefault(_timeControlsCurrentTimeDisplayJs); -var _DurationDisplay = _dereq_('./time-controls/duration-display.js'); +var _timeControlsDurationDisplayJs = _dereq_('./time-controls/duration-display.js'); -var _DurationDisplay2 = _interopRequireWildcard(_DurationDisplay); +var _timeControlsDurationDisplayJs2 = _interopRequireDefault(_timeControlsDurationDisplayJs); -var _TimeDivider = _dereq_('./time-controls/time-divider.js'); +var _timeControlsTimeDividerJs = _dereq_('./time-controls/time-divider.js'); -var _TimeDivider2 = _interopRequireWildcard(_TimeDivider); +var _timeControlsTimeDividerJs2 = _interopRequireDefault(_timeControlsTimeDividerJs); -var _RemainingTimeDisplay = _dereq_('./time-controls/remaining-time-display.js'); +var _timeControlsRemainingTimeDisplayJs = _dereq_('./time-controls/remaining-time-display.js'); -var _RemainingTimeDisplay2 = _interopRequireWildcard(_RemainingTimeDisplay); +var _timeControlsRemainingTimeDisplayJs2 = _interopRequireDefault(_timeControlsRemainingTimeDisplayJs); -var _LiveDisplay = _dereq_('./live-display.js'); +var _liveDisplayJs = _dereq_('./live-display.js'); -var _LiveDisplay2 = _interopRequireWildcard(_LiveDisplay); +var _liveDisplayJs2 = _interopRequireDefault(_liveDisplayJs); -var _ProgressControl = _dereq_('./progress-control/progress-control.js'); +var _progressControlProgressControlJs = _dereq_('./progress-control/progress-control.js'); -var _ProgressControl2 = _interopRequireWildcard(_ProgressControl); +var _progressControlProgressControlJs2 = _interopRequireDefault(_progressControlProgressControlJs); -var _FullscreenToggle = _dereq_('./fullscreen-toggle.js'); +var _fullscreenToggleJs = _dereq_('./fullscreen-toggle.js'); -var _FullscreenToggle2 = _interopRequireWildcard(_FullscreenToggle); +var _fullscreenToggleJs2 = _interopRequireDefault(_fullscreenToggleJs); -var _VolumeControl = _dereq_('./volume-control/volume-control.js'); +var _volumeControlVolumeControlJs = _dereq_('./volume-control/volume-control.js'); -var _VolumeControl2 = _interopRequireWildcard(_VolumeControl); +var _volumeControlVolumeControlJs2 = _interopRequireDefault(_volumeControlVolumeControlJs); -var _VolumeMenuButton = _dereq_('./volume-menu-button.js'); +var _volumeMenuButtonJs = _dereq_('./volume-menu-button.js'); -var _VolumeMenuButton2 = _interopRequireWildcard(_VolumeMenuButton); +var _volumeMenuButtonJs2 = _interopRequireDefault(_volumeMenuButtonJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _muteToggleJs = _dereq_('./mute-toggle.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); -var _ChaptersButton = _dereq_('./text-track-controls/chapters-button.js'); +var _textTrackControlsChaptersButtonJs = _dereq_('./text-track-controls/chapters-button.js'); -var _ChaptersButton2 = _interopRequireWildcard(_ChaptersButton); +var _textTrackControlsChaptersButtonJs2 = _interopRequireDefault(_textTrackControlsChaptersButtonJs); -var _SubtitlesButton = _dereq_('./text-track-controls/subtitles-button.js'); +var _textTrackControlsSubtitlesButtonJs = _dereq_('./text-track-controls/subtitles-button.js'); -var _SubtitlesButton2 = _interopRequireWildcard(_SubtitlesButton); +var _textTrackControlsSubtitlesButtonJs2 = _interopRequireDefault(_textTrackControlsSubtitlesButtonJs); -var _CaptionsButton = _dereq_('./text-track-controls/captions-button.js'); +var _textTrackControlsCaptionsButtonJs = _dereq_('./text-track-controls/captions-button.js'); -var _CaptionsButton2 = _interopRequireWildcard(_CaptionsButton); +var _textTrackControlsCaptionsButtonJs2 = _interopRequireDefault(_textTrackControlsCaptionsButtonJs); -var _PlaybackRateMenuButton = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); +var _playbackRateMenuPlaybackRateMenuButtonJs = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); -var _PlaybackRateMenuButton2 = _interopRequireWildcard(_PlaybackRateMenuButton); +var _playbackRateMenuPlaybackRateMenuButtonJs2 = _interopRequireDefault(_playbackRateMenuPlaybackRateMenuButtonJs); -var _CustomControlSpacer = _dereq_('./spacer-controls/custom-control-spacer.js'); +var _spacerControlsCustomControlSpacerJs = _dereq_('./spacer-controls/custom-control-spacer.js'); -var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); +var _spacerControlsCustomControlSpacerJs2 = _interopRequireDefault(_spacerControlsCustomControlSpacerJs); /** * Container of main controls @@ -3682,16 +3543,14 @@ var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); */ var ControlBar = (function (_Component) { + _inherits(ControlBar, _Component); + function ControlBar() { _classCallCheck(this, ControlBar); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ControlBar, _Component); - /** * Create the component's DOM element * @@ -3706,38 +3565,38 @@ var ControlBar = (function (_Component) { }; return ControlBar; -})(_Component3['default']); +})(_componentJs2['default']); ControlBar.prototype.options_ = { loadEvent: 'play', children: ['playToggle', 'volumeMenuButton', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'muteToggle', 'volumeControl', 'chaptersButton', 'subtitlesButton', 'captionsButton', 'fullscreenToggle'] }; -_Component3['default'].registerComponent('ControlBar', ControlBar); +_componentJs2['default'].registerComponent('ControlBar', ControlBar); exports['default'] = ControlBar; module.exports = exports['default']; -},{"../component.js":52,"./fullscreen-toggle.js":54,"./live-display.js":55,"./mute-toggle.js":56,"./play-toggle.js":57,"./playback-rate-menu/playback-rate-menu-button.js":58,"./progress-control/progress-control.js":62,"./spacer-controls/custom-control-spacer.js":64,"./text-track-controls/captions-button.js":67,"./text-track-controls/chapters-button.js":68,"./text-track-controls/subtitles-button.js":71,"./time-controls/current-time-display.js":74,"./time-controls/duration-display.js":75,"./time-controls/remaining-time-display.js":76,"./time-controls/time-divider.js":77,"./volume-control/volume-control.js":79,"./volume-menu-button.js":81}],54:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"./fullscreen-toggle.js":50,"./live-display.js":51,"./mute-toggle.js":52,"./play-toggle.js":53,"./playback-rate-menu/playback-rate-menu-button.js":54,"./progress-control/progress-control.js":58,"./spacer-controls/custom-control-spacer.js":60,"./text-track-controls/captions-button.js":63,"./text-track-controls/chapters-button.js":64,"./text-track-controls/subtitles-button.js":67,"./time-controls/current-time-display.js":70,"./time-controls/duration-display.js":71,"./time-controls/remaining-time-display.js":72,"./time-controls/time-divider.js":73,"./volume-control/volume-control.js":75,"./volume-menu-button.js":77}],50:[function(_dereq_,module,exports){ /** * @file fullscreen-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Toggle fullscreen video @@ -3747,16 +3606,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var FullscreenToggle = (function (_Button) { + _inherits(FullscreenToggle, _Button); + function FullscreenToggle() { _classCallCheck(this, FullscreenToggle); - if (_Button != null) { - _Button.apply(this, arguments); - } + _Button.apply(this, arguments); } - _inherits(FullscreenToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3785,35 +3642,37 @@ var FullscreenToggle = (function (_Button) { }; return FullscreenToggle; -})(_Button3['default']); +})(_buttonJs2['default']); FullscreenToggle.prototype.controlText_ = 'Fullscreen'; -_Component2['default'].registerComponent('FullscreenToggle', FullscreenToggle); +_componentJs2['default'].registerComponent('FullscreenToggle', FullscreenToggle); exports['default'] = FullscreenToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],55:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],51:[function(_dereq_,module,exports){ /** * @file live-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Displays the live indicator @@ -3824,16 +3683,14 @@ var Dom = _interopRequireWildcard(_import); */ var LiveDisplay = (function (_Component) { + _inherits(LiveDisplay, _Component); + function LiveDisplay() { _classCallCheck(this, LiveDisplay); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LiveDisplay, _Component); - /** * Create the component's DOM element * @@ -3858,37 +3715,39 @@ var LiveDisplay = (function (_Component) { }; return LiveDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LiveDisplay', LiveDisplay); +_component2['default'].registerComponent('LiveDisplay', LiveDisplay); exports['default'] = LiveDisplay; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111}],56:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107}],52:[function(_dereq_,module,exports){ /** * @file mute-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../utils/dom.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Dom = _interopRequireWildcard(_import); +var _button = _dereq_('../button'); + +var _button2 = _interopRequireDefault(_button); + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * A button component for muting the audio @@ -3900,6 +3759,8 @@ var Dom = _interopRequireWildcard(_import); */ var MuteToggle = (function (_Button) { + _inherits(MuteToggle, _Button); + function MuteToggle(player, options) { _classCallCheck(this, MuteToggle); @@ -3908,14 +3769,14 @@ var MuteToggle = (function (_Button) { this.on(player, 'volumechange', this.update); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { this.update(); // We need to update the button to account for a default muted state. - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -3923,8 +3784,6 @@ var MuteToggle = (function (_Button) { }); } - _inherits(MuteToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3981,35 +3840,35 @@ var MuteToggle = (function (_Button) { }; return MuteToggle; -})(_Button3['default']); +})(_button2['default']); MuteToggle.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('MuteToggle', MuteToggle); +_component2['default'].registerComponent('MuteToggle', MuteToggle); exports['default'] = MuteToggle; module.exports = exports['default']; -},{"../button":51,"../component":52,"../utils/dom.js":111}],57:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button":47,"../component":48,"../utils/dom.js":107}],53:[function(_dereq_,module,exports){ /** * @file play-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Button to toggle between play and pause @@ -4021,6 +3880,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlayToggle = (function (_Button) { + _inherits(PlayToggle, _Button); + function PlayToggle(player, options) { _classCallCheck(this, PlayToggle); @@ -4030,8 +3891,6 @@ var PlayToggle = (function (_Button) { this.on(player, 'pause', this.handlePause); } - _inherits(PlayToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -4082,47 +3941,49 @@ var PlayToggle = (function (_Button) { }; return PlayToggle; -})(_Button3['default']); +})(_buttonJs2['default']); PlayToggle.prototype.controlText_ = 'Play'; -_Component2['default'].registerComponent('PlayToggle', PlayToggle); +_componentJs2['default'].registerComponent('PlayToggle', PlayToggle); exports['default'] = PlayToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],58:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],54:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Menu = _dereq_('../../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _PlaybackRateMenuItem = _dereq_('./playback-rate-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _PlaybackRateMenuItem2 = _interopRequireWildcard(_PlaybackRateMenuItem); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _Component = _dereq_('../../component.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _Component2 = _interopRequireWildcard(_Component); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _import = _dereq_('../../utils/dom.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Dom = _interopRequireWildcard(_import); +var _playbackRateMenuItemJs = _dereq_('./playback-rate-menu-item.js'); + +var _playbackRateMenuItemJs2 = _interopRequireDefault(_playbackRateMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * The component for controlling the playback rate @@ -4134,6 +3995,8 @@ var Dom = _interopRequireWildcard(_import); */ var PlaybackRateMenuButton = (function (_MenuButton) { + _inherits(PlaybackRateMenuButton, _MenuButton); + function PlaybackRateMenuButton(player, options) { _classCallCheck(this, PlaybackRateMenuButton); @@ -4146,8 +4009,6 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.on(player, 'ratechange', this.updateLabel); } - _inherits(PlaybackRateMenuButton, _MenuButton); - /** * Create the component's DOM element * @@ -4160,7 +4021,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.labelEl_ = Dom.createEl('div', { className: 'vjs-playback-rate-value', - innerHTML: 1 + innerHTML: 1.0 }); el.appendChild(this.labelEl_); @@ -4187,12 +4048,12 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player()); + var menu = new _menuMenuJs2['default'](this.player()); var rates = this.playbackRates(); if (rates) { for (var i = rates.length - 1; i >= 0; i--) { - menu.addChild(new _PlaybackRateMenuItem2['default'](this.player(), { rate: rates[i] + 'x' })); + menu.addChild(new _playbackRateMenuItemJs2['default'](this.player(), { 'rate': rates[i] + 'x' })); } } @@ -4240,7 +4101,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRates = function playbackRates() { - return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates; + return this.options_['playbackRates'] || this.options_.playerOptions && this.options_.playerOptions['playbackRates']; }; /** @@ -4251,7 +4112,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRateSupported = function playbackRateSupported() { - return this.player().tech && this.player().tech.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0; + return this.player().tech && this.player().tech['featuresPlaybackRate'] && this.playbackRates() && this.playbackRates().length > 0; }; /** @@ -4281,35 +4142,35 @@ var PlaybackRateMenuButton = (function (_MenuButton) { }; return PlaybackRateMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); PlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate'; -_Component2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); +_componentJs2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); exports['default'] = PlaybackRateMenuButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../menu/menu.js":90,"../../utils/dom.js":111,"./playback-rate-menu-item.js":59}],59:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../menu/menu.js":86,"../../utils/dom.js":107,"./playback-rate-menu-item.js":55}],55:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The specific menu item type for selecting a playback rate @@ -4321,15 +4182,17 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlaybackRateMenuItem = (function (_MenuItem) { + _inherits(PlaybackRateMenuItem, _MenuItem); + function PlaybackRateMenuItem(player, options) { _classCallCheck(this, PlaybackRateMenuItem); - var label = options.rate; + var label = options['rate']; var rate = parseFloat(label, 10); // Modify options for parent MenuItem class's init. - options.label = label; - options.selected = rate === 1; + options['label'] = label; + options['selected'] = rate === 1; _MenuItem.call(this, player, options); this.label = label; @@ -4338,8 +4201,6 @@ var PlaybackRateMenuItem = (function (_MenuItem) { this.on(player, 'ratechange', this.update); } - _inherits(PlaybackRateMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -4362,35 +4223,37 @@ var PlaybackRateMenuItem = (function (_MenuItem) { }; return PlaybackRateMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); PlaybackRateMenuItem.prototype.contentElType = 'button'; -_Component2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); +_componentJs2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); exports['default'] = PlaybackRateMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89}],60:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85}],56:[function(_dereq_,module,exports){ /** * @file load-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Shows load progress @@ -4402,6 +4265,8 @@ var Dom = _interopRequireWildcard(_import); */ var LoadProgressBar = (function (_Component) { + _inherits(LoadProgressBar, _Component); + function LoadProgressBar(player, options) { _classCallCheck(this, LoadProgressBar); @@ -4409,8 +4274,6 @@ var LoadProgressBar = (function (_Component) { this.on(player, 'progress', this.update); } - _inherits(LoadProgressBar, _Component); - /** * Create the component's DOM element * @@ -4468,37 +4331,39 @@ var LoadProgressBar = (function (_Component) { }; return LoadProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('LoadProgressBar', LoadProgressBar); +_componentJs2['default'].registerComponent('LoadProgressBar', LoadProgressBar); exports['default'] = LoadProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111}],61:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107}],57:[function(_dereq_,module,exports){ /** * @file play-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Shows play progress @@ -4510,6 +4375,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var PlayProgressBar = (function (_Component) { + _inherits(PlayProgressBar, _Component); + function PlayProgressBar(player, options) { _classCallCheck(this, PlayProgressBar); @@ -4518,8 +4385,6 @@ var PlayProgressBar = (function (_Component) { player.ready(Fn.bind(this, this.updateDataAttr)); } - _inherits(PlayProgressBar, _Component); - /** * Create the component's DOM element * @@ -4536,37 +4401,37 @@ var PlayProgressBar = (function (_Component) { PlayProgressBar.prototype.updateDataAttr = function updateDataAttr() { var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); - this.el_.setAttribute('data-current-time', _formatTime2['default'](time, this.player_.duration())); + this.el_.setAttribute('data-current-time', _utilsFormatTimeJs2['default'](time, this.player_.duration())); }; return PlayProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('PlayProgressBar', PlayProgressBar); +_componentJs2['default'].registerComponent('PlayProgressBar', PlayProgressBar); exports['default'] = PlayProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/fn.js":113,"../../utils/format-time.js":114}],62:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/fn.js":109,"../../utils/format-time.js":110}],58:[function(_dereq_,module,exports){ /** * @file progress-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _SeekBar = _dereq_('./seek-bar.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _SeekBar2 = _interopRequireWildcard(_SeekBar); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _seekBarJs = _dereq_('./seek-bar.js'); + +var _seekBarJs2 = _interopRequireDefault(_seekBarJs); /** * The Progress Control component contains the seek bar, load progress, @@ -4579,16 +4444,14 @@ var _SeekBar2 = _interopRequireWildcard(_SeekBar); */ var ProgressControl = (function (_Component) { + _inherits(ProgressControl, _Component); + function ProgressControl() { _classCallCheck(this, ProgressControl); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ProgressControl, _Component); - /** * Create the component's DOM element * @@ -4603,55 +4466,57 @@ var ProgressControl = (function (_Component) { }; return ProgressControl; -})(_Component3['default']); +})(_componentJs2['default']); ProgressControl.prototype.options_ = { children: { - seekBar: {} + 'seekBar': {} } }; -_Component3['default'].registerComponent('ProgressControl', ProgressControl); +_componentJs2['default'].registerComponent('ProgressControl', ProgressControl); exports['default'] = ProgressControl; module.exports = exports['default']; -},{"../../component.js":52,"./seek-bar.js":63}],63:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./seek-bar.js":59}],59:[function(_dereq_,module,exports){ /** * @file seek-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _LoadProgressBar = _dereq_('./load-progress-bar.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _LoadProgressBar2 = _interopRequireWildcard(_LoadProgressBar); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); -var _PlayProgressBar = _dereq_('./play-progress-bar.js'); +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); -var _PlayProgressBar2 = _interopRequireWildcard(_PlayProgressBar); +var _componentJs = _dereq_('../../component.js'); -var _import = _dereq_('../../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import); +var _loadProgressBarJs = _dereq_('./load-progress-bar.js'); -var _formatTime = _dereq_('../../utils/format-time.js'); +var _loadProgressBarJs2 = _interopRequireDefault(_loadProgressBarJs); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _playProgressBarJs = _dereq_('./play-progress-bar.js'); + +var _playProgressBarJs2 = _interopRequireDefault(_playProgressBarJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Seek Bar and holder for the progress bars @@ -4663,6 +4528,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var SeekBar = (function (_Slider) { + _inherits(SeekBar, _Slider); + function SeekBar(player, options) { _classCallCheck(this, SeekBar); @@ -4671,8 +4538,6 @@ var SeekBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(SeekBar, _Slider); - /** * Create the component's DOM element * @@ -4697,7 +4562,7 @@ var SeekBar = (function (_Slider) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete) - this.el_.setAttribute('aria-valuetext', _formatTime2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) + this.el_.setAttribute('aria-valuetext', _utilsFormatTimeJs2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) }; /** @@ -4781,43 +4646,43 @@ var SeekBar = (function (_Slider) { }; return SeekBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); SeekBar.prototype.options_ = { children: { - loadProgressBar: {}, - playProgressBar: {} + 'loadProgressBar': {}, + 'playProgressBar': {} }, - barName: 'playProgressBar' + 'barName': 'playProgressBar' }; SeekBar.prototype.playerEvent = 'timeupdate'; -_Component2['default'].registerComponent('SeekBar', SeekBar); +_componentJs2['default'].registerComponent('SeekBar', SeekBar); exports['default'] = SeekBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"../../utils/format-time.js":114,"./load-progress-bar.js":60,"./play-progress-bar.js":61}],64:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"../../utils/format-time.js":110,"./load-progress-bar.js":56,"./play-progress-bar.js":57}],60:[function(_dereq_,module,exports){ /** * @file custom-control-spacer.js */ +'use strict'; -var _Spacer2 = _dereq_('./spacer.js'); +exports.__esModule = true; -var _Spacer3 = _interopRequireWildcard(_Spacer2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _spacerJs = _dereq_('./spacer.js'); + +var _spacerJs2 = _interopRequireDefault(_spacerJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Spacer specifically meant to be used as an insertion point for new plugins, etc. @@ -4827,16 +4692,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CustomControlSpacer = (function (_Spacer) { + _inherits(CustomControlSpacer, _Spacer); + function CustomControlSpacer() { _classCallCheck(this, CustomControlSpacer); - if (_Spacer != null) { - _Spacer.apply(this, arguments); - } + _Spacer.apply(this, arguments); } - _inherits(CustomControlSpacer, _Spacer); - /** * Allow sub components to stack CSS class names * @@ -4862,29 +4725,29 @@ var CustomControlSpacer = (function (_Spacer) { }; return CustomControlSpacer; -})(_Spacer3['default']); +})(_spacerJs2['default']); -_Component2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); +_componentJs2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); exports['default'] = CustomControlSpacer; module.exports = exports['default']; -},{"../../component.js":52,"./spacer.js":65}],65:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./spacer.js":61}],61:[function(_dereq_,module,exports){ /** * @file spacer.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Just an empty spacer element that can be used as an append point for plugins, etc. @@ -4895,16 +4758,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var Spacer = (function (_Component) { + _inherits(Spacer, _Component); + function Spacer() { _classCallCheck(this, Spacer); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Spacer, _Component); - /** * Allow sub components to stack CSS class names * @@ -4931,34 +4792,34 @@ var Spacer = (function (_Component) { }; return Spacer; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Spacer', Spacer); +_componentJs2['default'].registerComponent('Spacer', Spacer); exports['default'] = Spacer; module.exports = exports['default']; -},{"../../component.js":52}],66:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],62:[function(_dereq_,module,exports){ /** * @file caption-settings-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The menu item for caption track settings menu @@ -4970,13 +4831,15 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { + _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); + function CaptionSettingsMenuItem(player, options) { _classCallCheck(this, CaptionSettingsMenuItem); - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' settings', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' settings', 'default': false, mode: 'disabled' }; @@ -4985,8 +4848,6 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { this.addClass('vjs-texttrack-settings'); } - _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); - /** * Handle click on menu item * @@ -4998,37 +4859,37 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { }; return CaptionSettingsMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); +_componentJs2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); exports['default'] = CaptionSettingsMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],67:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],63:[function(_dereq_,module,exports){ /** * @file captions-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _CaptionSettingsMenuItem = _dereq_('./caption-settings-menu-item.js'); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _captionSettingsMenuItemJs = _dereq_('./caption-settings-menu-item.js'); + +var _captionSettingsMenuItemJs2 = _interopRequireDefault(_captionSettingsMenuItemJs); /** * The button component for toggling and selecting captions @@ -5041,6 +4902,8 @@ var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem */ var CaptionsButton = (function (_TextTrackButton) { + _inherits(CaptionsButton, _TextTrackButton); + function CaptionsButton(player, options, ready) { _classCallCheck(this, CaptionsButton); @@ -5048,8 +4911,6 @@ var CaptionsButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Captions Menu'); } - _inherits(CaptionsButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5072,7 +4933,7 @@ var CaptionsButton = (function (_TextTrackButton) { _TextTrackButton.prototype.update.call(this); // if native, then threshold is 1 because no settings button - if (this.player().tech && this.player().tech.featuresNativeTextTracks) { + if (this.player().tech && this.player().tech['featuresNativeTextTracks']) { threshold = 1; } @@ -5093,72 +4954,74 @@ var CaptionsButton = (function (_TextTrackButton) { CaptionsButton.prototype.createItems = function createItems() { var items = []; - if (!(this.player().tech && this.player().tech.featuresNativeTextTracks)) { - items.push(new _CaptionSettingsMenuItem2['default'](this.player_, { kind: this.kind_ })); + if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) { + items.push(new _captionSettingsMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); } return _TextTrackButton.prototype.createItems.call(this, items); }; return CaptionsButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); CaptionsButton.prototype.kind_ = 'captions'; CaptionsButton.prototype.controlText_ = 'Captions'; -_Component2['default'].registerComponent('CaptionsButton', CaptionsButton); +_componentJs2['default'].registerComponent('CaptionsButton', CaptionsButton); exports['default'] = CaptionsButton; module.exports = exports['default']; -},{"../../component.js":52,"./caption-settings-menu-item.js":66,"./text-track-button.js":72}],68:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./caption-settings-menu-item.js":62,"./text-track-button.js":68}],64:[function(_dereq_,module,exports){ /** * @file chapters-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _ChaptersTrackMenuItem = _dereq_('./chapters-track-menu-item.js'); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); -var _ChaptersTrackMenuItem2 = _interopRequireWildcard(_ChaptersTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _Menu = _dereq_('../../menu/menu.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _Menu2 = _interopRequireWildcard(_Menu); +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); -var _import = _dereq_('../../utils/dom.js'); +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); -var Dom = _interopRequireWildcard(_import); +var _chaptersTrackMenuItemJs = _dereq_('./chapters-track-menu-item.js'); -var _import2 = _dereq_('../../utils/fn.js'); +var _chaptersTrackMenuItemJs2 = _interopRequireDefault(_chaptersTrackMenuItemJs); -var Fn = _interopRequireWildcard(_import2); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _toTitleCase = _dereq_('../../utils/to-title-case.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../../utils/dom.js'); -var _window = _dereq_('global/window'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * The button component for toggling and selecting chapters @@ -5173,6 +5036,8 @@ var _window2 = _interopRequireWildcard(_window); */ var ChaptersButton = (function (_TextTrackButton) { + _inherits(ChaptersButton, _TextTrackButton); + function ChaptersButton(player, options, ready) { _classCallCheck(this, ChaptersButton); @@ -5180,8 +5045,6 @@ var ChaptersButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Chapters Menu'); } - _inherits(ChaptersButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5211,9 +5074,9 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5235,42 +5098,42 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { + if (track['kind'] === this.kind_) { if (!track.cues) { - track.mode = 'hidden'; + track['mode'] = 'hidden'; /* jshint loopfunc:true */ // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864 - _window2['default'].setTimeout(Fn.bind(this, function () { + _globalWindow2['default'].setTimeout(Fn.bind(this, function () { this.createMenu(); }), 100); /* jshint loopfunc:false */ } else { - chaptersTrack = track; - break; - } + chaptersTrack = track; + break; + } } } var menu = this.menu; if (menu === undefined) { - menu = new _Menu2['default'](this.player_); + menu = new _menuMenuJs2['default'](this.player_); menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.kind_), + innerHTML: _utilsToTitleCaseJs2['default'](this.kind_), tabIndex: -1 })); } if (chaptersTrack) { - var cues = chaptersTrack.cues, + var cues = chaptersTrack['cues'], cue = undefined; for (var i = 0, l = cues.length; i < l; i++) { cue = cues[i]; - var mi = new _ChaptersTrackMenuItem2['default'](this.player_, { - track: chaptersTrack, - cue: cue + var mi = new _chaptersTrackMenuItemJs2['default'](this.player_, { + 'track': chaptersTrack, + 'cue': cue }); items.push(mi); @@ -5288,40 +5151,42 @@ var ChaptersButton = (function (_TextTrackButton) { }; return ChaptersButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); ChaptersButton.prototype.kind_ = 'chapters'; ChaptersButton.prototype.controlText_ = 'Chapters'; -_Component2['default'].registerComponent('ChaptersButton', ChaptersButton); +_componentJs2['default'].registerComponent('ChaptersButton', ChaptersButton); exports['default'] = ChaptersButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu.js":90,"../../utils/dom.js":111,"../../utils/fn.js":113,"../../utils/to-title-case.js":120,"./chapters-track-menu-item.js":69,"./text-track-button.js":72,"./text-track-menu-item.js":73,"global/window":2}],69:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu.js":86,"../../utils/dom.js":107,"../../utils/fn.js":109,"../../utils/to-title-case.js":116,"./chapters-track-menu-item.js":65,"./text-track-button.js":68,"./text-track-menu-item.js":69,"global/window":2}],65:[function(_dereq_,module,exports){ /** * @file chapters-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); /** * The chapter track menu item @@ -5333,16 +5198,18 @@ var Fn = _interopRequireWildcard(_import); */ var ChaptersTrackMenuItem = (function (_MenuItem) { + _inherits(ChaptersTrackMenuItem, _MenuItem); + function ChaptersTrackMenuItem(player, options) { _classCallCheck(this, ChaptersTrackMenuItem); - var track = options.track; - var cue = options.cue; + var track = options['track']; + var cue = options['cue']; var currentTime = player.currentTime(); // Modify options for parent MenuItem class's init. - options.label = cue.text; - options.selected = cue.startTime <= currentTime && currentTime < cue.endTime; + options['label'] = cue.text; + options['selected'] = cue['startTime'] <= currentTime && currentTime < cue['endTime']; _MenuItem.call(this, player, options); this.track = track; @@ -5350,8 +5217,6 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { track.addEventListener('cuechange', Fn.bind(this, this.update)); } - _inherits(ChaptersTrackMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -5375,37 +5240,37 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { var currentTime = this.player_.currentTime(); // vjs.log(currentTime, cue.startTime); - this.selected(cue.startTime <= currentTime && currentTime < cue.endTime); + this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']); }; return ChaptersTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); +_componentJs2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); exports['default'] = ChaptersTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113}],70:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109}],66:[function(_dereq_,module,exports){ /** * @file off-text-track-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * A special menu item for turning of a specific type of text track @@ -5417,25 +5282,25 @@ var _Component2 = _interopRequireWildcard(_Component); */ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { + _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); + function OffTextTrackMenuItem(player, options) { _classCallCheck(this, OffTextTrackMenuItem); // Create pseudo track info // Requires options['kind'] - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' off', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' off', 'default': false, - mode: 'disabled' + 'mode': 'disabled' }; _TextTrackMenuItem.call(this, player, options); this.selected(true); } - _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); - /** * Handle text track change * @@ -5449,7 +5314,7 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.track.kind && track.mode === 'showing') { + if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') { selected = false; break; } @@ -5459,33 +5324,33 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { }; return OffTextTrackMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); +_componentJs2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); exports['default'] = OffTextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],71:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],67:[function(_dereq_,module,exports){ /** * @file subtitles-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackButtonJs = _dereq_('./text-track-button.js'); + +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The button component for toggling and selecting subtitles @@ -5498,6 +5363,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var SubtitlesButton = (function (_TextTrackButton) { + _inherits(SubtitlesButton, _TextTrackButton); + function SubtitlesButton(player, options, ready) { _classCallCheck(this, SubtitlesButton); @@ -5505,8 +5372,6 @@ var SubtitlesButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Subtitles Menu'); } - _inherits(SubtitlesButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5519,48 +5384,50 @@ var SubtitlesButton = (function (_TextTrackButton) { }; return SubtitlesButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); SubtitlesButton.prototype.kind_ = 'subtitles'; SubtitlesButton.prototype.controlText_ = 'Subtitles'; -_Component2['default'].registerComponent('SubtitlesButton', SubtitlesButton); +_componentJs2['default'].registerComponent('SubtitlesButton', SubtitlesButton); exports['default'] = SubtitlesButton; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-button.js":72}],72:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-button.js":68}],68:[function(_dereq_,module,exports){ /** * @file text-track-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _OffTextTrackMenuItem = _dereq_('./off-text-track-menu-item.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _offTextTrackMenuItemJs = _dereq_('./off-text-track-menu-item.js'); + +var _offTextTrackMenuItemJs2 = _interopRequireDefault(_offTextTrackMenuItemJs); /** * The base class for buttons that toggle specific text track types (e.g. subtitles) @@ -5572,6 +5439,8 @@ var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); */ var TextTrackButton = (function (_MenuButton) { + _inherits(TextTrackButton, _MenuButton); + function TextTrackButton(player, options) { _classCallCheck(this, TextTrackButton); @@ -5597,15 +5466,13 @@ var TextTrackButton = (function (_MenuButton) { }); } - _inherits(TextTrackButton, _MenuButton); - // Create a menu item for each text track TextTrackButton.prototype.createItems = function createItems() { - var items = arguments[0] === undefined ? [] : arguments[0]; + var items = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; // Add an OFF menu item to turn all tracks off - items.push(new _OffTextTrackMenuItem2['default'](this.player_, { kind: this.kind_ })); + items.push(new _offTextTrackMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); var tracks = this.player_.textTracks(); @@ -5617,9 +5484,9 @@ var TextTrackButton = (function (_MenuButton) { var track = tracks[i]; // only add tracks that are of the appropriate kind and have a label - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5628,45 +5495,47 @@ var TextTrackButton = (function (_MenuButton) { }; return TextTrackButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -_Component2['default'].registerComponent('TextTrackButton', TextTrackButton); +_componentJs2['default'].registerComponent('TextTrackButton', TextTrackButton); exports['default'] = TextTrackButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../utils/fn.js":113,"./off-text-track-menu-item.js":70,"./text-track-menu-item.js":73}],73:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../utils/fn.js":109,"./off-text-track-menu-item.js":66,"./text-track-menu-item.js":69}],69:[function(_dereq_,module,exports){ /** * @file text-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); -var _window = _dereq_('global/window'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('../../component.js'); -var _document = _dereq_('global/document'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * The specific menu item type for selecting a language within a text track kind @@ -5678,17 +5547,19 @@ var _document2 = _interopRequireWildcard(_document); */ var TextTrackMenuItem = (function (_MenuItem) { + _inherits(TextTrackMenuItem, _MenuItem); + function TextTrackMenuItem(player, options) { var _this = this; _classCallCheck(this, TextTrackMenuItem); - var track = options.track; + var track = options['track']; var tracks = player.textTracks(); // Modify options for parent MenuItem class's init. - options.label = track.label || track.language || 'Unknown'; - options.selected = track['default'] || track.mode === 'showing'; + options['label'] = track['label'] || track['language'] || 'Unknown'; + options['selected'] = track['default'] || track['mode'] === 'showing'; _MenuItem.call(this, player, options); this.track = track; @@ -5715,15 +5586,15 @@ var TextTrackMenuItem = (function (_MenuItem) { var event = undefined; _this.on(['tap', 'click'], function () { - if (typeof _window2['default'].Event !== 'object') { + if (typeof _globalWindow2['default'].Event !== 'object') { // Android 2.3 throws an Illegal Constructor error for window.Event try { - event = new _window2['default'].Event('change'); + event = new _globalWindow2['default'].Event('change'); } catch (err) {} } if (!event) { - event = _document2['default'].createEvent('Event'); + event = _globalDocument2['default'].createEvent('Event'); event.initEvent('change', true, true); } @@ -5733,8 +5604,6 @@ var TextTrackMenuItem = (function (_MenuItem) { } } - _inherits(TextTrackMenuItem, _MenuItem); - /** * Handle click on text track * @@ -5742,24 +5611,24 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleClick = function handleClick(event) { - var kind = this.track.kind; + var kind = this.track['kind']; var tracks = this.player_.textTracks(); _MenuItem.prototype.handleClick.call(this, event); - if (!tracks) { - return; - }for (var i = 0; i < tracks.length; i++) { + if (!tracks) return; + + for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind !== kind) { + if (track['kind'] !== kind) { continue; } if (track === this.track) { - track.mode = 'showing'; + track['mode'] = 'showing'; } else { - track.mode = 'disabled'; + track['mode'] = 'disabled'; } } }; @@ -5771,41 +5640,43 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) { - this.selected(this.track.mode === 'showing'); + this.selected(this.track['mode'] === 'showing'); }; return TextTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); +_componentJs2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); exports['default'] = TextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113,"global/document":1,"global/window":2}],74:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109,"global/document":1,"global/window":2}],70:[function(_dereq_,module,exports){ /** * @file current-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the current time @@ -5817,6 +5688,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var CurrentTimeDisplay = (function (_Component) { + _inherits(CurrentTimeDisplay, _Component); + function CurrentTimeDisplay(player, options) { _classCallCheck(this, CurrentTimeDisplay); @@ -5825,8 +5698,6 @@ var CurrentTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(CurrentTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -5859,42 +5730,44 @@ var CurrentTimeDisplay = (function (_Component) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); var localizedText = this.localize('Current Time'); - var formattedTime = _formatTime2['default'](time, this.player_.duration()); + var formattedTime = _utilsFormatTimeJs2['default'](time, this.player_.duration()); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; }; return CurrentTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); +_componentJs2['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); exports['default'] = CurrentTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],75:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],71:[function(_dereq_,module,exports){ /** * @file duration-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the duration @@ -5906,6 +5779,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var DurationDisplay = (function (_Component) { + _inherits(DurationDisplay, _Component); + function DurationDisplay(player, options) { _classCallCheck(this, DurationDisplay); @@ -5920,8 +5795,6 @@ var DurationDisplay = (function (_Component) { this.on(player, 'loadedmetadata', this.updateContent); } - _inherits(DurationDisplay, _Component); - /** * Create the component's DOM element * @@ -5954,43 +5827,45 @@ var DurationDisplay = (function (_Component) { var duration = this.player_.duration(); if (duration) { var localizedText = this.localize('Duration Time'); - var formattedTime = _formatTime2['default'](duration); + var formattedTime = _utilsFormatTimeJs2['default'](duration); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; // label the duration time for screen reader users } }; return DurationDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('DurationDisplay', DurationDisplay); +_componentJs2['default'].registerComponent('DurationDisplay', DurationDisplay); exports['default'] = DurationDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],76:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],72:[function(_dereq_,module,exports){ /** * @file remaining-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the time left in the video @@ -6002,6 +5877,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var RemainingTimeDisplay = (function (_Component) { + _inherits(RemainingTimeDisplay, _Component); + function RemainingTimeDisplay(player, options) { _classCallCheck(this, RemainingTimeDisplay); @@ -6010,8 +5887,6 @@ var RemainingTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(RemainingTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -6043,7 +5918,7 @@ var RemainingTimeDisplay = (function (_Component) { RemainingTimeDisplay.prototype.updateContent = function updateContent() { if (this.player_.duration()) { var localizedText = this.localize('Remaining Time'); - var formattedTime = _formatTime2['default'](this.player_.remainingTime()); + var formattedTime = _utilsFormatTimeJs2['default'](this.player_.remainingTime()); this.contentEl_.innerHTML = '' + localizedText + ' -' + formattedTime; } @@ -6053,29 +5928,29 @@ var RemainingTimeDisplay = (function (_Component) { }; return RemainingTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); +_componentJs2['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); exports['default'] = RemainingTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],77:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],73:[function(_dereq_,module,exports){ /** * @file time-divider.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The separator between the current time and duration. @@ -6088,16 +5963,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var TimeDivider = (function (_Component) { + _inherits(TimeDivider, _Component); + function TimeDivider() { _classCallCheck(this, TimeDivider); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(TimeDivider, _Component); - /** * Create the component's DOM element * @@ -6113,43 +5986,45 @@ var TimeDivider = (function (_Component) { }; return TimeDivider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('TimeDivider', TimeDivider); +_componentJs2['default'].registerComponent('TimeDivider', TimeDivider); exports['default'] = TimeDivider; module.exports = exports['default']; -},{"../../component.js":52}],78:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],74:[function(_dereq_,module,exports){ /** * @file volume-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); + +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); // Required children -var _VolumeLevel = _dereq_('./volume-level.js'); +var _volumeLevelJs = _dereq_('./volume-level.js'); -var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); +var _volumeLevelJs2 = _interopRequireDefault(_volumeLevelJs); /** * The bar that contains the volume level and can be clicked on to adjust the level @@ -6161,6 +6036,8 @@ var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); */ var VolumeBar = (function (_Slider) { + _inherits(VolumeBar, _Slider); + function VolumeBar(player, options) { _classCallCheck(this, VolumeBar); @@ -6169,8 +6046,6 @@ var VolumeBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(VolumeBar, _Slider); - /** * Create the component's DOM element * @@ -6248,44 +6123,44 @@ var VolumeBar = (function (_Slider) { }; return VolumeBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); VolumeBar.prototype.options_ = { children: { - volumeLevel: {} + 'volumeLevel': {} }, - barName: 'volumeLevel' + 'barName': 'volumeLevel' }; VolumeBar.prototype.playerEvent = 'volumechange'; -_Component2['default'].registerComponent('VolumeBar', VolumeBar); +_componentJs2['default'].registerComponent('VolumeBar', VolumeBar); exports['default'] = VolumeBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"./volume-level.js":80}],79:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"./volume-level.js":76}],75:[function(_dereq_,module,exports){ /** * @file volume-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _VolumeBar = _dereq_('./volume-bar.js'); +var _volumeBarJs = _dereq_('./volume-bar.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _volumeBarJs2 = _interopRequireDefault(_volumeBarJs); /** * The component for controlling the volume level @@ -6297,17 +6172,19 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeControl = (function (_Component) { + _inherits(VolumeControl, _Component); + function VolumeControl(player, options) { _classCallCheck(this, VolumeControl); _Component.call(this, player, options); // hide volume controls when they're not supported by the current tech - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6315,8 +6192,6 @@ var VolumeControl = (function (_Component) { }); } - _inherits(VolumeControl, _Component); - /** * Create the component's DOM element * @@ -6331,35 +6206,35 @@ var VolumeControl = (function (_Component) { }; return VolumeControl; -})(_Component3['default']); +})(_componentJs2['default']); VolumeControl.prototype.options_ = { children: { - volumeBar: {} + 'volumeBar': {} } }; -_Component3['default'].registerComponent('VolumeControl', VolumeControl); +_componentJs2['default'].registerComponent('VolumeControl', VolumeControl); exports['default'] = VolumeControl; module.exports = exports['default']; -},{"../../component.js":52,"./volume-bar.js":78}],80:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./volume-bar.js":74}],76:[function(_dereq_,module,exports){ /** * @file volume-level.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Shows volume level @@ -6371,16 +6246,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var VolumeLevel = (function (_Component) { + _inherits(VolumeLevel, _Component); + function VolumeLevel() { _classCallCheck(this, VolumeLevel); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(VolumeLevel, _Component); - /** * Create the component's DOM element * @@ -6396,49 +6269,49 @@ var VolumeLevel = (function (_Component) { }; return VolumeLevel; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('VolumeLevel', VolumeLevel); +_componentJs2['default'].registerComponent('VolumeLevel', VolumeLevel); exports['default'] = VolumeLevel; module.exports = exports['default']; -},{"../../component.js":52}],81:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],77:[function(_dereq_,module,exports){ /** * @file volume-menu-button.js */ +'use strict'; -var _Button = _dereq_('../button.js'); +exports.__esModule = true; -var _Button2 = _interopRequireWildcard(_Button); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu = _dereq_('../menu/menu.js'); +var _buttonJs = _dereq_('../button.js'); -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var _MenuButton2 = _dereq_('../menu/menu-button.js'); +var _componentJs = _dereq_('../component.js'); -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _VolumeBar = _dereq_('./volume-control/volume-bar.js'); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); + +var _muteToggleJs = _dereq_('./mute-toggle.js'); + +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); + +var _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js'); + +var _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs); /** * Button for volume menu @@ -6450,8 +6323,10 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeMenuButton = (function (_MenuButton) { + _inherits(VolumeMenuButton, _MenuButton); + function VolumeMenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, VolumeMenuButton); @@ -6478,11 +6353,11 @@ var VolumeMenuButton = (function (_MenuButton) { this.on(player, 'loadstart', this.volumeUpdate); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6491,8 +6366,6 @@ var VolumeMenuButton = (function (_MenuButton) { this.addClass('vjs-menu-button'); } - _inherits(VolumeMenuButton, _MenuButton); - /** * Allow sub components to stack CSS class names * @@ -6519,11 +6392,11 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_, { + var menu = new _menuMenuJs2['default'](this.player_, { contentElType: 'div' }); - var vc = new _VolumeBar2['default'](this.player_, this.options_.volumeBar); + var vc = new _volumeControlVolumeBarJs2['default'](this.player_, this.options_.volumeBar); vc.on('focus', function () { menu.lockShowing(); @@ -6542,41 +6415,43 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.handleClick = function handleClick() { - _MuteToggle2['default'].prototype.handleClick.call(this); + _muteToggleJs2['default'].prototype.handleClick.call(this); _MenuButton.prototype.handleClick.call(this); }; return VolumeMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -VolumeMenuButton.prototype.volumeUpdate = _MuteToggle2['default'].prototype.update; +VolumeMenuButton.prototype.volumeUpdate = _muteToggleJs2['default'].prototype.update; VolumeMenuButton.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); +_componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); exports['default'] = VolumeMenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../menu/menu-button.js":88,"../menu/menu.js":90,"./mute-toggle.js":56,"./volume-control/volume-bar.js":78}],82:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../menu/menu-button.js":84,"../menu/menu.js":86,"./mute-toggle.js":52,"./volume-control/volume-bar.js":74}],78:[function(_dereq_,module,exports){ /** * @file error-display.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Display that an error has occurred making the video unplayable @@ -6588,6 +6463,8 @@ var Dom = _interopRequireWildcard(_import); */ var ErrorDisplay = (function (_Component) { + _inherits(ErrorDisplay, _Component); + function ErrorDisplay(player, options) { _classCallCheck(this, ErrorDisplay); @@ -6597,8 +6474,6 @@ var ErrorDisplay = (function (_Component) { this.on(player, 'error', this.update); } - _inherits(ErrorDisplay, _Component); - /** * Create the component's DOM element * @@ -6630,25 +6505,25 @@ var ErrorDisplay = (function (_Component) { }; return ErrorDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('ErrorDisplay', ErrorDisplay); +_component2['default'].registerComponent('ErrorDisplay', ErrorDisplay); exports['default'] = ErrorDisplay; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111}],83:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107}],79:[function(_dereq_,module,exports){ /** * @file event-target.js */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +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; } } + +var _utilsEventsJs = _dereq_('./utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); var EventTarget = function EventTarget() {}; @@ -6695,16 +6570,16 @@ EventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger; exports['default'] = EventTarget; module.exports = exports['default']; -},{"./utils/events.js":112}],84:[function(_dereq_,module,exports){ +},{"./utils/events.js":108}],80:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./utils/log'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _utilsLog = _dereq_('./utils/log'); + +var _utilsLog2 = _interopRequireDefault(_utilsLog); /* * @file extends.js @@ -6751,7 +6626,7 @@ var _inherits = function _inherits(subClass, superClass) { * ``` */ var extendsFn = function extendsFn(superClass) { - var subClassMethods = arguments[1] === undefined ? {} : arguments[1]; + var subClassMethods = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var subClass = function subClass() { superClass.apply(this, arguments); @@ -6760,7 +6635,7 @@ var extendsFn = function extendsFn(superClass) { if (typeof subClassMethods === 'object') { if (typeof subClassMethods.init === 'function') { - _log2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); + _utilsLog2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); subClassMethods.constructor = subClassMethods.init; } if (subClassMethods.constructor !== Object.prototype.constructor) { @@ -6786,19 +6661,19 @@ var extendsFn = function extendsFn(superClass) { exports['default'] = extendsFn; module.exports = exports['default']; -},{"./utils/log":116}],85:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./utils/log":112}],81:[function(_dereq_,module,exports){ /** * @file fullscreen-api.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * Store the browser-specific methods for the fullscreen API @@ -6827,7 +6702,7 @@ var browserApi = undefined; // determine the supported set of functions for (var i = 0; i < apiMap.length; i++) { // check for exitFullscreen function - if (apiMap[i][1] in _document2['default']) { + if (apiMap[i][1] in _globalDocument2['default']) { browserApi = apiMap[i]; break; } @@ -6843,23 +6718,23 @@ if (browserApi) { exports['default'] = FullscreenApi; module.exports = exports['default']; -},{"global/document":1}],86:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"global/document":1}],82:[function(_dereq_,module,exports){ /** * @file loading-spinner.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); /* Loading Spinner ================================================================================ */ @@ -6871,16 +6746,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var LoadingSpinner = (function (_Component) { + _inherits(LoadingSpinner, _Component); + function LoadingSpinner() { _classCallCheck(this, LoadingSpinner); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LoadingSpinner, _Component); - /** * Create the component's DOM element * @@ -6894,42 +6767,32 @@ var LoadingSpinner = (function (_Component) { }; return LoadingSpinner; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LoadingSpinner', LoadingSpinner); +_component2['default'].registerComponent('LoadingSpinner', LoadingSpinner); exports['default'] = LoadingSpinner; module.exports = exports['default']; -},{"./component":52}],87:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48}],83:[function(_dereq_,module,exports){ /** * @file media-error.js */ +'use strict'; -var _assign = _dereq_('object.assign'); +exports.__esModule = true; -var _assign2 = _interopRequireWildcard(_assign); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /* * Custom MediaError to mimic the HTML5 MediaError * * @param {Number} code The media error code */ -var MediaError = (function (_MediaError) { - function MediaError(_x) { - return _MediaError.apply(this, arguments); - } - - MediaError.toString = function () { - return _MediaError.toString(); - }; - - return MediaError; -})(function (code) { +var MediaError = function MediaError(code) { if (typeof code === 'number') { this.code = code; } else if (typeof code === 'string') { @@ -6937,13 +6800,13 @@ var MediaError = (function (_MediaError) { this.message = code; } else if (typeof code === 'object') { // object - _assign2['default'](this, code); + _objectAssign2['default'](this, code); } if (!this.message) { this.message = MediaError.defaultMessages[this.code] || ''; } -}); +}; /* * The error code that refers two one of the defined @@ -7001,43 +6864,45 @@ for (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) { exports['default'] = MediaError; module.exports = exports['default']; -},{"object.assign":44}],88:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"object.assign":40}],84:[function(_dereq_,module,exports){ /** * @file menu-button.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Menu = _dereq_('./menu.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs = _dereq_('../button.js'); -var _import = _dereq_('../utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import); +var _componentJs = _dereq_('../component.js'); -var _import2 = _dereq_('../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import2); +var _menuJs = _dereq_('./menu.js'); -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _menuJs2 = _interopRequireDefault(_menuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * A button class with a popup menu @@ -7049,8 +6914,10 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MenuButton = (function (_Button) { + _inherits(MenuButton, _Button); + function MenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, MenuButton); @@ -7063,8 +6930,6 @@ var MenuButton = (function (_Button) { this.el_.setAttribute('role', 'button'); } - _inherits(MenuButton, _Button); - /** * Update menu * @@ -7104,18 +6969,18 @@ var MenuButton = (function (_Button) { */ MenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_); + var menu = new _menuJs2['default'](this.player_); // Add a title list item to the top if (this.options_.title) { menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.options_.title), + innerHTML: _utilsToTitleCaseJs2['default'](this.options_.title), tabIndex: -1 })); } - this.items = this.createItems(); + this.items = this['createItems'](); if (this.items) { // Add menu items to the menu @@ -7232,11 +7097,11 @@ var MenuButton = (function (_Button) { event.preventDefault(); // Check for escape (27) key } else if (event.which === 27) { - if (this.buttonPressed_) { - this.unpressButton(); + if (this.buttonPressed_) { + this.unpressButton(); + } + event.preventDefault(); } - event.preventDefault(); - } }; /** @@ -7267,37 +7132,37 @@ var MenuButton = (function (_Button) { }; return MenuButton; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuButton', MenuButton); +_componentJs2['default'].registerComponent('MenuButton', MenuButton); exports['default'] = MenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/to-title-case.js":120,"./menu.js":90}],89:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/to-title-case.js":116,"./menu.js":86}],85:[function(_dereq_,module,exports){ /** * @file menu-item.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _assign = _dereq_('object.assign'); +var _buttonJs = _dereq_('../button.js'); -var _assign2 = _interopRequireWildcard(_assign); +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The component for a menu item. `
  • ` @@ -7309,15 +7174,15 @@ var _assign2 = _interopRequireWildcard(_assign); */ var MenuItem = (function (_Button) { + _inherits(MenuItem, _Button); + function MenuItem(player, options) { _classCallCheck(this, MenuItem); _Button.call(this, player, options); - this.selected(options.selected); + this.selected(options['selected']); } - _inherits(MenuItem, _Button); - /** * Create the component's DOM element * @@ -7328,9 +7193,9 @@ var MenuItem = (function (_Button) { */ MenuItem.prototype.createEl = function createEl(type, props) { - return _Button.prototype.createEl.call(this, 'li', _assign2['default']({ + return _Button.prototype.createEl.call(this, 'li', _objectAssign2['default']({ className: 'vjs-menu-item', - innerHTML: this.localize(this.options_.label) + innerHTML: this.localize(this.options_['label']) }, props)); }; @@ -7351,62 +7216,54 @@ var MenuItem = (function (_Button) { * @method selected */ - MenuItem.prototype.selected = (function (_selected) { - function selected(_x) { - return _selected.apply(this, arguments); - } - - selected.toString = function () { - return _selected.toString(); - }; - - return selected; - })(function (selected) { - if (selected) { + MenuItem.prototype.selected = function selected(_selected) { + if (_selected) { this.addClass('vjs-selected'); this.el_.setAttribute('aria-selected', true); } else { this.removeClass('vjs-selected'); this.el_.setAttribute('aria-selected', false); } - }); + }; return MenuItem; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuItem', MenuItem); +_componentJs2['default'].registerComponent('MenuItem', MenuItem); exports['default'] = MenuItem; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"object.assign":44}],90:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"object.assign":40}],86:[function(_dereq_,module,exports){ /** * @file menu.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('../component.js'); -var _import3 = _dereq_('../utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsEventsJs = _dereq_('../utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); /** * The Menu component is used to build pop up menus, including subtitle and @@ -7417,16 +7274,14 @@ var Events = _interopRequireWildcard(_import3); */ var Menu = (function (_Component) { + _inherits(Menu, _Component); + function Menu() { _classCallCheck(this, Menu); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Menu, _Component); - /** * Add a menu item to the menu * @@ -7470,138 +7325,140 @@ var Menu = (function (_Component) { }; return Menu; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Menu', Menu); +_componentJs2['default'].registerComponent('Menu', Menu); exports['default'] = Menu; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"../utils/events.js":112,"../utils/fn.js":113}],91:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"../utils/events.js":108,"../utils/fn.js":109}],87:[function(_dereq_,module,exports){ /** * @file player.js */ // Subclasses Component +'use strict'; -var _Component2 = _dereq_('./component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window = _dereq_('global/window'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('./component.js'); -var _import = _dereq_('./utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/dom.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var Dom = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/fn.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Fn = _interopRequireWildcard(_import3); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _import4 = _dereq_('./utils/guid.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var Guid = _interopRequireWildcard(_import4); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import5 = _dereq_('./utils/browser.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var browser = _interopRequireWildcard(_import5); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _bufferedPercent2 = _dereq_('./utils/buffer.js'); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import6 = _dereq_('./utils/stylesheet.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var stylesheet = _interopRequireWildcard(_import6); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); -var _FullscreenApi = _dereq_('./fullscreen-api.js'); +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); -var _FullscreenApi2 = _interopRequireWildcard(_FullscreenApi); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _MediaError = _dereq_('./media-error.js'); +var _utilsBufferJs = _dereq_('./utils/buffer.js'); -var _MediaError2 = _interopRequireWildcard(_MediaError); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _fullscreenApiJs = _dereq_('./fullscreen-api.js'); -var _assign = _dereq_('object.assign'); +var _fullscreenApiJs2 = _interopRequireDefault(_fullscreenApiJs); -var _assign2 = _interopRequireWildcard(_assign); +var _mediaErrorJs = _dereq_('./media-error.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); -var _textTrackConverter = _dereq_('./tracks/text-track-list-converter.js'); +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); -var _textTrackConverter2 = _interopRequireWildcard(_textTrackConverter); +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _tracksTextTrackListConverterJs = _dereq_('./tracks/text-track-list-converter.js'); + +var _tracksTextTrackListConverterJs2 = _interopRequireDefault(_tracksTextTrackListConverterJs); // Include required child components (importing also registers them) -var _MediaLoader = _dereq_('./tech/loader.js'); +var _techLoaderJs = _dereq_('./tech/loader.js'); -var _MediaLoader2 = _interopRequireWildcard(_MediaLoader); +var _techLoaderJs2 = _interopRequireDefault(_techLoaderJs); -var _PosterImage = _dereq_('./poster-image.js'); +var _posterImageJs = _dereq_('./poster-image.js'); -var _PosterImage2 = _interopRequireWildcard(_PosterImage); +var _posterImageJs2 = _interopRequireDefault(_posterImageJs); -var _TextTrackDisplay = _dereq_('./tracks/text-track-display.js'); +var _tracksTextTrackDisplayJs = _dereq_('./tracks/text-track-display.js'); -var _TextTrackDisplay2 = _interopRequireWildcard(_TextTrackDisplay); +var _tracksTextTrackDisplayJs2 = _interopRequireDefault(_tracksTextTrackDisplayJs); -var _LoadingSpinner = _dereq_('./loading-spinner.js'); +var _loadingSpinnerJs = _dereq_('./loading-spinner.js'); -var _LoadingSpinner2 = _interopRequireWildcard(_LoadingSpinner); +var _loadingSpinnerJs2 = _interopRequireDefault(_loadingSpinnerJs); -var _BigPlayButton = _dereq_('./big-play-button.js'); +var _bigPlayButtonJs = _dereq_('./big-play-button.js'); -var _BigPlayButton2 = _interopRequireWildcard(_BigPlayButton); +var _bigPlayButtonJs2 = _interopRequireDefault(_bigPlayButtonJs); -var _ControlBar = _dereq_('./control-bar/control-bar.js'); +var _controlBarControlBarJs = _dereq_('./control-bar/control-bar.js'); -var _ControlBar2 = _interopRequireWildcard(_ControlBar); +var _controlBarControlBarJs2 = _interopRequireDefault(_controlBarControlBarJs); -var _ErrorDisplay = _dereq_('./error-display.js'); +var _errorDisplayJs = _dereq_('./error-display.js'); -var _ErrorDisplay2 = _interopRequireWildcard(_ErrorDisplay); +var _errorDisplayJs2 = _interopRequireDefault(_errorDisplayJs); -var _TextTrackSettings = _dereq_('./tracks/text-track-settings.js'); +var _tracksTextTrackSettingsJs = _dereq_('./tracks/text-track-settings.js'); -var _TextTrackSettings2 = _interopRequireWildcard(_TextTrackSettings); +var _tracksTextTrackSettingsJs2 = _interopRequireDefault(_tracksTextTrackSettingsJs); // Require html5 tech, at least for disposing the original video tag -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); /** * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video. @@ -7624,6 +7481,7 @@ var _Html52 = _interopRequireWildcard(_Html5); */ var Player = (function (_Component) { + _inherits(Player, _Component); /** * player's constructor function @@ -7648,7 +7506,7 @@ var Player = (function (_Component) { // which overrides globally set options. // This latter part coincides with the load order // (tag must exist before Player) - options = _assign2['default'](Player.getTagSettings(tag), options); + options = _objectAssign2['default'](Player.getTagSettings(tag), options); // Delay the initialization of children because we need to set up // player properties first, and can't use `this` before `super()` @@ -7721,7 +7579,7 @@ var Player = (function (_Component) { // as well so they don't need to reach back into the player for options later. // We also need to do another copy of this.options_ so we don't end up with // an infinite loop. - var playerOptionsCopy = _mergeOptions2['default'](this.options_); + var playerOptionsCopy = _utilsMergeOptionsJs2['default'](this.options_); // Load plugins if (options.plugins) { @@ -7729,11 +7587,10 @@ var Player = (function (_Component) { var plugins = options.plugins; Object.getOwnPropertyNames(plugins).forEach(function (name) { - plugins[name].playerOptions = playerOptionsCopy; if (typeof this[name] === 'function') { this[name](plugins[name]); } else { - _log2['default'].error('Unable to find plugin:', name); + _utilsLogJs2['default'].error('Unable to find plugin:', name); } }, _this); })(); @@ -7781,7 +7638,11 @@ var Player = (function (_Component) { this.on('stageclick', this.handleStageClick); } - _inherits(Player, _Component); + /* + * Global player list + * + * @type {Object} + */ /** * Destroys the video player and does any necessary cleanup @@ -7863,8 +7724,8 @@ var Player = (function (_Component) { // of the player in a way that's still overrideable by CSS, just like the // video element this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions'); - var defaultsStyleEl = _document2['default'].querySelector('.vjs-styles-defaults'); - var head = _document2['default'].querySelector('head'); + var defaultsStyleEl = _globalDocument2['default'].querySelector('.vjs-styles-defaults'); + var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild); // Pass in the width/height/aspectRatio options which will update the style el @@ -7921,18 +7782,8 @@ var Player = (function (_Component) { * @method dimension */ - Player.prototype.dimension = (function (_dimension) { - function dimension(_x, _x2) { - return _dimension.apply(this, arguments); - } - - dimension.toString = function () { - return _dimension.toString(); - }; - - return dimension; - })(function (dimension, value) { - var privDimension = dimension + '_'; + Player.prototype.dimension = function dimension(_dimension, value) { + var privDimension = _dimension + '_'; if (value === undefined) { return this[privDimension] || 0; @@ -7945,7 +7796,7 @@ var Player = (function (_Component) { var parsedVal = parseFloat(value); if (isNaN(parsedVal)) { - _log2['default'].error('Improper value "' + value + '" supplied for for ' + dimension); + _utilsLogJs2['default'].error('Improper value "' + value + '" supplied for for ' + _dimension); return this; } @@ -7954,7 +7805,7 @@ var Player = (function (_Component) { this.updateStyleEl_(); return this; - }); + }; /** * Add/remove the vjs-fluid class @@ -8076,7 +7927,7 @@ var Player = (function (_Component) { // get rid of the HTML5 video tag as soon as we are using another tech if (techName !== 'Html5' && this.tag) { - _Component3['default'].getComponent('Html5').disposeMediaElement(this.tag); + _componentJs2['default'].getComponent('Html5').disposeMediaElement(this.tag); this.tag.player = null; this.tag = null; } @@ -8091,17 +7942,18 @@ var Player = (function (_Component) { }); // Grab tech-specific options from player options and add source and parent element to use. - var techOptions = _assign2['default']({ - source: source, - playerId: this.id(), - techId: '' + this.id() + '_' + techName + '_api', - textTracks: this.textTracks_, - autoplay: this.options_.autoplay, - preload: this.options_.preload, - loop: this.options_.loop, - muted: this.options_.muted, - poster: this.poster(), - language: this.language(), + var techOptions = _objectAssign2['default']({ + 'nativeControlsForTouch': this.options_.nativeControlsForTouch, + 'source': source, + 'playerId': this.id(), + 'techId': this.id() + '_' + techName + '_api', + 'textTracks': this.textTracks_, + 'autoplay': this.options_.autoplay, + 'preload': this.options_.preload, + 'loop': this.options_.loop, + 'muted': this.options_.muted, + 'poster': this.poster(), + 'language': this.language(), 'vtt.js': this.options_['vtt.js'] }, this.options_[techName.toLowerCase()]); @@ -8119,13 +7971,12 @@ var Player = (function (_Component) { } // Initialize tech instance - var techComponent = _Component3['default'].getComponent(techName); + var techComponent = _componentJs2['default'].getComponent(techName); this.tech = new techComponent(techOptions); - _textTrackConverter2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); + _tracksTextTrackListConverterJs2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); this.on(this.tech, 'ready', this.handleTechReady); - this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls); // Listen to every HTML5 events and trigger them back on the player for the plugins this.on(this.tech, 'loadstart', this.handleTechLoadStart); @@ -8155,6 +8006,8 @@ var Player = (function (_Component) { this.on(this.tech, 'texttrackchange', this.onTextTrackChange); this.on(this.tech, 'loadedmetadata', this.updateStyleEl_); + this.usingNativeControls(this.techGet('controls')); + if (this.controls() && !this.usingNativeControls()) { this.addTechControlsListeners(); } @@ -8184,7 +8037,7 @@ var Player = (function (_Component) { Player.prototype.unloadTech = function unloadTech() { // Save the current text tracks so that we can reuse the same text tracks with the next tech this.textTracks_ = this.textTracks(); - this.textTracksJson_ = _textTrackConverter2['default'].textTracksToJson(this); + this.textTracksJson_ = _tracksTextTrackListConverterJs2['default'].textTracksToJson(this); this.isReady_ = false; @@ -8200,6 +8053,9 @@ var Player = (function (_Component) { */ Player.prototype.addTechControlsListeners = function addTechControlsListeners() { + // Make sure to remove all the previous listeners in case we are called multiple times. + this.removeTechControlsListeners(); + // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do // trigger mousedown/up. // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object @@ -8260,17 +8116,6 @@ var Player = (function (_Component) { } }; - /** - * Fired when the native controls are used - * - * @private - * @method handleTechUseNativeControls - */ - - Player.prototype.handleTechUseNativeControls = function handleTechUseNativeControls() { - this.usingNativeControls(true); - }; - /** * Fired when the user agent begins looking for media data * @@ -8306,22 +8151,12 @@ var Player = (function (_Component) { * @method hasStarted */ - Player.prototype.hasStarted = (function (_hasStarted) { - function hasStarted(_x3) { - return _hasStarted.apply(this, arguments); - } - - hasStarted.toString = function () { - return _hasStarted.toString(); - }; - - return hasStarted; - })(function (hasStarted) { - if (hasStarted !== undefined) { + Player.prototype.hasStarted = function hasStarted(_hasStarted) { + if (_hasStarted !== undefined) { // only update if this is a new value - if (this.hasStarted_ !== hasStarted) { - this.hasStarted_ = hasStarted; - if (hasStarted) { + if (this.hasStarted_ !== _hasStarted) { + this.hasStarted_ = _hasStarted; + if (_hasStarted) { this.addClass('vjs-has-started'); // trigger the firstplay event if this newly has played this.trigger('firstplay'); @@ -8332,7 +8167,7 @@ var Player = (function (_Component) { return this; } return !!this.hasStarted_; - }); + }; /** * Fired whenever the media begins or resumes playback @@ -8507,9 +8342,9 @@ var Player = (function (_Component) { Player.prototype.handleTechClick = function handleTechClick(event) { // We're using mousedown to detect clicks thanks to Flash, but mousedown // will also be triggered with right-clicks, so we need to prevent that - if (event.button !== 0) { - return; - } // When controls are disabled a click should not toggle playback because + if (event.button !== 0) return; + + // When controls are disabled a click should not toggle playback because // the click is considered a control if (this.controls()) { if (this.paused()) { @@ -8636,7 +8471,8 @@ var Player = (function (_Component) { */ Player.prototype.handleTechError = function handleTechError() { - this.error(this.tech.error().code); + var error = this.tech.error(); + this.error(error && error.code); }; /** @@ -8767,13 +8603,13 @@ var Player = (function (_Component) { // Otherwise call method now } else { - try { - this.tech[method](arg); - } catch (e) { - _log2['default'](e); - throw e; + try { + this.tech[method](arg); + } catch (e) { + _utilsLogJs2['default'](e); + throw e; + } } - } }; /** @@ -8795,14 +8631,14 @@ var Player = (function (_Component) { } catch (e) { // When building additional tech libs, an expected method may not be defined yet if (this.tech[method] === undefined) { - _log2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); } else { // When a method isn't available on the object it throws a TypeError if (e.name === 'TypeError') { - _log2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); this.tech.isReady_ = false; } else { - _log2['default'](e); + _utilsLogJs2['default'](e); } } throw e; @@ -8984,25 +8820,15 @@ var Player = (function (_Component) { * @method buffered */ - Player.prototype.buffered = (function (_buffered) { - function buffered() { - return _buffered.apply(this, arguments); - } - - buffered.toString = function () { - return _buffered.toString(); - }; - - return buffered; - })(function () { + Player.prototype.buffered = function buffered() { var buffered = this.techGet('buffered'); if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _utilsTimeRangesJs.createTimeRange(0, 0); } return buffered; - }); + }; /** * Get the percent (as a decimal) of the video that's been downloaded @@ -9016,19 +8842,9 @@ var Player = (function (_Component) { * @method bufferedPercent */ - Player.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration()); - }); + Player.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration()); + }; /** * Get the ending time of the last buffered time range @@ -9097,23 +8913,13 @@ var Player = (function (_Component) { * @method muted */ - Player.prototype.muted = (function (_muted) { - function muted(_x4) { - return _muted.apply(this, arguments); - } - - muted.toString = function () { - return _muted.toString(); - }; - - return muted; - })(function (muted) { - if (muted !== undefined) { - this.techCall('setMuted', muted); + Player.prototype.muted = function muted(_muted) { + if (_muted !== undefined) { + this.techCall('setMuted', _muted); return this; } return this.techGet('muted') || false; // Default to false - }); + }; // Check if current tech can support native fullscreen // (e.g. with built in controls like iOS, so not our flash swf) @@ -9171,7 +8977,7 @@ var Player = (function (_Component) { */ Player.prototype.requestFullscreen = function requestFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(true); @@ -9184,12 +8990,12 @@ var Player = (function (_Component) { // when canceling fullscreen. Otherwise if there's multiple // players on a page, they would all be reacting to the same fullscreen // events - Events.on(_document2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { - this.isFullscreen(_document2['default'][fsApi.fullscreenElement]); + Events.on(_globalDocument2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { + this.isFullscreen(_globalDocument2['default'][fsApi.fullscreenElement]); // If cancelling fullscreen, remove event listener. if (this.isFullscreen() === false) { - Events.off(_document2['default'], fsApi.fullscreenchange, documentFullscreenChange); + Events.off(_globalDocument2['default'], fsApi.fullscreenchange, documentFullscreenChange); } this.trigger('fullscreenchange'); @@ -9221,12 +9027,12 @@ var Player = (function (_Component) { */ Player.prototype.exitFullscreen = function exitFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(false); // Check for browser element fullscreen support if (fsApi.requestFullscreen) { - _document2['default'][fsApi.exitFullscreen](); + _globalDocument2['default'][fsApi.exitFullscreen](); } else if (this.tech.supportsFullScreen()) { this.techCall('exitFullScreen'); } else { @@ -9247,16 +9053,16 @@ var Player = (function (_Component) { this.isFullWindow = true; // Storing original doc overflow value to return to when fullscreen is off - this.docOrigOverflow = _document2['default'].documentElement.style.overflow; + this.docOrigOverflow = _globalDocument2['default'].documentElement.style.overflow; // Add listener for esc key to exit fullscreen - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); // Hide any scroll bars - _document2['default'].documentElement.style.overflow = 'hidden'; + _globalDocument2['default'].documentElement.style.overflow = 'hidden'; // Apply fullscreen styles - Dom.addElClass(_document2['default'].body, 'vjs-full-window'); + Dom.addElClass(_globalDocument2['default'].body, 'vjs-full-window'); this.trigger('enterFullWindow'); }; @@ -9286,13 +9092,13 @@ var Player = (function (_Component) { Player.prototype.exitFullWindow = function exitFullWindow() { this.isFullWindow = false; - Events.off(_document2['default'], 'keydown', this.fullWindowOnEscKey); + Events.off(_globalDocument2['default'], 'keydown', this.fullWindowOnEscKey); // Unhide scroll bars. - _document2['default'].documentElement.style.overflow = this.docOrigOverflow; + _globalDocument2['default'].documentElement.style.overflow = this.docOrigOverflow; // Remove fullscreen styles - Dom.removeElClass(_document2['default'].body, 'vjs-full-window'); + Dom.removeElClass(_globalDocument2['default'].body, 'vjs-full-window'); // Resize the box, controller, and poster to original sizes // this.positionAll(); @@ -9310,12 +9116,12 @@ var Player = (function (_Component) { Player.prototype.selectSource = function selectSource(sources) { // Loop through each playback technology in the options order for (var i = 0, j = this.options_.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _componentJs2['default'].getComponent(techName); // Check if the current tech is defined before continuing if (!tech) { - _log2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); + _utilsLogJs2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); continue; } @@ -9374,7 +9180,7 @@ var Player = (function (_Component) { return this.techGet('src'); } - var currentTech = _Component3['default'].getComponent(this.techName); + var currentTech = _componentJs2['default'].getComponent(this.techName); // case: Array of source objects to choose from and pick the best to play if (Array.isArray(source)) { @@ -9382,46 +9188,46 @@ var Player = (function (_Component) { // case: URL String (http://myvideo...) } else if (typeof source === 'string') { - // create a source object from the string - this.src({ src: source }); + // create a source object from the string + this.src({ src: source }); - // case: Source object { src: '', type: '' ... } - } else if (source instanceof Object) { - // check if the source has a type and the loaded tech cannot play the source - // if there's no type we'll just try the current tech - if (source.type && !currentTech.canPlaySource(source)) { - // create a source list with the current source and send through - // the tech loop to check for a compatible technology - this.sourceList_([source]); - } else { - this.cache_.src = source.src; - this.currentType_ = source.type || ''; - - // wait until the tech is ready to set the source - this.ready(function () { - - // The setSource tech method was added with source handlers - // so older techs won't support it - // We need to check the direct prototype for the case where subclasses - // of the tech do not support source handlers - if (currentTech.prototype.hasOwnProperty('setSource')) { - this.techCall('setSource', source); + // case: Source object { src: '', type: '' ... } + } else if (source instanceof Object) { + // check if the source has a type and the loaded tech cannot play the source + // if there's no type we'll just try the current tech + if (source.type && !currentTech.canPlaySource(source)) { + // create a source list with the current source and send through + // the tech loop to check for a compatible technology + this.sourceList_([source]); } else { - this.techCall('src', source.src); - } + this.cache_.src = source.src; + this.currentType_ = source.type || ''; - if (this.options_.preload === 'auto') { - this.load(); - } + // wait until the tech is ready to set the source + this.ready(function () { - if (this.options_.autoplay) { - this.play(); - } + // The setSource tech method was added with source handlers + // so older techs won't support it + // We need to check the direct prototype for the case where subclasses + // of the tech do not support source handlers + if (currentTech.prototype.hasOwnProperty('setSource')) { + this.techCall('setSource', source); + } else { + this.techCall('src', source.src); + } - // Set the source synchronously if possible (#2326) - }, true); - } - } + if (this.options_.preload === 'auto') { + this.load(); + } + + if (this.options_.autoplay) { + this.play(); + } + + // Set the source synchronously if possible (#2326) + }, true); + } + } return this; }; @@ -9542,7 +9348,7 @@ var Player = (function (_Component) { Player.prototype.loop = function loop(value) { if (value !== undefined) { this.techCall('setLoop', value); - this.options_.loop = value; + this.options_['loop'] = value; return this; } return this.techGet('loop'); @@ -9701,10 +9507,10 @@ var Player = (function (_Component) { } // error instance - if (err instanceof _MediaError2['default']) { + if (err instanceof _mediaErrorJs2['default']) { this.error_ = err; } else { - this.error_ = new _MediaError2['default'](err); + this.error_ = new _mediaErrorJs2['default'](err); } // fire an error event on the player @@ -9715,7 +9521,7 @@ var Player = (function (_Component) { // log the name of the error type and any message // ie8 just logs "[object object]" if you just log the error object - _log2['default'].error('(CODE:' + this.error_.code + ' ' + _MediaError2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); + _utilsLogJs2['default'].error('(CODE:' + this.error_.code + ' ' + _mediaErrorJs2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); return this; }; @@ -9884,7 +9690,7 @@ var Player = (function (_Component) { // Clear any existing inactivity timeout to start the timer over this.clearTimeout(inactivityTimeout); - var timeout = this.options_.inactivityTimeout; + var timeout = this.options_['inactivityTimeout']; if (timeout > 0) { // In milliseconds, if no more activity has occurred the // user will be considered inactive @@ -9919,10 +9725,10 @@ var Player = (function (_Component) { return this; } - if (this.tech && this.tech.featuresPlaybackRate) { + if (this.tech && this.tech['featuresPlaybackRate']) { return this.techGet('playbackRate'); } else { - return 1; + return 1.0; } }; @@ -10017,7 +9823,7 @@ var Player = (function (_Component) { Player.prototype.textTracks = function textTracks() { // cannot use techGet directly because it checks to see whether the tech is ready. // Flash is unlikely to be ready in time but textTracks should still work. - return this.tech && this.tech.textTracks(); + return this.tech && this.tech['textTracks'](); }; /** @@ -10028,7 +9834,7 @@ var Player = (function (_Component) { */ Player.prototype.remoteTextTracks = function remoteTextTracks() { - return this.tech && this.tech.remoteTextTracks(); + return this.tech && this.tech['remoteTextTracks'](); }; /** @@ -10043,7 +9849,7 @@ var Player = (function (_Component) { */ Player.prototype.addTextTrack = function addTextTrack(kind, label, language) { - return this.tech && this.tech.addTextTrack(kind, label, language); + return this.tech && this.tech['addTextTrack'](kind, label, language); }; /** @@ -10054,7 +9860,7 @@ var Player = (function (_Component) { */ Player.prototype.addRemoteTextTrack = function addRemoteTextTrack(options) { - return this.tech && this.tech.addRemoteTextTrack(options); + return this.tech && this.tech['addRemoteTextTrack'](options); }; /** @@ -10065,7 +9871,7 @@ var Player = (function (_Component) { */ Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - this.tech && this.tech.removeRemoteTextTrack(track); + this.tech && this.tech['removeRemoteTextTrack'](track); }; /** @@ -10137,7 +9943,7 @@ var Player = (function (_Component) { */ Player.prototype.languages = function languages() { - return _mergeOptions2['default'](Player.prototype.options_.languages, this.languages_); + return _utilsMergeOptionsJs2['default'](Player.prototype.options_.languages, this.languages_); }; /** @@ -10148,7 +9954,7 @@ var Player = (function (_Component) { */ Player.prototype.toJSON = function toJSON() { - var options = _mergeOptions2['default'](this.options_); + var options = _utilsMergeOptionsJs2['default'](this.options_); var tracks = options.tracks; options.tracks = []; @@ -10157,7 +9963,7 @@ var Player = (function (_Component) { var track = tracks[i]; // deep merge tracks and null out player so no circular references - track = _mergeOptions2['default'](track); + track = _utilsMergeOptionsJs2['default'](track); track.player = undefined; options.tracks[i] = track; } @@ -10176,8 +9982,8 @@ var Player = (function (_Component) { Player.getTagSettings = function getTagSettings(tag) { var baseOptions = { - sources: [], - tracks: [] + 'sources': [], + 'tracks': [] }; var tagOptions = Dom.getElAttributes(tag); @@ -10186,20 +9992,19 @@ var Player = (function (_Component) { // Check if data-setup attr exists. if (dataSetup !== null) { // Parse options JSON - // If empty string, make it a parsable json object. - var _safeParseTuple = _safeParseTuple3['default'](dataSetup || '{}'); + var _safeParseTuple = _safeJsonParseTuple2['default'](dataSetup || '{}'); var err = _safeParseTuple[0]; var data = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } - _assign2['default'](tagOptions, data); + _objectAssign2['default'](tagOptions, data); } - _assign2['default'](baseOptions, tagOptions); + _objectAssign2['default'](baseOptions, tagOptions); // Get tag children settings if (tag.hasChildNodes()) { @@ -10221,16 +10026,11 @@ var Player = (function (_Component) { }; return Player; -})(_Component3['default']); +})(_componentJs2['default']); -/* - * Global player list - * - * @type {Object} - */ Player.players = {}; -var navigator = _window2['default'].navigator; +var navigator = _globalWindow2['default'].navigator; /* * Player instance options, surfaced using options * options = Player.prototype.options_ @@ -10248,7 +10048,7 @@ Player.prototype.options_ = { flash: {}, // defaultVolume: 0.85, - defaultVolume: 0, // The freakin seaguls are driving me crazy! + defaultVolume: 0.00, // The freakin seaguls are driving me crazy! // default inactivity timeout inactivityTimeout: 2000, @@ -10270,7 +10070,7 @@ Player.prototype.options_ = { textTrackSettings: {} }, - language: _document2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', + language: _globalDocument2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', // locales and their language translations languages: {}, @@ -10338,30 +10138,31 @@ Player.prototype.handleVolumeChange; Player.prototype.handleError; Player.prototype.flexNotSupported_ = function () { - var elem = _document2['default'].createElement('i'); + var elem = _globalDocument2['default'].createElement('i'); // Note: We don't actually use flexBasis (or flexOrder), but it's one of the more // common flex features that we can rely on when checking for flex support. - return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style /* IE10-specific (2012 flex spec) */); + return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style) /* IE10-specific (2012 flex spec) */; }; -_Component3['default'].registerComponent('Player', Player); +_componentJs2['default'].registerComponent('Player', Player); exports['default'] = Player; module.exports = exports['default']; +// If empty string, make it a parsable json object. -},{"./big-play-button.js":50,"./component.js":52,"./control-bar/control-bar.js":53,"./error-display.js":82,"./fullscreen-api.js":85,"./loading-spinner.js":86,"./media-error.js":87,"./poster-image.js":93,"./tech/html5.js":98,"./tech/loader.js":99,"./tracks/text-track-display.js":102,"./tracks/text-track-list-converter.js":104,"./tracks/text-track-settings.js":106,"./utils/browser.js":108,"./utils/buffer.js":109,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/to-title-case.js":120,"global/document":1,"global/window":2,"object.assign":44,"safe-json-parse/tuple":49}],92:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./big-play-button.js":46,"./component.js":48,"./control-bar/control-bar.js":49,"./error-display.js":78,"./fullscreen-api.js":81,"./loading-spinner.js":82,"./media-error.js":83,"./poster-image.js":89,"./tech/html5.js":94,"./tech/loader.js":95,"./tracks/text-track-display.js":98,"./tracks/text-track-list-converter.js":100,"./tracks/text-track-settings.js":102,"./utils/browser.js":104,"./utils/buffer.js":105,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/to-title-case.js":116,"global/document":1,"global/window":2,"object.assign":40,"safe-json-parse/tuple":45}],88:[function(_dereq_,module,exports){ /** * @file plugins.js */ +'use strict'; -var _Player = _dereq_('./player.js'); +exports.__esModule = true; -var _Player2 = _interopRequireWildcard(_Player); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _playerJs = _dereq_('./player.js'); + +var _playerJs2 = _interopRequireDefault(_playerJs); /** * The method for registering a video.js plugin @@ -10371,45 +10172,47 @@ var _Player2 = _interopRequireWildcard(_Player); * @method plugin */ var plugin = function plugin(name, init) { - _Player2['default'].prototype[name] = init; + _playerJs2['default'].prototype[name] = init; }; exports['default'] = plugin; module.exports = exports['default']; -},{"./player.js":91}],93:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./player.js":87}],89:[function(_dereq_,module,exports){ /** * @file poster-image.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('./component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('./utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _buttonJs = _dereq_('./button.js'); -var _import2 = _dereq_('./utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('./component.js'); -var _import3 = _dereq_('./utils/browser.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var browser = _interopRequireWildcard(_import3); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsBrowserJs = _dereq_('./utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); /** * The component that handles showing the poster image. @@ -10421,6 +10224,8 @@ var browser = _interopRequireWildcard(_import3); */ var PosterImage = (function (_Button) { + _inherits(PosterImage, _Button); + function PosterImage(player, options) { _classCallCheck(this, PosterImage); @@ -10430,8 +10235,6 @@ var PosterImage = (function (_Button) { player.on('posterchange', Fn.bind(this, this.update)); } - _inherits(PosterImage, _Button); - /** * Clean up the poster image * @@ -10529,36 +10332,38 @@ var PosterImage = (function (_Button) { }; return PosterImage; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('PosterImage', PosterImage); +_componentJs2['default'].registerComponent('PosterImage', PosterImage); exports['default'] = PosterImage; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52,"./utils/browser.js":108,"./utils/dom.js":111,"./utils/fn.js":113}],94:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48,"./utils/browser.js":104,"./utils/dom.js":107,"./utils/fn.js":109}],90:[function(_dereq_,module,exports){ /** * @file setup.js * * Functions for automatically setting up a player * based on the data-setup attribute of the video tag */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _window = _dereq_('global/window'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var _windowLoaded = false; var videojs = undefined; @@ -10572,8 +10377,8 @@ var autoSetup = function autoSetup() { // Because IE8 doesn't support calling slice on a node list, we need to loop through each list of elements // to build up a new, combined list of elements. - var vids = _document2['default'].getElementsByTagName('video'); - var audios = _document2['default'].getElementsByTagName('audio'); + var vids = _globalDocument2['default'].getElementsByTagName('video'); + var audios = _globalDocument2['default'].getElementsByTagName('audio'); var mediaEls = []; if (vids && vids.length > 0) { for (var i = 0, e = vids.length; i < e; i++) { @@ -10597,7 +10402,7 @@ var autoSetup = function autoSetup() { if (mediaEl && mediaEl.getAttribute) { // Make sure this player hasn't already been set up. - if (mediaEl.player === undefined) { + if (mediaEl['player'] === undefined) { var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists. @@ -10610,15 +10415,15 @@ var autoSetup = function autoSetup() { // If getAttribute isn't defined, we need to wait for the DOM. } else { - autoSetupTimeout(1); - break; - } + autoSetupTimeout(1); + break; + } } // No videos were found, so keep looping unless page is finished loading. } else if (!_windowLoaded) { - autoSetupTimeout(1); - } + autoSetupTimeout(1); + } }; // Pause to let the DOM keep processing @@ -10627,10 +10432,10 @@ var autoSetupTimeout = function autoSetupTimeout(wait, vjs) { setTimeout(autoSetup, wait); }; -if (_document2['default'].readyState === 'complete') { +if (_globalDocument2['default'].readyState === 'complete') { _windowLoaded = true; } else { - Events.one(_window2['default'], 'load', function () { + Events.one(_globalWindow2['default'], 'load', function () { _windowLoaded = true; }); } @@ -10643,35 +10448,37 @@ exports.autoSetup = autoSetup; exports.autoSetupTimeout = autoSetupTimeout; exports.hasLoaded = hasLoaded; -},{"./utils/events.js":112,"global/document":1,"global/window":2}],95:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/events.js":108,"global/document":1,"global/window":2}],91:[function(_dereq_,module,exports){ /** * @file slider.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _document = _dereq_('global/document'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _document2 = _interopRequireWildcard(_document); +var _componentJs = _dereq_('../component.js'); -var _assign = _dereq_('object.assign'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The base functionality for sliders like the volume bar and seek bar @@ -10683,6 +10490,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Slider = (function (_Component) { + _inherits(Slider, _Component); + function Slider(player, options) { _classCallCheck(this, Slider); @@ -10704,8 +10513,6 @@ var Slider = (function (_Component) { this.on(player, this.playerEvent, this.update); } - _inherits(Slider, _Component); - /** * Create the component's DOM element * @@ -10716,12 +10523,12 @@ var Slider = (function (_Component) { */ Slider.prototype.createEl = function createEl(type) { - var props = arguments[1] === undefined ? {} : arguments[1]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add the slider element class to all sub classes props.className = props.className + ' vjs-slider'; - props = _assign2['default']({ - role: 'slider', + props = _objectAssign2['default']({ + 'role': 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, @@ -10743,10 +10550,10 @@ var Slider = (function (_Component) { Dom.blockTextSelection(); this.addClass('vjs-sliding'); - this.on(_document2['default'], 'mousemove', this.handleMouseMove); - this.on(_document2['default'], 'mouseup', this.handleMouseUp); - this.on(_document2['default'], 'touchmove', this.handleMouseMove); - this.on(_document2['default'], 'touchend', this.handleMouseUp); + this.on(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.on(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.handleMouseMove(event); }; @@ -10769,10 +10576,10 @@ var Slider = (function (_Component) { Dom.unblockTextSelection(); this.removeClass('vjs-sliding'); - this.off(_document2['default'], 'mousemove', this.handleMouseMove); - this.off(_document2['default'], 'mouseup', this.handleMouseUp); - this.off(_document2['default'], 'touchmove', this.handleMouseMove); - this.off(_document2['default'], 'touchend', this.handleMouseUp); + this.off(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.off(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.update(); }; @@ -10786,18 +10593,18 @@ var Slider = (function (_Component) { Slider.prototype.update = function update() { // In VolumeBar init we have a setTimeout for update that pops and update to the end of the // execution stack. The player is destroyed before then update will cause an error - if (!this.el_) { - return; - } // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. + if (!this.el_) return; + + // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. // On HTML5 browsers scrubbing is really smooth, but some flash players are slow, so we might want to utilize this later. // var progress = (this.player_.scrubbing()) ? this.player_.getCache().currentTime / this.player_.duration() : this.player_.currentTime() / this.player_.duration(); var progress = this.getPercent(); var bar = this.bar; // If there's no bar... - if (!bar) { - return; - } // Protect against no duration and other division issues + if (!bar) return; + + // Protect against no duration and other division issues if (typeof progress !== 'number' || progress !== progress || progress < 0 || progress === Infinity) { progress = 0; } @@ -10860,7 +10667,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleFocus = function handleFocus() { - this.on(_document2['default'], 'keydown', this.handleKeyPress); + this.on(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10889,7 +10696,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleBlur = function handleBlur() { - this.off(_document2['default'], 'keydown', this.handleKeyPress); + this.off(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10930,19 +10737,19 @@ var Slider = (function (_Component) { }; return Slider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Slider', Slider); +_componentJs2['default'].registerComponent('Slider', Slider); exports['default'] = Slider; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"global/document":1,"object.assign":44}],96:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"global/document":1,"object.assign":40}],92:[function(_dereq_,module,exports){ /** * @file flash-rtmp.js */ +'use strict'; + +exports.__esModule = true; function FlashRtmpDecorator(Flash) { Flash.streamingFormats = { 'rtmp/mp4': 'MP4', @@ -11023,8 +10830,8 @@ function FlashRtmpDecorator(Flash) { Flash.rtmpSourceHandler.handleSource = function (source, tech) { var srcParts = Flash.streamToParts(source.src); - tech.setRtmpConnection(srcParts.connection); - tech.setRtmpStream(srcParts.stream); + tech['setRtmpConnection'](srcParts.connection); + tech['setRtmpStream'](srcParts.stream); }; // Register the native source handler @@ -11036,16 +10843,7 @@ function FlashRtmpDecorator(Flash) { exports['default'] = FlashRtmpDecorator; module.exports = exports['default']; -},{}],97:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],93:[function(_dereq_,module,exports){ /** * @file flash.js * VideoJS-SWF - Custom Flash Player with HTML5-ish API @@ -11053,37 +10851,49 @@ exports.__esModule = true; * Not using setupTriggers. Using global onEvent func to distribute events */ -var _Tech2 = _dereq_('./tech'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _import = _dereq_('../utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('../utils/url.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Url = _interopRequireWildcard(_import2); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tech = _dereq_('./tech'); -var _FlashRtmpDecorator = _dereq_('./flash-rtmp'); +var _tech2 = _interopRequireDefault(_tech); -var _FlashRtmpDecorator2 = _interopRequireWildcard(_FlashRtmpDecorator); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _Component = _dereq_('../component'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var _window = _dereq_('global/window'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); -var _assign = _dereq_('object.assign'); +var _flashRtmp = _dereq_('./flash-rtmp'); -var _assign2 = _interopRequireWildcard(_assign); +var _flashRtmp2 = _interopRequireDefault(_flashRtmp); -var navigator = _window2['default'].navigator; +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var navigator = _globalWindow2['default'].navigator; /** * Flash Media Controller - Wrapper for fallback SWF API * @@ -11094,6 +10904,8 @@ var navigator = _window2['default'].navigator; */ var Flash = (function (_Tech) { + _inherits(Flash, _Tech); + function Flash(options, ready) { _classCallCheck(this, Flash); @@ -11120,18 +10932,18 @@ var Flash = (function (_Tech) { // A 4.x workflow we weren't able to solve for in 5.0 // because of the need to hard code these functions // into the swf for security reasons - _window2['default'].videojs = _window2['default'].videojs || {}; - _window2['default'].videojs.Flash = _window2['default'].videojs.Flash || {}; - _window2['default'].videojs.Flash.onReady = Flash.onReady; - _window2['default'].videojs.Flash.onEvent = Flash.onEvent; - _window2['default'].videojs.Flash.onError = Flash.onError; + _globalWindow2['default'].videojs = _globalWindow2['default'].videojs || {}; + _globalWindow2['default'].videojs.Flash = _globalWindow2['default'].videojs.Flash || {}; + _globalWindow2['default'].videojs.Flash.onReady = Flash.onReady; + _globalWindow2['default'].videojs.Flash.onEvent = Flash.onEvent; + _globalWindow2['default'].videojs.Flash.onError = Flash.onError; this.on('seeked', function () { this.lastSeekTarget_ = undefined; }); } - _inherits(Flash, _Tech); + // Create setters and getters for attributes /** * Create the component's DOM element @@ -11147,31 +10959,31 @@ var Flash = (function (_Tech) { var objId = options.techId; // Merge default flashvars with ones passed in to init - var flashVars = _assign2['default']({ + var flashVars = _objectAssign2['default']({ // SWF Callback Functions - readyFunction: 'videojs.Flash.onReady', - eventProxyFunction: 'videojs.Flash.onEvent', - errorEventProxyFunction: 'videojs.Flash.onError', + 'readyFunction': 'videojs.Flash.onReady', + 'eventProxyFunction': 'videojs.Flash.onEvent', + 'errorEventProxyFunction': 'videojs.Flash.onError', // Player Settings - autoplay: options.autoplay, - preload: options.preload, - loop: options.loop, - muted: options.muted + 'autoplay': options.autoplay, + 'preload': options.preload, + 'loop': options.loop, + 'muted': options.muted }, options.flashVars); // Merge default parames with ones passed in - var params = _assign2['default']({ - wmode: 'opaque', // Opaque is needed to overlay controls, but can affect playback performance - bgcolor: '#000000' // Using bgcolor prevents a white flash when the object is loading + var params = _objectAssign2['default']({ + 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance + 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading }, options.params); // Merge default attributes with ones passed in - var attributes = _assign2['default']({ - id: objId, - name: objId, // Both ID and Name needed or swf to identify itself + var attributes = _objectAssign2['default']({ + 'id': objId, + 'name': objId, // Both ID and Name needed or swf to identify itself 'class': 'vjs-tech' }, options.attributes); @@ -11188,6 +11000,9 @@ var Flash = (function (_Tech) { */ Flash.prototype.play = function play() { + if (this.ended()) { + this.setCurrentTime(0); + } this.el_.vjs_play(); }; @@ -11209,24 +11024,14 @@ var Flash = (function (_Tech) { * @method src */ - Flash.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Flash.prototype.src = function src(_src) { + if (_src === undefined) { return this.currentSrc(); } // Setting src through `src` not `setSrc` will be deprecated - return this.setSrc(src); - }); + return this.setSrc(_src); + }; /** * Set video @@ -11350,9 +11155,9 @@ var Flash = (function (_Tech) { Flash.prototype.seekable = function seekable() { var duration = this.duration(); if (duration === 0) { - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); } - return _createTimeRange.createTimeRange(0, duration); + return _utilsTimeRangesJs.createTimeRange(0, duration); }; /** @@ -11363,7 +11168,11 @@ var Flash = (function (_Tech) { */ Flash.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, this.el_.vjs_getProperty('buffered')); + var ranges = this.el_.vjs_getProperty('buffered'); + if (ranges.length === 0) { + return _utilsTimeRangesJs.createTimeRange(); + } + return _utilsTimeRangesJs.createTimeRange(ranges[0][0], ranges[0][1]); }; /** @@ -11393,12 +11202,11 @@ var Flash = (function (_Tech) { }; return Flash; -})(_Tech3['default']); +})(_tech2['default']); -// Create setters and getters for attributes var _api = Flash.prototype; var _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(','); -var _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); +var _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); function _createSetter(attr) { var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1); @@ -11431,7 +11239,7 @@ Flash.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Flash); +_tech2['default'].withSourceHandlers(Flash); /* * The default native source handler. @@ -11528,7 +11336,7 @@ Flash.checkReady = function (tech) { } else { // wait longer this.setTimeout(function () { - Flash.checkReady(tech); + Flash['checkReady'](tech); }, 50); } }; @@ -11542,15 +11350,14 @@ Flash.onEvent = function (swfID, eventName) { // Log errors from the swf Flash.onError = function (swfID, err) { var tech = Dom.getEl(swfID).tech; - var msg = 'FLASH: ' + err; + // trigger MEDIA_ERR_SRC_NOT_SUPPORTED if (err === 'srcnotfound') { - tech.trigger('error', { code: 4, message: msg }); - - // errors we haven't categorized into the media errors - } else { - tech.trigger('error', msg); + return tech.error(4); } + + // trigger a custom error + tech.error('FLASH: ' + err); }; // Flash Version Check @@ -11559,7 +11366,7 @@ Flash.version = function () { // IE try { - version = new _window2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; + version = new _globalWindow2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; // other browsers } catch (e) { @@ -11591,16 +11398,16 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { // Convert flash vars to string if (flashVars) { Object.getOwnPropertyNames(flashVars).forEach(function (key) { - flashVarsString += '' + key + '=' + flashVars[key] + '&'; + flashVarsString += key + '=' + flashVars[key] + '&'; }); } // Add swf, flashVars, and other default params - params = _assign2['default']({ - movie: swf, - flashvars: flashVarsString, - allowScriptAccess: 'always', // Required to talk to swf - allowNetworking: 'all' // All should be default, but having security issues. + params = _objectAssign2['default']({ + 'movie': swf, + 'flashvars': flashVarsString, + 'allowScriptAccess': 'always', // Required to talk to swf + 'allowNetworking': 'all' // All should be default, but having security issues. }, params); // Create param tags string @@ -11608,89 +11415,92 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { paramsString += ''; }); - attributes = _assign2['default']({ + attributes = _objectAssign2['default']({ // Add swf to attributes (need both for IE and Others to work) - data: swf, + 'data': swf, // Default to 100% width/height - width: '100%', - height: '100%' + 'width': '100%', + 'height': '100%' }, attributes); // Create Attributes string Object.getOwnPropertyNames(attributes).forEach(function (key) { - attrsString += '' + key + '="' + attributes[key] + '" '; + attrsString += key + '="' + attributes[key] + '" '; }); - return '' + objTag + '' + attrsString + '>' + paramsString + ''; + return '' + objTag + attrsString + '>' + paramsString + ''; }; // Run Flash through the RTMP decorator -_FlashRtmpDecorator2['default'](Flash); +_flashRtmp2['default'](Flash); -_Component2['default'].registerComponent('Flash', Flash); +_component2['default'].registerComponent('Flash', Flash); exports['default'] = Flash; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111,"../utils/time-ranges.js":119,"../utils/url.js":121,"./flash-rtmp":96,"./tech":100,"global/window":2,"object.assign":44}],98:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107,"../utils/time-ranges.js":115,"../utils/url.js":117,"./flash-rtmp":92,"./tech":96,"global/window":2,"object.assign":40}],94:[function(_dereq_,module,exports){ /** * @file html5.js * HTML5 Media Controller - Wrapper for HTML5 Media API */ -var _Tech2 = _dereq_('./tech.js'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _Component = _dereq_('../component'); +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; } } -var _Component2 = _interopRequireWildcard(_Component); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import = _dereq_('../utils/dom.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Dom = _interopRequireWildcard(_import); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import2 = _dereq_('../utils/url.js'); +var _techJs = _dereq_('./tech.js'); -var Url = _interopRequireWildcard(_import2); +var _techJs2 = _interopRequireDefault(_techJs); -var _import3 = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import3); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _log2 = _interopRequireWildcard(_log); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _import4 = _dereq_('../utils/browser.js'); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var browser = _interopRequireWildcard(_import4); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _document = _dereq_('global/document'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document2 = _interopRequireWildcard(_document); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window = _dereq_('global/window'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _assign = _dereq_('object.assign'); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _assign2 = _interopRequireWildcard(_assign); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _mergeOptions = _dereq_('../utils/merge-options.js'); +var _globalDocument = _dereq_('global/document'); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('../utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * HTML5 Media Controller - Wrapper for HTML5 Media API @@ -11702,6 +11512,8 @@ var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); */ var Html5 = (function (_Tech) { + _inherits(Html5, _Tech); + function Html5(options, ready) { _classCallCheck(this, Html5); @@ -11755,14 +11567,22 @@ var Html5 = (function (_Tech) { // Our goal should be to get the custom controls on mobile solid everywhere // so we can remove this all together. Right now this will block custom // controls on touch enabled laptops like the Chrome Pixel - if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true) { - this.trigger('usenativecontrols'); + if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true || browser.IS_IPHONE || browser.IS_NATIVE_ANDROID) { + this.setControls(true); } this.triggerReady(); } - _inherits(Html5, _Tech); + /* HTML5 Support Testing ---------------------------------------------------- */ + + /* + * Element for testing browser HTML5 video capabilities + * + * @type {Element} + * @constant + * @private + */ /** * Dispose of html5 media element @@ -11805,7 +11625,7 @@ var Html5 = (function (_Tech) { // Check if this browser supports moving the element into the box. // On the iPhone video will break if you move the element, // So we have to create a brand new element. - if (!el || this.movingMediaElementInDOM === false) { + if (!el || this['movingMediaElementInDOM'] === false) { // If the original tag is still there, clone and remove it. if (el) { @@ -11814,16 +11634,16 @@ var Html5 = (function (_Tech) { Html5.disposeMediaElement(el); el = clone; } else { - el = _document2['default'].createElement('video'); + el = _globalDocument2['default'].createElement('video'); // determine if native controls should be used var tagAttributes = this.options_.tag && Dom.getElAttributes(this.options_.tag); - var attributes = _mergeOptions2['default']({}, tagAttributes); + var attributes = _utilsMergeOptionsJs2['default']({}, tagAttributes); if (!browser.TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) { delete attributes.controls; } - Dom.setElAttributes(el, _assign2['default'](attributes, { + Dom.setElAttributes(el, _objectAssign2['default'](attributes, { id: this.options_.techId, 'class': 'vjs-tech' })); @@ -11926,7 +11746,7 @@ var Html5 = (function (_Tech) { try { this.el_.currentTime = seconds; } catch (e) { - _log2['default'](e, 'Video is not ready. (Video.js)'); + _utilsLogJs2['default'](e, 'Video is not ready. (Video.js)'); // this.warning(VideoJS.warnings.videoNotReady); } }; @@ -12030,7 +11850,7 @@ var Html5 = (function (_Tech) { Html5.prototype.supportsFullScreen = function supportsFullScreen() { if (typeof this.el_.webkitEnterFullScreen === 'function') { - var userAgent = _window2['default'].navigator.userAgent; + var userAgent = _globalWindow2['default'].navigator.userAgent; // Seems to be broken in Chromium/Chrome && Safari in Leopard if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) { return true; @@ -12092,24 +11912,14 @@ var Html5 = (function (_Tech) { * @method src */ - Html5.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Html5.prototype.src = function src(_src) { + if (_src === undefined) { return this.el_.src; } else { // Setting src through `src` instead of `setSrc` will be deprecated - this.setSrc(src); + this.setSrc(_src); } - }); + }; /** * Set video @@ -12426,7 +12236,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addTextTrack = function addTextTrack(kind, label, language) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addTextTrack.call(this, kind, label, language); } @@ -12443,31 +12253,31 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addRemoteTextTrack = function addRemoteTextTrack() { - var options = arguments[0] === undefined ? {} : arguments[0]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addRemoteTextTrack.call(this, options); } - var track = _document2['default'].createElement('track'); + var track = _globalDocument2['default'].createElement('track'); - if (options.kind) { - track.kind = options.kind; + if (options['kind']) { + track['kind'] = options['kind']; } - if (options.label) { - track.label = options.label; + if (options['label']) { + track['label'] = options['label']; } - if (options.language || options.srclang) { - track.srclang = options.language || options.srclang; + if (options['language'] || options['srclang']) { + track['srclang'] = options['language'] || options['srclang']; } if (options['default']) { track['default'] = options['default']; } - if (options.id) { - track.id = options.id; + if (options['id']) { + track['id'] = options['id']; } - if (options.src) { - track.src = options.src; + if (options['src']) { + track['src'] = options['src']; } this.el().appendChild(track); @@ -12485,7 +12295,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.removeRemoteTextTrack.call(this, track); } @@ -12504,19 +12314,10 @@ var Html5 = (function (_Tech) { }; return Html5; -})(_Tech3['default']); +})(_techJs2['default']); -/* HTML5 Support Testing ---------------------------------------------------- */ - -/* -* Element for testing browser HTML5 video capabilities -* -* @type {Element} -* @constant -* @private -*/ -Html5.TEST_VID = _document2['default'].createElement('video'); -var track = _document2['default'].createElement('track'); +Html5.TEST_VID = _globalDocument2['default'].createElement('video'); +var track = _globalDocument2['default'].createElement('track'); track.kind = 'captions'; track.srclang = 'en'; track.label = 'English'; @@ -12530,7 +12331,7 @@ Html5.TEST_VID.appendChild(track); Html5.isSupported = function () { // IE9 with no Media Player is a LIAR! (#984) try { - Html5.TEST_VID.volume = 0.5; + Html5.TEST_VID['volume'] = 0.5; } catch (e) { return false; } @@ -12539,7 +12340,7 @@ Html5.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Html5); +_techJs2['default'].withSourceHandlers(Html5); /* * The default native source handler. @@ -12642,7 +12443,7 @@ Html5.supportsNativeTextTracks = function () { // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862 supportsTextTracks = !!Html5.TEST_VID.textTracks; if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) { - supportsTextTracks = typeof Html5.TEST_VID.textTracks[0].mode !== 'number'; + supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number'; } if (supportsTextTracks && browser.IS_FIREFOX) { supportsTextTracks = false; @@ -12667,14 +12468,14 @@ Html5.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', * * @type {Boolean} */ -Html5.prototype.featuresVolumeControl = Html5.canControlVolume(); +Html5.prototype['featuresVolumeControl'] = Html5.canControlVolume(); /* * Set the tech's playbackRate support status * * @type {Boolean} */ -Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); +Html5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate(); /* * Set the tech's status on moving the video element. @@ -12682,27 +12483,27 @@ Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); * * @type {Boolean} */ -Html5.prototype.movingMediaElementInDOM = !browser.IS_IOS; +Html5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS; /* * Set the the tech's fullscreen resize support status. * HTML video is able to automatically resize when going to fullscreen. * (No longer appears to be used. Can probably be removed.) */ -Html5.prototype.featuresFullscreenResize = true; +Html5.prototype['featuresFullscreenResize'] = true; /* * Set the tech's progress event support status * (this disables the manual progress events of the Tech) */ -Html5.prototype.featuresProgressEvents = true; +Html5.prototype['featuresProgressEvents'] = true; /* * Sets the tech's status on native text track support * * @type {Boolean} */ -Html5.prototype.featuresNativeTextTracks = Html5.supportsNativeTextTracks(); +Html5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks(); // HTML5 Feature detection and Device Fixes --------------------------------- // var canPlayType = undefined; @@ -12711,7 +12512,7 @@ var mp4RE = /^video\/mp4/i; Html5.patchCanPlayType = function () { // Android 4.0 and above can play HLS to some extent but it reports being unable to do so - if (browser.ANDROID_VERSION >= 4) { + if (browser.ANDROID_VERSION >= 4.0) { if (!canPlayType) { canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; } @@ -12774,42 +12575,42 @@ Html5.disposeMediaElement = function (el) { (function () { try { el.load(); - } catch (e) {} + } catch (e) { + // not supported + } })(); } }; -_Component2['default'].registerComponent('Html5', Html5); +_component2['default'].registerComponent('Html5', Html5); exports['default'] = Html5; module.exports = exports['default']; -// not supported - -},{"../component":52,"../utils/browser.js":108,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/log.js":116,"../utils/merge-options.js":117,"../utils/url.js":121,"./tech.js":100,"global/document":1,"global/window":2,"object.assign":44}],99:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/browser.js":104,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/log.js":112,"../utils/merge-options.js":113,"../utils/url.js":117,"./tech.js":96,"global/document":1,"global/window":2,"object.assign":40}],95:[function(_dereq_,module,exports){ /** * @file loader.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window2 = _interopRequireWildcard(_window); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _component = _dereq_('../component'); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * The Media Loader is the component that decides which playback technology to load @@ -12823,6 +12624,8 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MediaLoader = (function (_Component) { + _inherits(MediaLoader, _Component); + function MediaLoader(player, options, ready) { _classCallCheck(this, MediaLoader); @@ -12831,10 +12634,10 @@ var MediaLoader = (function (_Component) { // If there are no sources when the player is initialized, // load the first supported playback technology. - if (!options.playerOptions.sources || options.playerOptions.sources.length === 0) { - for (var i = 0, j = options.playerOptions.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) { + for (var i = 0, j = options.playerOptions['techOrder']; i < j.length; i++) { + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _component2['default'].getComponent(techName); // Check if the browser supports this technology if (tech && tech.isSupported()) { @@ -12847,66 +12650,71 @@ var MediaLoader = (function (_Component) { // // Then load the best source. // // A few assumptions here: // // All playback technologies respect preload false. - player.src(options.playerOptions.sources); + player.src(options.playerOptions['sources']); } } - _inherits(MediaLoader, _Component); - return MediaLoader; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('MediaLoader', MediaLoader); +_component2['default'].registerComponent('MediaLoader', MediaLoader); exports['default'] = MediaLoader; module.exports = exports['default']; -},{"../component":52,"../utils/to-title-case.js":120,"global/window":2}],100:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/to-title-case.js":116,"global/window":2}],96:[function(_dereq_,module,exports){ /** * @file tech.js * Media Technology Controller - Base class for media playback * technology controllers like Flash and HTML5 */ -var _Component2 = _dereq_('../component'); +'use strict'; -var _Component3 = _interopRequireWildcard(_Component2); +exports.__esModule = true; -var _TextTrack = _dereq_('../tracks/text-track'); +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; } } -var _TextTrack2 = _interopRequireWildcard(_TextTrack); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _TextTrackList = _dereq_('../tracks/text-track-list'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackList2 = _interopRequireWildcard(_TextTrackList); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _tracksTextTrack = _dereq_('../tracks/text-track'); -var _log2 = _interopRequireWildcard(_log); +var _tracksTextTrack2 = _interopRequireDefault(_tracksTextTrack); -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tracksTextTrackList = _dereq_('../tracks/text-track-list'); -var _bufferedPercent2 = _dereq_('../utils/buffer.js'); +var _tracksTextTrackList2 = _interopRequireDefault(_tracksTextTrackList); -var _window = _dereq_('global/window'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window2 = _interopRequireWildcard(_window); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document = _dereq_('global/document'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document2 = _interopRequireWildcard(_document); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); + +var _utilsBufferJs = _dereq_('../utils/buffer.js'); + +var _mediaErrorJs = _dereq_('../media-error.js'); + +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Base class for media (HTML5 Video, Flash) controllers @@ -12918,9 +12726,11 @@ var _document2 = _interopRequireWildcard(_document); */ var Tech = (function (_Component) { + _inherits(Tech, _Component); + function Tech() { - var options = arguments[0] === undefined ? {} : arguments[0]; - var ready = arguments[1] === undefined ? function () {} : arguments[1]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var ready = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1]; _classCallCheck(this, Tech); @@ -12967,7 +12777,12 @@ var Tech = (function (_Component) { this.emitTapEvents(); } - _inherits(Tech, _Component); + /* + * List of associated text tracks + * + * @type {Array} + * @private + */ /** * Set up click and touch listeners for the playback element @@ -13078,7 +12893,7 @@ var Tech = (function (_Component) { */ Tech.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); }; /** @@ -13088,19 +12903,9 @@ var Tech = (function (_Component) { * @method bufferedPercent */ - Tech.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration_); - }); + Tech.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration_); + }; /** * Stops tracking progress by clearing progress interval @@ -13176,10 +12981,13 @@ var Tech = (function (_Component) { Tech.prototype.dispose = function dispose() { // clear out text tracks because we can't reuse them between techs - var tt = this.textTracks(); - var i = tt.length; - while (i--) { - this.removeRemoteTextTrack(tt[i]); + var textTracks = this.textTracks(); + + if (textTracks) { + var i = textTracks.length; + while (i--) { + this.removeRemoteTextTrack(textTracks[i]); + } } // Turn off any manual progress or timeupdate tracking @@ -13194,6 +13002,28 @@ var Tech = (function (_Component) { _Component.prototype.dispose.call(this); }; + /** + * When invoked without an argument, returns a MediaError object + * representing the current error state of the player or null if + * there is no error. When invoked with an argument, set the current + * error state of the player. + * @param {MediaError=} err Optional an error object + * @return {MediaError} the current error object or null + * @method error + */ + + Tech.prototype.error = function error(err) { + if (err !== undefined) { + if (err instanceof _mediaErrorJs2['default']) { + this.error_ = err; + } else { + this.error_ = new _mediaErrorJs2['default'](err); + } + this.trigger('error'); + } + return this.error_; + }; + /** * Return the time ranges that have been played through for the * current source. This implementation is incomplete. It does not @@ -13206,9 +13036,9 @@ var Tech = (function (_Component) { Tech.prototype.played = function played() { if (this.hasStarted_) { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); } - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); }; /** @@ -13237,9 +13067,9 @@ var Tech = (function (_Component) { var tracks = this.textTracks(); - if (!tracks) { - return; - }tracks.addEventListener('removetrack', textTrackListChanges); + if (!tracks) return; + + tracks.addEventListener('removetrack', textTrackListChanges); tracks.addEventListener('addtrack', textTrackListChanges); this.on('dispose', Fn.bind(this, function () { @@ -13255,11 +13085,11 @@ var Tech = (function (_Component) { */ Tech.prototype.emulateTextTracks = function emulateTextTracks() { - if (!_window2['default'].WebVTT && this.el().parentNode != null) { - var script = _document2['default'].createElement('script'); + if (!_globalWindow2['default']['WebVTT'] && this.el().parentNode != null) { + var script = _globalDocument2['default'].createElement('script'); script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js'; this.el().parentNode.appendChild(script); - _window2['default'].WebVTT = true; + _globalWindow2['default']['WebVTT'] = true; } var tracks = this.textTracks(); @@ -13306,7 +13136,7 @@ var Tech = (function (_Component) { */ Tech.prototype.textTracks = function textTracks() { - this.textTracks_ = this.textTracks_ || new _TextTrackList2['default'](); + this.textTracks_ = this.textTracks_ || new _tracksTextTrackList2['default'](); return this.textTracks_; }; @@ -13318,7 +13148,7 @@ var Tech = (function (_Component) { */ Tech.prototype.remoteTextTracks = function remoteTextTracks() { - this.remoteTextTracks_ = this.remoteTextTracks_ || new _TextTrackList2['default'](); + this.remoteTextTracks_ = this.remoteTextTracks_ || new _tracksTextTrackList2['default'](); return this.remoteTextTracks_; }; @@ -13381,18 +13211,12 @@ var Tech = (function (_Component) { Tech.prototype.setPoster = function setPoster() {}; return Tech; -})(_Component3['default']); +})(_component2['default']); -/* - * List of associated text tracks - * - * @type {Array} - * @private - */ Tech.prototype.textTracks_; var createTrackHelper = function createTrackHelper(self, kind, label, language) { - var options = arguments[4] === undefined ? {} : arguments[4]; + var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4]; var tracks = self.textTracks(); @@ -13406,7 +13230,7 @@ var createTrackHelper = function createTrackHelper(self, kind, label, language) } options.tech = self; - var track = new _TextTrack2['default'](options); + var track = new _tracksTextTrack2['default'](options); tracks.addTrack_(track); return track; @@ -13521,7 +13345,7 @@ Tech.withSourceHandlers = function (_Tech) { if (_Tech.nativeSourceHandler) { sh = _Tech.nativeSourceHandler; } else { - _log2['default'].error('No source hander found for the current source.'); + _utilsLogJs2['default'].error('No source hander found for the current source.'); } } @@ -13546,29 +13370,31 @@ Tech.withSourceHandlers = function (_Tech) { }; }; -_Component3['default'].registerComponent('Tech', Tech); +_component2['default'].registerComponent('Tech', Tech); // Old name for Tech -_Component3['default'].registerComponent('MediaTechController', Tech); +_component2['default'].registerComponent('MediaTechController', Tech); exports['default'] = Tech; module.exports = exports['default']; -},{"../component":52,"../tracks/text-track":107,"../tracks/text-track-list":105,"../utils/buffer.js":109,"../utils/fn.js":113,"../utils/log.js":116,"../utils/time-ranges.js":119,"global/document":1,"global/window":2}],101:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../media-error.js":83,"../tracks/text-track":103,"../tracks/text-track-list":101,"../utils/buffer.js":105,"../utils/fn.js":109,"../utils/log.js":112,"../utils/time-ranges.js":115,"global/document":1,"global/window":2}],97:[function(_dereq_,module,exports){ /** * @file text-track-cue-list.js */ +'use strict'; -var _import = _dereq_('../utils/browser.js'); +exports.__esModule = true; -var browser = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist @@ -13580,21 +13406,11 @@ var _document2 = _interopRequireWildcard(_document); * }; */ -var TextTrackCueList = (function (_TextTrackCueList) { - function TextTrackCueList(_x) { - return _TextTrackCueList.apply(this, arguments); - } - - TextTrackCueList.toString = function () { - return _TextTrackCueList.toString(); - }; - - return TextTrackCueList; -})(function (cues) { +var TextTrackCueList = function TextTrackCueList(cues) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackCueList.prototype) { list[prop] = TextTrackCueList.prototype[prop]; @@ -13612,7 +13428,7 @@ var TextTrackCueList = (function (_TextTrackCueList) { if (browser.IS_IE8) { return list; } -}); +}; TextTrackCueList.prototype.setCues_ = function (cues) { var oldLength = this.length || 0; @@ -13657,47 +13473,49 @@ TextTrackCueList.prototype.getCueById = function (id) { exports['default'] = TextTrackCueList; module.exports = exports['default']; -},{"../utils/browser.js":108,"global/document":1}],102:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../utils/browser.js":104,"global/document":1}],98:[function(_dereq_,module,exports){ /** * @file text-track-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _Menu = _dereq_('../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _MenuItem = _dereq_('../menu/menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _MenuItem2 = _interopRequireWildcard(_MenuItem); +var _component = _dereq_('../component'); -var _MenuButton = _dereq_('../menu/menu-button.js'); +var _component2 = _interopRequireDefault(_component); -var _MenuButton2 = _interopRequireWildcard(_MenuButton); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _import = _dereq_('../utils/fn.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../menu/menu-item.js'); -var _document = _dereq_('global/document'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _document2 = _interopRequireWildcard(_document); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _window = _dereq_('global/window'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var darkGray = '#222'; var lightGray = '#ccc'; @@ -13725,6 +13543,8 @@ var fontMap = { */ var TextTrackDisplay = (function (_Component) { + _inherits(TextTrackDisplay, _Component); + function TextTrackDisplay(player, options, ready) { _classCallCheck(this, TextTrackDisplay); @@ -13738,14 +13558,14 @@ var TextTrackDisplay = (function (_Component) { // Should probably be moved to an external track loader when we support // tracks that don't need a display. player.ready(Fn.bind(this, function () { - if (player.tech && player.tech.featuresNativeTextTracks) { + if (player.tech && player.tech['featuresNativeTextTracks']) { this.hide(); return; } player.on('fullscreenchange', Fn.bind(this, this.updateDisplay)); - var tracks = this.options_.playerOptions.tracks || []; + var tracks = this.options_.playerOptions['tracks'] || []; for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; this.player_.addRemoteTextTrack(track); @@ -13753,7 +13573,14 @@ var TextTrackDisplay = (function (_Component) { })); } - _inherits(TextTrackDisplay, _Component); + /** + * Add cue HTML to display + * + * @param {Number} color Hex number for color, like #f0e + * @param {Number} opacity Value for opacity,0.0 - 1.0 + * @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' + * @method constructColor + */ /** * Toggle display texttracks @@ -13762,7 +13589,7 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.toggleDisplay = function toggleDisplay() { - if (this.player_.tech && this.player_.tech.featuresNativeTextTracks) { + if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) { this.hide(); } else { this.show(); @@ -13789,8 +13616,8 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.clearDisplay = function clearDisplay() { - if (typeof _window2['default'].WebVTT === 'function') { - _window2['default'].WebVTT.processCues(_window2['default'], [], this.el_); + if (typeof _globalWindow2['default']['WebVTT'] === 'function') { + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], [], this.el_); } }; @@ -13811,7 +13638,7 @@ var TextTrackDisplay = (function (_Component) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.mode === 'showing') { + if (track['mode'] === 'showing') { this.updateForTrack(track); } } @@ -13825,18 +13652,18 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.updateForTrack = function updateForTrack(track) { - if (typeof _window2['default'].WebVTT !== 'function' || !track.activeCues) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function' || !track['activeCues']) { return; } - var overrides = this.player_.textTrackSettings.getValues(); + var overrides = this.player_['textTrackSettings'].getValues(); var cues = []; - for (var _i = 0; _i < track.activeCues.length; _i++) { - cues.push(track.activeCues[_i]); + for (var _i = 0; _i < track['activeCues'].length; _i++) { + cues.push(track['activeCues'][_i]); } - _window2['default'].WebVTT.processCues(_window2['default'], track.activeCues, this.el_); + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], track['activeCues'], this.el_); var i = cues.length; while (i--) { @@ -13872,7 +13699,7 @@ var TextTrackDisplay = (function (_Component) { } } if (overrides.fontPercent && overrides.fontPercent !== 1) { - var fontSize = _window2['default'].parseFloat(cueDiv.style.fontSize); + var fontSize = _globalWindow2['default'].parseFloat(cueDiv.style.fontSize); cueDiv.style.fontSize = fontSize * overrides.fontPercent + 'px'; cueDiv.style.height = 'auto'; cueDiv.style.top = 'auto'; @@ -13889,16 +13716,8 @@ var TextTrackDisplay = (function (_Component) { }; return TextTrackDisplay; -})(_Component3['default']); +})(_component2['default']); -/** -* Add cue HTML to display -* -* @param {Number} color Hex number for color, like #f0e -* @param {Number} opacity Value for opacity,0.0 - 1.0 -* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' -* @method constructColor -*/ function constructColor(color, opacity) { return 'rgba(' + // color looks like "#f0e" @@ -13921,14 +13740,11 @@ function tryUpdateStyle(el, style, rule) { } catch (e) {} } -_Component3['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); +_component2['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); exports['default'] = TextTrackDisplay; module.exports = exports['default']; -},{"../component":52,"../menu/menu-button.js":88,"../menu/menu-item.js":89,"../menu/menu.js":90,"../utils/fn.js":113,"global/document":1,"global/window":2}],103:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component":48,"../menu/menu-button.js":84,"../menu/menu-item.js":85,"../menu/menu.js":86,"../utils/fn.js":109,"global/document":1,"global/window":2}],99:[function(_dereq_,module,exports){ /** * @file text-track-enums.js * @@ -13936,10 +13752,13 @@ exports.__esModule = true; * * enum TextTrackMode { "disabled", "hidden", "showing" }; */ +'use strict'; + +exports.__esModule = true; var TextTrackMode = { - disabled: 'disabled', - hidden: 'hidden', - showing: 'showing' + 'disabled': 'disabled', + 'hidden': 'hidden', + 'showing': 'showing' }; /* @@ -13948,20 +13767,17 @@ var TextTrackMode = { * enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; */ var TextTrackKind = { - subtitles: 'subtitles', - captions: 'captions', - descriptions: 'descriptions', - chapters: 'chapters', - metadata: 'metadata' + 'subtitles': 'subtitles', + 'captions': 'captions', + 'descriptions': 'descriptions', + 'chapters': 'chapters', + 'metadata': 'metadata' }; exports.TextTrackMode = TextTrackMode; exports.TextTrackKind = TextTrackKind; -},{}],104:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{}],100:[function(_dereq_,module,exports){ /** * Utilities for capturing text track state and re-creating tracks * based on a capture. @@ -13976,6 +13792,9 @@ exports.__esModule = true; * @return {Object} a serializable javascript representation of the * @private */ +'use strict'; + +exports.__esModule = true; var trackToJson_ = function trackToJson_(track) { return { kind: track.kind, @@ -14045,31 +13864,33 @@ var jsonToTextTracks = function jsonToTextTracks(json, tech) { exports['default'] = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ }; module.exports = exports['default']; -},{}],105:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],101:[function(_dereq_,module,exports){ /** * @file text-track-list.js */ +'use strict'; -var _EventTarget = _dereq_('../event-target'); +exports.__esModule = true; -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _eventTarget = _dereq_('../event-target'); -var _import2 = _dereq_('../utils/browser.js'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var browser = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document = _dereq_('global/document'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist @@ -14084,21 +13905,11 @@ var _document2 = _interopRequireWildcard(_document); * attribute EventHandler onremovetrack; * }; */ -var TextTrackList = (function (_TextTrackList) { - function TextTrackList(_x) { - return _TextTrackList.apply(this, arguments); - } - - TextTrackList.toString = function () { - return _TextTrackList.toString(); - }; - - return TextTrackList; -})(function (tracks) { +var TextTrackList = function TextTrackList(tracks) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackList.prototype) { list[prop] = TextTrackList.prototype[prop]; @@ -14121,9 +13932,9 @@ var TextTrackList = (function (_TextTrackList) { if (browser.IS_IE8) { return list; } -}); +}; -TextTrackList.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrackList.prototype = Object.create(_eventTarget2['default'].prototype); TextTrackList.prototype.constructor = TextTrackList; /* @@ -14132,9 +13943,9 @@ TextTrackList.prototype.constructor = TextTrackList; * removetrack - A track has been removed from the track list. */ TextTrackList.prototype.allowedEvents_ = { - change: 'change', - addtrack: 'addtrack', - removetrack: 'removetrack' + 'change': 'change', + 'addtrack': 'addtrack', + 'removetrack': 'removetrack' }; // emulate attribute EventHandler support to allow for feature detection @@ -14198,43 +14009,45 @@ TextTrackList.prototype.getTrackById = function (id) { exports['default'] = TextTrackList; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"global/document":1}],106:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"global/document":1}],102:[function(_dereq_,module,exports){ /** * @file text-track-settings.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/events.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Events = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _component = _dereq_('../component'); -var _log = _dereq_('../utils/log.js'); +var _component2 = _interopRequireDefault(_component); -var _log2 = _interopRequireWildcard(_log); +var _utilsEventsJs = _dereq_('../utils/events.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window = _dereq_('global/window'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs = _dereq_('../utils/log.js'); + +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); + +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Manipulate settings of texttracks @@ -14246,6 +14059,8 @@ var _window2 = _interopRequireWildcard(_window); */ var TextTrackSettings = (function (_Component) { + _inherits(TextTrackSettings, _Component); + function TextTrackSettings(player, options) { _classCallCheck(this, TextTrackSettings); @@ -14290,8 +14105,6 @@ var TextTrackSettings = (function (_Component) { } } - _inherits(TextTrackSettings, _Component); - /** * Create the component's DOM element * @@ -14333,21 +14146,21 @@ var TextTrackSettings = (function (_Component) { var bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select')); var windowColor = getSelectedOptionValue(el.querySelector('.window-color > select')); var windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select')); - var fontPercent = _window2['default'].parseFloat(getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); + var fontPercent = _globalWindow2['default']['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); var result = { - backgroundOpacity: bgOpacity, - textOpacity: textOpacity, - windowOpacity: windowOpacity, - edgeStyle: textEdge, - fontFamily: fontFamily, - color: fgColor, - backgroundColor: bgColor, - windowColor: windowColor, - fontPercent: fontPercent + 'backgroundOpacity': bgOpacity, + 'textOpacity': textOpacity, + 'windowOpacity': windowOpacity, + 'edgeStyle': textEdge, + 'fontFamily': fontFamily, + 'color': fgColor, + 'backgroundColor': bgColor, + 'windowColor': windowColor, + 'fontPercent': fontPercent }; for (var _name in result) { - if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1) { + if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1.00) { delete result[_name]; } } @@ -14398,13 +14211,13 @@ var TextTrackSettings = (function (_Component) { */ TextTrackSettings.prototype.restoreSettings = function restoreSettings() { - var _safeParseTuple = _safeParseTuple3['default'](_window2['default'].localStorage.getItem('vjs-text-track-settings')); + var _safeParseTuple = _safeJsonParseTuple2['default'](_globalWindow2['default'].localStorage.getItem('vjs-text-track-settings')); var err = _safeParseTuple[0]; var values = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } if (values) { @@ -14426,9 +14239,9 @@ var TextTrackSettings = (function (_Component) { var values = this.getValues(); try { if (Object.getOwnPropertyNames(values).length > 0) { - _window2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); + _globalWindow2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); } else { - _window2['default'].localStorage.removeItem('vjs-text-track-settings'); + _globalWindow2['default'].localStorage.removeItem('vjs-text-track-settings'); } } catch (e) {} }; @@ -14447,9 +14260,9 @@ var TextTrackSettings = (function (_Component) { }; return TextTrackSettings; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('TextTrackSettings', TextTrackSettings); +_component2['default'].registerComponent('TextTrackSettings', TextTrackSettings); function getSelectedOptionValue(target) { var selectedOption = undefined; @@ -14488,55 +14301,57 @@ function captionOptionsMenuTemplate() { exports['default'] = TextTrackSettings; module.exports = exports['default']; -},{"../component":52,"../utils/events.js":112,"../utils/fn.js":113,"../utils/log.js":116,"global/window":2,"safe-json-parse/tuple":49}],107:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../utils/events.js":108,"../utils/fn.js":109,"../utils/log.js":112,"global/window":2,"safe-json-parse/tuple":45}],103:[function(_dereq_,module,exports){ /** * @file text-track.js */ +'use strict'; -var _TextTrackCueList = _dereq_('./text-track-cue-list'); +exports.__esModule = true; -var _TextTrackCueList2 = _interopRequireWildcard(_TextTrackCueList); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _textTrackCueList = _dereq_('./text-track-cue-list'); -var _import2 = _dereq_('../utils/guid.js'); +var _textTrackCueList2 = _interopRequireDefault(_textTrackCueList); -var Guid = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _import3 = _dereq_('../utils/browser.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var browser = _interopRequireWildcard(_import3); +var _utilsGuidJs = _dereq_('../utils/guid.js'); -var _import4 = _dereq_('./text-track-enums'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var TextTrackEnum = _interopRequireWildcard(_import4); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _log = _dereq_('../utils/log.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _log2 = _interopRequireWildcard(_log); +var _textTrackEnums = _dereq_('./text-track-enums'); -var _EventTarget = _dereq_('../event-target'); +var TextTrackEnum = _interopRequireWildcard(_textTrackEnums); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document = _dereq_('global/document'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _document2 = _interopRequireWildcard(_document); +var _eventTarget = _dereq_('../event-target'); -var _window = _dereq_('global/window'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); -var _XHR = _dereq_('../xhr.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var _XHR2 = _interopRequireWildcard(_XHR); +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _xhrJs = _dereq_('../xhr.js'); + +var _xhrJs2 = _interopRequireDefault(_xhrJs); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack @@ -14560,18 +14375,8 @@ var _XHR2 = _interopRequireWildcard(_XHR); * attribute EventHandler oncuechange; * }; */ -var TextTrack = (function (_TextTrack) { - function TextTrack() { - return _TextTrack.apply(this, arguments); - } - - TextTrack.toString = function () { - return _TextTrack.toString(); - }; - - return TextTrack; -})(function () { - var options = arguments[0] === undefined ? {} : arguments[0]; +var TextTrack = function TextTrack() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; if (!options.tech) { throw new Error('A tech was not provided.'); @@ -14579,7 +14384,7 @@ var TextTrack = (function (_TextTrack) { var tt = this; if (browser.IS_IE8) { - tt = _document2['default'].createElement('custom'); + tt = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrack.prototype) { tt[prop] = TextTrack.prototype[prop]; @@ -14588,11 +14393,11 @@ var TextTrack = (function (_TextTrack) { tt.tech_ = options.tech; - var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled'; - var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles'; - var label = options.label || ''; - var language = options.language || options.srclang || ''; - var id = options.id || 'vjs_text_track_' + Guid.newGUID(); + var mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled'; + var kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles'; + var label = options['label'] || ''; + var language = options['language'] || options['srclang'] || ''; + var id = options['id'] || 'vjs_text_track_' + Guid.newGUID(); if (kind === 'metadata' || kind === 'chapters') { mode = 'hidden'; @@ -14601,14 +14406,14 @@ var TextTrack = (function (_TextTrack) { tt.cues_ = []; tt.activeCues_ = []; - var cues = new _TextTrackCueList2['default'](tt.cues_); - var activeCues = new _TextTrackCueList2['default'](tt.activeCues_); + var cues = new _textTrackCueList2['default'](tt.cues_); + var activeCues = new _textTrackCueList2['default'](tt.activeCues_); var changed = false; var timeupdateHandler = Fn.bind(tt, function () { - this.activeCues; + this['activeCues']; if (changed) { - this.trigger('cuechange'); + this['trigger']('cuechange'); changed = false; } }); @@ -14677,18 +14482,18 @@ var TextTrack = (function (_TextTrack) { return null; } - if (this.cues.length === 0) { + if (this['cues'].length === 0) { return activeCues; // nothing to do } var ct = this.tech_.currentTime(); var active = []; - for (var i = 0, l = this.cues.length; i < l; i++) { - var cue = this.cues[i]; - if (cue.startTime <= ct && cue.endTime >= ct) { + for (var i = 0, l = this['cues'].length; i < l; i++) { + var cue = this['cues'][i]; + if (cue['startTime'] <= ct && cue['endTime'] >= ct) { active.push(cue); - } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) { + } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) { active.push(cue); } } @@ -14723,16 +14528,16 @@ var TextTrack = (function (_TextTrack) { if (browser.IS_IE8) { return tt; } -}); +}; -TextTrack.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrack.prototype = Object.create(_eventTarget2['default'].prototype); TextTrack.prototype.constructor = TextTrack; /* * cuechange - One or more cues in the track have become active or stopped being active. */ TextTrack.prototype.allowedEvents_ = { - cuechange: 'cuechange' + 'cuechange': 'cuechange' }; TextTrack.prototype.addCue = function (cue) { @@ -14747,7 +14552,7 @@ TextTrack.prototype.addCue = function (cue) { } this.cues_.push(cue); - this.cues.setCues_(this.cues_); + this['cues'].setCues_(this.cues_); }; TextTrack.prototype.removeCue = function (removeCue) { @@ -14769,41 +14574,31 @@ TextTrack.prototype.removeCue = function (removeCue) { /* * Downloading stuff happens below this point */ -var parseCues = (function (_parseCues) { - function parseCues(_x, _x2) { - return _parseCues.apply(this, arguments); - } - - parseCues.toString = function () { - return _parseCues.toString(); - }; - - return parseCues; -})(function (srcContent, track) { - if (typeof _window2['default'].WebVTT !== 'function') { +var parseCues = function parseCues(srcContent, track) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function') { //try again a bit later - return _window2['default'].setTimeout(function () { + return _globalWindow2['default'].setTimeout(function () { parseCues(srcContent, track); }, 25); } - var parser = new _window2['default'].WebVTT.Parser(_window2['default'], _window2['default'].vttjs, _window2['default'].WebVTT.StringDecoder()); + var parser = new _globalWindow2['default']['WebVTT']['Parser'](_globalWindow2['default'], _globalWindow2['default']['vttjs'], _globalWindow2['default']['WebVTT']['StringDecoder']()); - parser.oncue = function (cue) { + parser['oncue'] = function (cue) { track.addCue(cue); }; - parser.onparsingerror = function (error) { - _log2['default'].error(error); + parser['onparsingerror'] = function (error) { + _utilsLogJs2['default'].error(error); }; - parser.parse(srcContent); - parser.flush(); -}); + parser['parse'](srcContent); + parser['flush'](); +}; var loadTrack = function loadTrack(src, track) { - _XHR2['default'](src, Fn.bind(this, function (err, response, responseBody) { + _xhrJs2['default'](src, Fn.bind(this, function (err, response, responseBody) { if (err) { - return _log2['default'].error(err); + return _utilsLogJs2['default'].error(err, response); } track.loaded_ = true; @@ -14848,25 +14643,27 @@ var indexOf = function indexOf(searchElement, fromIndex) { exports['default'] = TextTrack; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"../utils/guid.js":115,"../utils/log.js":116,"../xhr.js":123,"./text-track-cue-list":101,"./text-track-enums":103,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"../utils/guid.js":111,"../utils/log.js":112,"../xhr.js":119,"./text-track-cue-list":97,"./text-track-enums":99,"global/document":1,"global/window":2}],104:[function(_dereq_,module,exports){ /** * @file browser.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +var _globalDocument = _dereq_('global/document'); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var USER_AGENT = _window2['default'].navigator.userAgent; +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var USER_AGENT = _globalWindow2['default'].navigator.userAgent; +var webkitVersionMap = /AppleWebKit\/([\d.]+)/i.exec(USER_AGENT); +var appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null; /* * Device is an iPhone @@ -14919,8 +14716,10 @@ var ANDROID_VERSION = (function () { exports.ANDROID_VERSION = ANDROID_VERSION; // Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser var IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3; - exports.IS_OLD_ANDROID = IS_OLD_ANDROID; +var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537; + +exports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID; var IS_FIREFOX = /Firefox/i.test(USER_AGENT); exports.IS_FIREFOX = IS_FIREFOX; var IS_CHROME = /Chrome/i.test(USER_AGENT); @@ -14928,15 +14727,21 @@ exports.IS_CHROME = IS_CHROME; var IS_IE8 = /MSIE\s8\.0/.test(USER_AGENT); exports.IS_IE8 = IS_IE8; -var TOUCH_ENABLED = !!('ontouchstart' in _window2['default'] || _window2['default'].DocumentTouch && _document2['default'] instanceof _window2['default'].DocumentTouch); +var TOUCH_ENABLED = !!('ontouchstart' in _globalWindow2['default'] || _globalWindow2['default'].DocumentTouch && _globalDocument2['default'] instanceof _globalWindow2['default'].DocumentTouch); exports.TOUCH_ENABLED = TOUCH_ENABLED; -var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _document2['default'].createElement('video').style); +var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _globalDocument2['default'].createElement('video').style); exports.BACKGROUND_SIZE_SUPPORTED = BACKGROUND_SIZE_SUPPORTED; -},{"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ +},{"global/document":1,"global/window":2}],105:[function(_dereq_,module,exports){ +/** + * @file buffer.js + */ 'use strict'; exports.__esModule = true; +exports.bufferedPercent = bufferedPercent; + +var _timeRangesJs = _dereq_('./time-ranges.js'); /** * Compute how much your video has been buffered @@ -14947,12 +14752,6 @@ exports.__esModule = true; * @private * @function bufferedPercent */ -exports.bufferedPercent = bufferedPercent; -/** - * @file buffer.js - */ - -var _createTimeRange = _dereq_('./time-ranges.js'); function bufferedPercent(buffered, duration) { var bufferedDuration = 0, @@ -14964,7 +14763,7 @@ function bufferedPercent(buffered, duration) { } if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _timeRangesJs.createTimeRange(0, 0); } for (var i = 0; i < buffered.length; i++) { @@ -14982,16 +14781,16 @@ function bufferedPercent(buffered, duration) { return bufferedDuration / duration; } -},{"./time-ranges.js":119}],110:[function(_dereq_,module,exports){ +},{"./time-ranges.js":115}],106:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./log.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _logJs = _dereq_('./log.js'); + +var _logJs2 = _interopRequireDefault(_logJs); /** * Object containing the default behaviors for available handler methods. @@ -15024,7 +14823,7 @@ var defaultBehaviors = { */ exports['default'] = function (target) { - var messages = arguments[1] === undefined ? {} : arguments[1]; + var messages = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; if (typeof Proxy === 'function') { var _ret = (function () { @@ -15035,7 +14834,7 @@ exports['default'] = function (target) { Object.keys(messages).forEach(function (key) { if (defaultBehaviors.hasOwnProperty(key)) { handler[key] = function () { - _log2['default'].warn(messages[key]); + _logJs2['default'].warn(messages[key]); return defaultBehaviors[key].apply(this, arguments); }; } @@ -15053,12 +14852,43 @@ exports['default'] = function (target) { module.exports = exports['default']; -},{"./log.js":116}],111:[function(_dereq_,module,exports){ +},{"./log.js":112}],107:[function(_dereq_,module,exports){ +/** + * @file dom.js + */ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.getEl = getEl; +exports.createEl = createEl; +exports.insertElFirst = insertElFirst; +exports.getElData = getElData; +exports.hasElData = hasElData; +exports.removeElData = removeElData; +exports.hasElClass = hasElClass; +exports.addElClass = addElClass; +exports.removeElClass = removeElClass; +exports.setElAttributes = setElAttributes; +exports.getElAttributes = getElAttributes; +exports.blockTextSelection = blockTextSelection; +exports.unblockTextSelection = unblockTextSelection; +exports.findElPosition = findElPosition; + +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; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); /** * Shorthand for document.getElementById() @@ -15068,7 +14898,14 @@ exports.__esModule = true; * @return {Element} Element with supplied ID * @function getEl */ -exports.getEl = getEl; + +function getEl(id) { + if (id.indexOf('#') === 0) { + id = id.slice(1); + } + + return _globalDocument2['default'].getElementById(id); +} /** * Creates an element and applies properties. @@ -15078,151 +14915,12 @@ exports.getEl = getEl; * @return {Element} * @function createEl */ -exports.createEl = createEl; - -/** - * Insert an element as the first child node of another - * - * @param {Element} child Element to insert - * @param {Element} parent Element to insert child into - * @private - * @function insertElFirst - */ -exports.insertElFirst = insertElFirst; - -/** - * Returns the cache object where data for an element is stored - * - * @param {Element} el Element to store data for. - * @return {Object} - * @function getElData - */ -exports.getElData = getElData; - -/** - * Returns whether or not an element has cached data - * - * @param {Element} el A dom element - * @return {Boolean} - * @private - * @function hasElData - */ -exports.hasElData = hasElData; - -/** - * Delete data for the element from the cache and the guid attr from getElementById - * - * @param {Element} el Remove data for an element - * @private - * @function removeElData - */ -exports.removeElData = removeElData; - -/** - * Check if an element has a CSS class - * - * @param {Element} element Element to check - * @param {String} classToCheck Classname to check - * @function hasElClass - */ -exports.hasElClass = hasElClass; - -/** - * Add a CSS class name to an element - * - * @param {Element} element Element to add class name to - * @param {String} classToAdd Classname to add - * @function addElClass - */ -exports.addElClass = addElClass; - -/** - * Remove a CSS class name from an element - * - * @param {Element} element Element to remove from class name - * @param {String} classToRemove Classname to remove - * @function removeElClass - */ -exports.removeElClass = removeElClass; - -/** - * Apply attributes to an HTML element. - * - * @param {Element} el Target element. - * @param {Object=} attributes Element attributes to be applied. - * @private - * @function setElAttributes - */ -exports.setElAttributes = setElAttributes; - -/** - * Get an element's attribute values, as defined on the HTML tag - * Attributes are not the same as properties. They're defined on the tag - * or with setAttribute (which shouldn't be used with HTML) - * This will return true or false for boolean attributes. - * - * @param {Element} tag Element from which to get tag attributes - * @return {Object} - * @private - * @function getElAttributes - */ -exports.getElAttributes = getElAttributes; - -/** - * Attempt to block the ability to select text while dragging controls - * - * @return {Boolean} - * @method blockTextSelection - */ -exports.blockTextSelection = blockTextSelection; - -/** - * Turn off text selection blocking - * - * @return {Boolean} - * @method unblockTextSelection - */ -exports.unblockTextSelection = unblockTextSelection; - -/** - * Offset Left - * getBoundingClientRect technique from - * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ - * - * @param {Element} el Element from which to get offset - * @return {Object=} - * @method findElPosition - */ -exports.findElPosition = findElPosition; -/** - * @file dom.js - */ - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _import = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import); - -function getEl(id) { - if (id.indexOf('#') === 0) { - id = id.slice(1); - } - - return _document2['default'].getElementById(id); -} function createEl() { - var tagName = arguments[0] === undefined ? 'div' : arguments[0]; - var properties = arguments[1] === undefined ? {} : arguments[1]; + var tagName = arguments.length <= 0 || arguments[0] === undefined ? 'div' : arguments[0]; + var properties = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - var el = _document2['default'].createElement(tagName); + var el = _globalDocument2['default'].createElement(tagName); Object.getOwnPropertyNames(properties).forEach(function (propName) { var val = properties[propName]; @@ -15245,6 +14943,15 @@ function createEl() { return el; } +/** + * Insert an element as the first child node of another + * + * @param {Element} child Element to insert + * @param {Element} parent Element to insert child into + * @private + * @function insertElFirst + */ + function insertElFirst(child, parent) { if (parent.firstChild) { parent.insertBefore(child, parent.firstChild); @@ -15271,6 +14978,15 @@ var elData = {}; * @private */ var elIdAttr = 'vdata' + new Date().getTime(); + +/** + * Returns the cache object where data for an element is stored + * + * @param {Element} el Element to store data for. + * @return {Object} + * @function getElData + */ + function getElData(el) { var id = el[elIdAttr]; @@ -15285,6 +15001,15 @@ function getElData(el) { return elData[id]; } +/** + * Returns whether or not an element has cached data + * + * @param {Element} el A dom element + * @return {Boolean} + * @private + * @function hasElData + */ + function hasElData(el) { var id = el[elIdAttr]; @@ -15295,6 +15020,14 @@ function hasElData(el) { return !!Object.getOwnPropertyNames(elData[id]).length; } +/** + * Delete data for the element from the cache and the guid attr from getElementById + * + * @param {Element} el Remove data for an element + * @private + * @function removeElData + */ + function removeElData(el) { var id = el[elIdAttr]; @@ -15318,16 +15051,40 @@ function removeElData(el) { } } +/** + * Check if an element has a CSS class + * + * @param {Element} element Element to check + * @param {String} classToCheck Classname to check + * @function hasElClass + */ + function hasElClass(element, classToCheck) { return (' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1; } +/** + * Add a CSS class name to an element + * + * @param {Element} element Element to add class name to + * @param {String} classToAdd Classname to add + * @function addElClass + */ + function addElClass(element, classToAdd) { if (!hasElClass(element, classToAdd)) { element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd; } } +/** + * Remove a CSS class name from an element + * + * @param {Element} element Element to remove from class name + * @param {String} classToRemove Classname to remove + * @function removeElClass + */ + function removeElClass(element, classToRemove) { if (!hasElClass(element, classToRemove)) { return; @@ -15345,6 +15102,15 @@ function removeElClass(element, classToRemove) { element.className = classNames.join(' '); } +/** + * Apply attributes to an HTML element. + * + * @param {Element} el Target element. + * @param {Object=} attributes Element attributes to be applied. + * @private + * @function setElAttributes + */ + function setElAttributes(el, attributes) { Object.getOwnPropertyNames(attributes).forEach(function (attrName) { var attrValue = attributes[attrName]; @@ -15357,6 +15123,18 @@ function setElAttributes(el, attributes) { }); } +/** + * Get an element's attribute values, as defined on the HTML tag + * Attributes are not the same as properties. They're defined on the tag + * or with setAttribute (which shouldn't be used with HTML) + * This will return true or false for boolean attributes. + * + * @param {Element} tag Element from which to get tag attributes + * @return {Object} + * @private + * @function getElAttributes + */ + function getElAttributes(tag) { var obj, knownBooleans, attrs, attrName, attrVal; @@ -15390,19 +15168,43 @@ function getElAttributes(tag) { return obj; } +/** + * Attempt to block the ability to select text while dragging controls + * + * @return {Boolean} + * @method blockTextSelection + */ + function blockTextSelection() { - _document2['default'].body.focus(); - _document2['default'].onselectstart = function () { + _globalDocument2['default'].body.focus(); + _globalDocument2['default'].onselectstart = function () { return false; }; } +/** + * Turn off text selection blocking + * + * @return {Boolean} + * @method unblockTextSelection + */ + function unblockTextSelection() { - _document2['default'].onselectstart = function () { + _globalDocument2['default'].onselectstart = function () { return true; }; } +/** + * Offset Left + * getBoundingClientRect technique from + * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ + * + * @param {Element} el Element from which to get offset + * @return {Object=} + * @method findElPosition + */ + function findElPosition(el) { var box = undefined; @@ -15417,15 +15219,15 @@ function findElPosition(el) { }; } - var docEl = _document2['default'].documentElement; - var body = _document2['default'].body; + var docEl = _globalDocument2['default'].documentElement; + var body = _globalDocument2['default'].body; var clientLeft = docEl.clientLeft || body.clientLeft || 0; - var scrollLeft = _window2['default'].pageXOffset || body.scrollLeft; + var scrollLeft = _globalWindow2['default'].pageXOffset || body.scrollLeft; var left = box.left + scrollLeft - clientLeft; var clientTop = docEl.clientTop || body.clientTop || 0; - var scrollTop = _window2['default'].pageYOffset || body.scrollTop; + var scrollTop = _globalWindow2['default'].pageYOffset || body.scrollTop; var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round @@ -15435,12 +15237,44 @@ function findElPosition(el) { }; } -},{"./guid.js":115,"global/document":1,"global/window":2}],112:[function(_dereq_,module,exports){ +},{"./guid.js":111,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ +/** + * @file events.js + * + * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) + * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) + * This should work very similarly to jQuery's events, however it's based off the book version which isn't as + * robust as jquery's, so there's probably some differences. + */ + 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.on = on; +exports.off = off; +exports.trigger = trigger; +exports.one = one; +exports.fixEvent = fixEvent; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +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; } } + +var _domJs = _dereq_('./dom.js'); + +var Dom = _interopRequireWildcard(_domJs); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Add an event listener to element @@ -15453,72 +15287,6 @@ exports.__esModule = true; * @param {Function} fn Event listener. * @method on */ -exports.on = on; - -/** - * Removes event listeners from an element - * - * @param {Element|Object} elem Object to remove listeners from - * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. - * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. - * @method off - */ -exports.off = off; - -/** - * Trigger an event for an element - * - * @param {Element|Object} elem Element to trigger an event on - * @param {Event|Object|String} event A string (the type) or an event object with a type attribute - * @param {Object} [hash] data hash to pass along with the event - * @return {Boolean=} Returned only if default was prevented - * @method trigger - */ -exports.trigger = trigger; - -/** - * Trigger a listener only once for an event - * - * @param {Element|Object} elem Element or object to - * @param {String|Array} type Name/type of event - * @param {Function} fn Event handler function - * @method one - */ -exports.one = one; - -/** - * Fix a native event to have standard property values - * - * @param {Object} event Event object to fix - * @return {Object} - * @private - * @method fixEvent - */ -exports.fixEvent = fixEvent; -/** - * @file events.js - * - * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) - * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) - * This should work very similarly to jQuery's events, however it's based off the book version which isn't as - * robust as jquery's, so there's probably some differences. - */ - -var _import = _dereq_('./dom.js'); - -var Dom = _interopRequireWildcard(_import); - -var _import2 = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import2); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); function on(elem, type, fn) { if (Array.isArray(type)) { @@ -15570,11 +15338,20 @@ function on(elem, type, fn) { } } +/** + * Removes event listeners from an element + * + * @param {Element|Object} elem Object to remove listeners from + * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. + * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. + * @method off + */ + function off(elem, type, fn) { // Don't want to add a cache object through getElData if not needed - if (!Dom.hasElData(elem)) { - return; - }var data = Dom.getElData(elem); + if (!Dom.hasElData(elem)) return; + + var data = Dom.getElData(elem); // If no events exist, nothing to unbind if (!data.handlers) { @@ -15601,9 +15378,9 @@ function off(elem, type, fn) { var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind - if (!handlers) { - return; - } // If no listener was provided, remove all listeners for type + if (!handlers) return; + + // If no listener was provided, remove all listeners for type if (!fn) { removeType(type); return; @@ -15621,6 +15398,16 @@ function off(elem, type, fn) { _cleanUpEvents(elem, type); } +/** + * Trigger an event for an element + * + * @param {Element|Object} elem Element to trigger an event on + * @param {Event|Object|String} event A string (the type) or an event object with a type attribute + * @param {Object} [hash] data hash to pass along with the event + * @return {Boolean=} Returned only if default was prevented + * @method trigger + */ + function trigger(elem, event, hash) { // Fetches element data and a reference to the parent (for bubbling). // Don't want to add a data object to cache for every parent, @@ -15649,48 +15436,56 @@ function trigger(elem, event, hash) { // If at the top of the DOM, triggers the default action unless disabled. } else if (!parent && !event.defaultPrevented) { - var targetData = Dom.getElData(event.target); + var targetData = Dom.getElData(event.target); - // Checks if the target has a default action for this event. - if (event.target[event.type]) { - // Temporarily disables event dispatching on the target as we have already executed the handler. - targetData.disabled = true; - // Executes the default action. - if (typeof event.target[event.type] === 'function') { - event.target[event.type](); + // Checks if the target has a default action for this event. + if (event.target[event.type]) { + // Temporarily disables event dispatching on the target as we have already executed the handler. + targetData.disabled = true; + // Executes the default action. + if (typeof event.target[event.type] === 'function') { + event.target[event.type](); + } + // Re-enables event dispatching. + targetData.disabled = false; } - // Re-enables event dispatching. - targetData.disabled = false; } - } // Inform the triggerer if the default was prevented by returning false return !event.defaultPrevented; } +/** + * Trigger a listener only once for an event + * + * @param {Element|Object} elem Element or object to + * @param {String|Array} type Name/type of event + * @param {Function} fn Event handler function + * @method one + */ + function one(elem, type, fn) { if (Array.isArray(type)) { return _handleMultipleEvents(one, elem, type, fn); } - var func = (function (_func) { - function func() { - return _func.apply(this, arguments); - } - - func.toString = function () { - return _func.toString(); - }; - - return func; - })(function () { + var func = function func() { off(elem, type, func); fn.apply(this, arguments); - }); + }; // copy the guid to the new function so it can removed using the original function's ID func.guid = fn.guid = fn.guid || Guid.newGUID(); on(elem, type, func); } +/** + * Fix a native event to have standard property values + * + * @param {Object} event Event object to fix + * @return {Object} + * @private + * @method fixEvent + */ + function fixEvent(event) { function returnTrue() { @@ -15706,7 +15501,7 @@ function fixEvent(event) { // other expected methods like isPropagationStopped. Seems to be a problem // with the Javascript Ninja code. So we're just overriding all events now. if (!event || !event.isPropagationStopped) { - var old = event || _window2['default'].event; + var old = event || _globalWindow2['default'].event; event = {}; // Clone the old object so that we can modify the values event = {}; @@ -15728,7 +15523,7 @@ function fixEvent(event) { // The event occurred on this element if (!event.target) { - event.target = event.srcElement || _document2['default']; + event.target = event.srcElement || _globalDocument2['default']; } // Handle which other element the event is related to @@ -15771,8 +15566,8 @@ function fixEvent(event) { // Handle mouse position if (event.clientX != null) { - var doc = _document2['default'].documentElement, - body = _document2['default'].body; + var doc = _globalDocument2['default'].documentElement, + body = _globalDocument2['default'].body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); @@ -15847,15 +15642,15 @@ function _handleMultipleEvents(fn, elem, types, callback) { }); } -},{"./dom.js":111,"./guid.js":115,"global/document":1,"global/window":2}],113:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./dom.js":107,"./guid.js":111,"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ /** * @file fn.js */ +'use strict'; -var _newGUID = _dereq_('./guid.js'); +exports.__esModule = true; + +var _guidJs = _dereq_('./guid.js'); /** * Bind (a.k.a proxy or Context). A simple method for changing the context of a function @@ -15871,7 +15666,7 @@ var _newGUID = _dereq_('./guid.js'); var bind = function bind(context, fn, uid) { // Make sure the function has a unique ID if (!fn.guid) { - fn.guid = _newGUID.newGUID(); + fn.guid = _guidJs.newGUID(); } // Create the new function that changes the context @@ -15891,10 +15686,7 @@ var bind = function bind(context, fn, uid) { }; exports.bind = bind; -},{"./guid.js":115}],114:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./guid.js":111}],110:[function(_dereq_,module,exports){ /** * @file format-time.js * @@ -15908,8 +15700,11 @@ exports.__esModule = true; * @private * @function formatTime */ +'use strict'; + +exports.__esModule = true; function formatTime(seconds) { - var guide = arguments[1] === undefined ? seconds : arguments[1]; + var guide = arguments.length <= 1 || arguments[1] === undefined ? seconds : arguments[1]; return (function () { var s = Math.floor(seconds % 60); var m = Math.floor(seconds / 60 % 60); @@ -15941,18 +15736,7 @@ function formatTime(seconds) { exports['default'] = formatTime; module.exports = exports['default']; -},{}],115:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -/** - * Get the next unique ID - * - * @return {String} - * @function newGUID - */ -exports.newGUID = newGUID; +},{}],111:[function(_dereq_,module,exports){ /** * @file guid.js * @@ -15960,24 +15744,36 @@ exports.newGUID = newGUID; * @type {Number} * @private */ +"use strict"; + +exports.__esModule = true; +exports.newGUID = newGUID; var _guid = 1; + +/** + * Get the next unique ID + * + * @return {String} + * @function newGUID + */ + function newGUID() { return _guid++; } -},{}],116:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],112:[function(_dereq_,module,exports){ /** * @file log.js */ +'use strict'; -var _window = _dereq_('global/window'); +exports.__esModule = true; -var _window2 = _interopRequireWildcard(_window); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Log plain debug messages @@ -16023,10 +15819,10 @@ function _logType(type, args) { // in the function makes it easier to test cases where console doesn't exist var noop = function noop() {}; - var console = _window2['default'].console || { - log: noop, - warn: noop, - error: noop + var console = _globalWindow2['default']['console'] || { + 'log': noop, + 'warn': noop, + 'error': noop }; if (type) { @@ -16055,30 +15851,20 @@ function _logType(type, args) { exports['default'] = log; module.exports = exports['default']; -},{"global/window":2}],117:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; - -/** - * Merge one or more options objects, recursively merging **only** - * plain object properties. Previously `deepMerge`. - * - * @param {...Object} source One or more objects to merge - * @returns {Object} a new object that is the union of all - * provided objects - * @function mergeOptions - */ -exports['default'] = mergeOptions; +},{"global/window":2}],113:[function(_dereq_,module,exports){ /** * @file merge-options.js */ +'use strict'; -var _merge = _dereq_('lodash-compat/object/merge'); +exports.__esModule = true; +exports['default'] = mergeOptions; -var _merge2 = _interopRequireWildcard(_merge); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); function isPlain(obj) { return !!obj && typeof obj === 'object' && obj.toString() === '[object Object]' && obj.constructor === Object; @@ -16105,6 +15891,17 @@ var customizer = function customizer(destination, source) { return mergeOptions(source); } }; + +/** + * Merge one or more options objects, recursively merging **only** + * plain object properties. Previously `deepMerge`. + * + * @param {...Object} source One or more objects to merge + * @returns {Object} a new object that is the union of all + * provided objects + * @function mergeOptions + */ + function mergeOptions() { // contruct the call dynamically to handle the variable number of // objects to merge @@ -16117,7 +15914,7 @@ function mergeOptions() { // customize conflict resolution to match our historical merge behavior args.push(customizer); - _merge2['default'].apply(null, args); + _lodashCompatObjectMerge2['default'].apply(null, args); // return the mutated result object return args[0]; @@ -16125,19 +15922,19 @@ function mergeOptions() { module.exports = exports['default']; -},{"lodash-compat/object/merge":40}],118:[function(_dereq_,module,exports){ +},{"lodash-compat/object/merge":37}],114:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); var createStyleElement = function createStyleElement(className) { - var style = _document2['default'].createElement('style'); + var style = _globalDocument2['default'].createElement('style'); style.className = className; return style; @@ -16153,10 +15950,7 @@ var setTextContent = function setTextContent(el, content) { }; exports.setTextContent = setTextContent; -},{"global/document":1}],119:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"global/document":1}],115:[function(_dereq_,module,exports){ /** * @file time-ranges.js * @@ -16171,10 +15965,13 @@ exports.__esModule = true; * @private * @method createTimeRange */ +'use strict'; + +exports.__esModule = true; exports.createTimeRange = createTimeRange; -function createTimeRange(start, end) { - if (start === undefined && end === undefined) { +function createTimeRange(_start, _end) { + if (_start === undefined && _end === undefined) { return { length: 0, start: function start() { @@ -16187,39 +15984,16 @@ function createTimeRange(start, end) { } return { length: 1, - start: (function (_start) { - function start() { - return _start.apply(this, arguments); - } - - start.toString = function () { - return _start.toString(); - }; - - return start; - })(function () { - return start; - }), - end: (function (_end) { - function end() { - return _end.apply(this, arguments); - } - - end.toString = function () { - return _end.toString(); - }; - - return end; - })(function () { - return end; - }) + start: function start() { + return _start; + }, + end: function end() { + return _end; + } }; } -},{}],120:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; +},{}],116:[function(_dereq_,module,exports){ /** * @file to-title-case.js * @@ -16230,6 +16004,9 @@ exports.__esModule = true; * @private * @method toTitleCase */ +"use strict"; + +exports.__esModule = true; function toTitleCase(string) { return string.charAt(0).toUpperCase() + string.slice(1); } @@ -16237,19 +16014,19 @@ function toTitleCase(string) { exports["default"] = toTitleCase; module.exports = exports["default"]; -},{}],121:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],117:[function(_dereq_,module,exports){ /** * @file url.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Resolve and parse the elements of a URL @@ -16262,7 +16039,7 @@ var parseUrl = function parseUrl(url) { var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL - var a = _document2['default'].createElement('a'); + var a = _globalDocument2['default'].createElement('a'); a.href = url; // IE8 (and 9?) Fix @@ -16271,12 +16048,12 @@ var parseUrl = function parseUrl(url) { var addToBody = a.host === '' && a.protocol !== 'file:'; var div = undefined; if (addToBody) { - div = _document2['default'].createElement('div'); + div = _globalDocument2['default'].createElement('div'); div.innerHTML = ''; a = div.firstChild; // prevent the div from affecting layout div.setAttribute('style', 'display:none; position:absolute;'); - _document2['default'].body.appendChild(div); + _globalDocument2['default'].body.appendChild(div); } // Copy the specific URL properties to a new object @@ -16297,7 +16074,7 @@ var parseUrl = function parseUrl(url) { } if (addToBody) { - _document2['default'].body.removeChild(div); + _globalDocument2['default'].body.removeChild(div); } return details; @@ -16317,7 +16094,7 @@ var getAbsoluteURL = function getAbsoluteURL(url) { // Check if absolute URL if (!url.match(/^https?:\/\//)) { // Convert to absolute URL. Flash hosted off-site needs an absolute URL. - var div = _document2['default'].createElement('div'); + var div = _globalDocument2['default'].createElement('div'); div.innerHTML = 'x'; url = div.firstChild.href; } @@ -16347,113 +16124,115 @@ var getFileExtension = function getFileExtension(path) { }; exports.getFileExtension = getFileExtension; -},{"global/document":1}],122:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"global/document":1}],118:[function(_dereq_,module,exports){ /** * @file video.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +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; } } -var _import = _dereq_('./setup'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var setup = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/stylesheet.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var stylesheet = _interopRequireWildcard(_import2); +var _setup = _dereq_('./setup'); -var _Component = _dereq_('./component'); +var setup = _interopRequireWildcard(_setup); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _EventTarget = _dereq_('./event-target'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/events.js'); +var _component2 = _interopRequireDefault(_component); -var Events = _interopRequireWildcard(_import3); +var _eventTarget = _dereq_('./event-target'); -var _Player = _dereq_('./player'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _Player2 = _interopRequireWildcard(_Player); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _plugin = _dereq_('./plugins.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _plugin2 = _interopRequireWildcard(_plugin); +var _player = _dereq_('./player'); -var _mergeOptions = _dereq_('../../src/js/utils/merge-options.js'); +var _player2 = _interopRequireDefault(_player); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _pluginsJs = _dereq_('./plugins.js'); -var _import4 = _dereq_('./utils/fn.js'); +var _pluginsJs2 = _interopRequireDefault(_pluginsJs); -var Fn = _interopRequireWildcard(_import4); +var _srcJsUtilsMergeOptionsJs = _dereq_('../../src/js/utils/merge-options.js'); -var _assign = _dereq_('object.assign'); +var _srcJsUtilsMergeOptionsJs2 = _interopRequireDefault(_srcJsUtilsMergeOptionsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _formatTime = _dereq_('./utils/format-time.js'); +var _objectAssign = _dereq_('object.assign'); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _objectAssign2 = _interopRequireDefault(_objectAssign); -var _log = _dereq_('./utils/log.js'); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _log2 = _interopRequireWildcard(_log); +var _utilsFormatTimeJs = _dereq_('./utils/format-time.js'); -var _xhr = _dereq_('./xhr.js'); +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); -var _xhr2 = _interopRequireWildcard(_xhr); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import5 = _dereq_('./utils/dom.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var Dom = _interopRequireWildcard(_import5); +var _xhrJs = _dereq_('./xhr.js'); -var _import6 = _dereq_('./utils/browser.js'); +var _xhrJs2 = _interopRequireDefault(_xhrJs); -var browser = _interopRequireWildcard(_import6); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import7 = _dereq_('./utils/url.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Url = _interopRequireWildcard(_import7); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _extendsFn = _dereq_('./extends.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _extendsFn2 = _interopRequireWildcard(_extendsFn); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _merge2 = _dereq_('lodash-compat/object/merge'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _merge3 = _interopRequireWildcard(_merge2); +var _extendsJs = _dereq_('./extends.js'); -var _createDeprecationProxy = _dereq_('./utils/create-deprecation-proxy.js'); +var _extendsJs2 = _interopRequireDefault(_extendsJs); -var _createDeprecationProxy2 = _interopRequireWildcard(_createDeprecationProxy); +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); + +var _utilsCreateDeprecationProxyJs = _dereq_('./utils/create-deprecation-proxy.js'); + +var _utilsCreateDeprecationProxyJs2 = _interopRequireDefault(_utilsCreateDeprecationProxyJs); // Include the built-in techs -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); -var _Flash = _dereq_('./tech/flash.js'); +var _techFlashJs = _dereq_('./tech/flash.js'); -var _Flash2 = _interopRequireWildcard(_Flash); +var _techFlashJs2 = _interopRequireDefault(_techFlashJs); // HTML5 Element Shim for IE8 if (typeof HTMLVideoElement === 'undefined') { - _document2['default'].createElement('video'); - _document2['default'].createElement('audio'); - _document2['default'].createElement('track'); + _globalDocument2['default'].createElement('video'); + _globalDocument2['default'].createElement('audio'); + _globalDocument2['default'].createElement('track'); } /** @@ -16471,17 +16250,7 @@ if (typeof HTMLVideoElement === 'undefined') { * @mixes videojs * @method videojs */ -var videojs = (function (_videojs) { - function videojs(_x, _x2, _x3) { - return _videojs.apply(this, arguments); - } - - videojs.toString = function () { - return _videojs.toString(); - }; - - return videojs; -})(function (id, options, ready) { +var videojs = function videojs(id, options, ready) { var tag; // Element of ID // Allow for element or ID to be passed in @@ -16498,7 +16267,7 @@ var videojs = (function (_videojs) { // If options or ready funtion are passed, warn if (options) { - _log2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); + _utilsLogJs2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); } if (ready) { @@ -16509,13 +16278,13 @@ var videojs = (function (_videojs) { // Otherwise get element for ID } else { - tag = Dom.getEl(id); - } + tag = Dom.getEl(id); + } // ID is a media element } else { - tag = id; - } + tag = id; + } // Check for a useable element if (!tag || !tag.nodeName) { @@ -16525,12 +16294,12 @@ var videojs = (function (_videojs) { // Element may have a player attr referring to an already created player instance. // If not, set up a new player and return the instance. - return tag.player || new _Player2['default'](tag, options, ready); -}); + return tag['player'] || new _player2['default'](tag, options, ready); +}; // Add default styles var style = stylesheet.createStyleElement('vjs-styles-defaults'); -var head = _document2['default'].querySelector('head'); +var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(style, head.firstChild); stylesheet.setTextContent(style, '\n .video-js {\n width: 300px;\n height: 150px;\n'); @@ -16543,7 +16312,7 @@ setup.autoSetupTimeout(1, videojs); * * @type {String} */ -videojs.VERSION = '5.0.0-rc.59'; +videojs.VERSION = '5.0.0-rc.72'; /** * The global options object. These are the settings that take effect @@ -16556,7 +16325,7 @@ videojs.VERSION = '5.0.0-rc.59'; * * @type {Object} */ -videojs.options = _Player2['default'].prototype.options_; +videojs.options = _player2['default'].prototype.options_; /** * Get an object with the currently created players, keyed by player ID @@ -16566,7 +16335,7 @@ videojs.options = _Player2['default'].prototype.options_; * @method getPlayers */ videojs.getPlayers = function () { - return _Player2['default'].players; + return _player2['default'].players; }; /** @@ -16576,7 +16345,7 @@ videojs.getPlayers = function () { * @memberOf videojs * @property {Object|Proxy} players */ -videojs.players = _createDeprecationProxy2['default'](_Player2['default'].players, { +videojs.players = _utilsCreateDeprecationProxyJs2['default'](_player2['default'].players, { get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead', set: 'Modification of videojs.players is deprecated' }); @@ -16593,7 +16362,7 @@ videojs.players = _createDeprecationProxy2['default'](_Player2['default'].player * @mixes videojs * @method getComponent */ -videojs.getComponent = _Component2['default'].getComponent; +videojs.getComponent = _component2['default'].getComponent; /** * Register a component so it can referred to by name @@ -16621,7 +16390,7 @@ videojs.getComponent = _Component2['default'].getComponent; * @mixes videojs * @method registerComponent */ -videojs.registerComponent = _Component2['default'].registerComponent; +videojs.registerComponent = _component2['default'].registerComponent; /** * A suite of browser and device tests @@ -16674,7 +16443,7 @@ videojs.TOUCH_ENABLED = browser.TOUCH_ENABLED; * @mixes videojs * @method extends */ -videojs['extends'] = _extendsFn2['default']; +videojs['extends'] = _extendsJs2['default']; /** * Merge two options objects recursively @@ -16709,7 +16478,7 @@ videojs['extends'] = _extendsFn2['default']; * @mixes videojs * @method mergeOptions */ -videojs.mergeOptions = _mergeOptions2['default']; +videojs.mergeOptions = _srcJsUtilsMergeOptionsJs2['default']; /** * Change the context (this) of a function @@ -16773,7 +16542,7 @@ videojs.bind = Fn.bind; * @mixes videojs * @method plugin */ -videojs.plugin = _plugin2['default']; +videojs.plugin = _pluginsJs2['default']; /** * Adding languages so that they're available to all players. @@ -16791,7 +16560,7 @@ videojs.addLanguage = function (code, data) { var _merge; code = ('' + code).toLowerCase(); - return _merge3['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; + return _lodashCompatObjectMerge2['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; }; /** @@ -16799,7 +16568,7 @@ videojs.addLanguage = function (code, data) { * * @param {...Object} messages One or more messages to log */ -videojs.log = _log2['default']; +videojs.log = _utilsLogJs2['default']; /** * Creates an emulated TimeRange object. @@ -16809,7 +16578,7 @@ videojs.log = _log2['default']; * @return {Object} Fake TimeRange object * @method createTimeRange */ -videojs.createTimeRange = _createTimeRange.createTimeRange; +videojs.createTimeRange = _utilsTimeRangesJs.createTimeRange; /** * Format seconds as a time string, H:MM:SS or M:SS @@ -16821,7 +16590,7 @@ videojs.createTimeRange = _createTimeRange.createTimeRange; * @return {String} Time formatted as H:MM:SS or M:SS * @method formatTime */ -videojs.formatTime = _formatTime2['default']; +videojs.formatTime = _utilsFormatTimeJs2['default']; /** * Simple http request for retrieving external files (e.g. text tracks) @@ -16852,7 +16621,7 @@ videojs.formatTime = _formatTime2['default']; * @param {Function} callback The callback function * @returns {Object} The request */ -videojs.xhr = _xhr2['default']; +videojs.xhr = _xhrJs2['default']; /** * Resolve and parse the elements of a URL @@ -16868,7 +16637,7 @@ videojs.parseUrl = Url.parseUrl; * * @type {Function} */ -videojs.EventTarget = _EventTarget2['default']; +videojs.EventTarget = _eventTarget2['default']; /** * Add an event listener to element @@ -16938,44 +16707,46 @@ videojs.trigger = Events.trigger; * still support requirejs and browserify. This also needs to be closure * compiler compatible, so string keys are used. */ -if (typeof define === 'function' && define.amd) { +if (typeof define === 'function' && define['amd']) { define('videojs', [], function () { return videojs; }); // checking that module is an object too because of umdjs/umd#35 } else if (typeof exports === 'object' && typeof module === 'object') { - module.exports = videojs; -} + module['exports'] = videojs; + } exports['default'] = videojs; module.exports = exports['default']; -},{"../../src/js/utils/merge-options.js":117,"./component":52,"./event-target":83,"./extends.js":84,"./player":91,"./plugins.js":92,"./setup":94,"./tech/flash.js":97,"./tech/html5.js":98,"./utils/browser.js":108,"./utils/create-deprecation-proxy.js":110,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/format-time.js":114,"./utils/log.js":116,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/url.js":121,"./xhr.js":123,"global/document":1,"lodash-compat/object/merge":40,"object.assign":44}],123:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../../src/js/utils/merge-options.js":113,"./component":48,"./event-target":79,"./extends.js":80,"./player":87,"./plugins.js":88,"./setup":90,"./tech/flash.js":93,"./tech/html5.js":94,"./utils/browser.js":104,"./utils/create-deprecation-proxy.js":106,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/format-time.js":110,"./utils/log.js":112,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/url.js":117,"./xhr.js":119,"global/document":1,"lodash-compat/object/merge":37,"object.assign":40}],119:[function(_dereq_,module,exports){ /** * @file xhr.js */ +'use strict'; -var _import = _dereq_('./utils/url.js'); +exports.__esModule = true; -var Url = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log = _dereq_('./utils/log.js'); +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; } } -var _log2 = _interopRequireWildcard(_log); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _window = _dereq_('global/window'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /* * Simple http request for retrieving external files (e.g. text tracks) @@ -17016,26 +16787,26 @@ var xhr = function xhr(options, callback) { } // Merge with default options - options = _mergeOptions2['default']({ + options = _utilsMergeOptionsJs2['default']({ method: 'GET', timeout: 45 * 1000 }, options); callback = callback || function () {}; - var XHR = _window2['default'].XMLHttpRequest; + var XHR = _globalWindow2['default'].XMLHttpRequest; if (typeof XHR === 'undefined') { // Shim XMLHttpRequest for older IEs XHR = function () { try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {} throw new Error('This browser does not support XMLHttpRequest.'); }; @@ -17046,18 +16817,18 @@ var xhr = function xhr(options, callback) { request.uri = options.uri; var urlInfo = Url.parseUrl(options.uri); - var winLoc = _window2['default'].location; + var winLoc = _globalWindow2['default'].location; var successHandler = function successHandler() { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); callback(null, request, request.response || request.responseText); }; var errorHandler = function errorHandler(err) { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); if (!err || typeof err === 'string') { - err = new Error(err); + err = new Error(err || 'XHR Failed with a response of: ' + (request && (request.response || request.responseText))); } callback(err, request); @@ -17070,8 +16841,8 @@ var xhr = function xhr(options, callback) { // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available // 'withCredentials' is only available in XMLHTTPRequest2 // Also XDomainRequest has a lot of gotchas, so only use if cross domain - if (crossOrigin && _window2['default'].XDomainRequest && !('withCredentials' in request)) { - request = new _window2['default'].XDomainRequest(); + if (crossOrigin && _globalWindow2['default'].XDomainRequest && !('withCredentials' in request)) { + request = new _globalWindow2['default'].XDomainRequest(); request.onload = successHandler; request.onerror = errorHandler; // These blank handlers need to be set to fix ie9 @@ -17081,33 +16852,33 @@ var xhr = function xhr(options, callback) { // XMLHTTPRequest } else { - (function () { - var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; + (function () { + var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.timedout) { - return errorHandler('timeout'); - } + request.onreadystatechange = function () { + if (request.readyState === 4) { + if (request.timedout) { + return errorHandler('timeout'); + } - if (request.status === 200 || fileUrl && request.status === 0) { - successHandler(); - } else { - errorHandler(); + if (request.status === 200 || fileUrl && request.status === 0) { + successHandler(); + } else { + errorHandler(); + } } + }; + + if (options.timeout) { + abortTimeout = _globalWindow2['default'].setTimeout(function () { + if (request.readyState !== 4) { + request.timedout = true; + request.abort(); + } + }, options.timeout); } - }; - - if (options.timeout) { - abortTimeout = _window2['default'].setTimeout(function () { - if (request.readyState !== 4) { - request.timedout = true; - request.abort(); - } - }, options.timeout); - } - })(); - } + })(); + } // open the connection try { @@ -17139,7 +16910,7 @@ var xhr = function xhr(options, callback) { exports['default'] = xhr; module.exports = exports['default']; -},{"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/url.js":121,"global/window":2}]},{},[122])(122) +},{"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/url.js":117,"global/window":2}]},{},[118])(118) }); diff --git a/node_modules/video.js/dist/alt/video.novtt.min.js b/node_modules/video.js/dist/alt/video.novtt.min.js index f2fbbba..fb956a2 100644 --- a/node_modules/video.js/dist/alt/video.novtt.min.js +++ b/node_modules/video.js/dist/alt/video.novtt.min.js @@ -1,17 +1,16 @@ /** * @license - * Video.js 5.0.0-rc.59 + * Video.js 5.0.0-rc.72 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.videojs=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g2?c[g-2]:void 0,i=g>2?c[2]:void 0,j=g>1?c[g-1]:void 0;for("function"==typeof h?(h=d(h,j,5),g-=2):(h="function"==typeof j?j:void 0,g-=h?1:0),i&&e(c[0],c[1],i)&&(h=3>g?void 0:h,g=1);++f-1&&a%1==0&&b>a}var d=/^\d+$/,e=9007199254740991;b.exports=c},{}],23:[function(a,b){function c(a,b,c){if(!f(c))return!1;var g=typeof b;if("number"==g?d(c)&&e(b,c.length):"string"==g&&b in c){var h=c[b];return a===a?a===h:h!==h}return!1}var d=a("./isArrayLike"),e=a("./isIndex"),f=a("../lang/isObject");b.exports=c},{"../lang/isObject":33,"./isArrayLike":20,"./isIndex":22}],24:[function(a,b){function c(a){return"number"==typeof a&&a>-1&&a%1==0&&d>=a}var d=9007199254740991;b.exports=c},{}],25:[function(a,b){function c(a){return!!a&&"object"==typeof a}b.exports=c},{}],26:[function(a,b){function c(a){var b;if(!g(a)||l.call(a)!=i||f(a)||!k.call(a,"constructor")&&(b=a.constructor,"function"==typeof b&&!(b instanceof b))||!h.argsTag&&e(a))return!1;var c;return h.ownLast?(d(a,function(a,b,d){return c=k.call(d,b),!1}),c!==!1):(d(a,function(a,b){c=b}),void 0===c||k.call(a,c))}var d=a("./baseForIn"),e=a("../lang/isArguments"),f=a("./isHostObject"),g=a("./isObjectLike"),h=a("../support"),i="[object Object]",j=Object.prototype,k=j.hasOwnProperty,l=j.toString;b.exports=c},{"../lang/isArguments":29,"../support":42,"./baseForIn":9,"./isHostObject":21,"./isObjectLike":25}],27:[function(a,b){function c(a){for(var b=i(a),c=b.length,j=c&&a.length,l=!!j&&g(j)&&(e(a)||d(a)||h(a)),m=-1,n=[];++m0,r=l.enumErrorProps&&(a===w||a instanceof Error),t=l.enumPrototypes&&g(a);++d2?arguments[2]:{};d(c(b),function(c){i(a,c,b[c],e[c])})};j.supportsDescriptors=!!h,b.exports=j},{foreach:46,"object-keys":47}],46:[function(a,b){var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString;b.exports=function(a,b,e){if("[object Function]"!==d.call(b))throw new TypeError("iterator must be a function");var f=a.length;if(f===+f)for(var g=0;f>g;g++)b.call(e,a[g],g,a);else for(var h in a)c.call(a,h)&&b.call(e,a[h],h,a)}},{}],47:[function(a,b){"use strict";var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString,e=a("./isArguments"),f=!{toString:null}.propertyIsEnumerable("toString"),g=function(){}.propertyIsEnumerable("prototype"),h=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=function(a){var b=null!==a&&"object"==typeof a,i="[object Function]"===d.call(a),j=e(a),k=b&&"[object String]"===d.call(a),l=[];if(!b&&!i&&!j)throw new TypeError("Object.keys called on a non-object");var m=g&&i;if(k&&a.length>0&&!c.call(a,0))for(var n=0;n0)for(var o=0;o=0&&"[object Function]"===c.call(a.callee)),d}},{}],49:[function(a,b){function c(a,b){var c,d=null;try{c=JSON.parse(a,b)}catch(e){d=e}return[d,c]}b.exports=c},{}],50:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-big-play-button"},b.prototype.handleClick=function(){this.player_.play()},b}(h["default"]);k.prototype.controlText_="Play Video",j["default"].registerComponent("BigPlayButton",k),c["default"]=k,b.exports=c["default"]},{"./button.js":51,"./component.js":52}],51:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component"),h=d(g),i=a("./utils/dom.js"),j=d(i),k=a("./utils/events.js"),l=d(k),m=a("./utils/fn.js"),n=d(m),o=a("global/document"),p=d(o),q=a("object.assign"),r=d(q),s=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.emitTapEvents(),this.on("tap",this.handleClick),this.on("click",this.handleClick),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur)}return f(b,a),b.prototype.createEl=function(){var b=void 0===arguments[0]?"button":arguments[0],c=void 0===arguments[1]?{}:arguments[1];c=r["default"]({className:this.buildCSSClass(),role:"button",type:"button","aria-live":"polite",tabIndex:0},c);var d=a.prototype.createEl.call(this,b,c);return this.controlTextEl_=j.createEl("span",{className:"vjs-control-text"}),d.appendChild(this.controlTextEl_),this.controlText(this.controlText_),d},b.prototype.controlText=function(a){return a?(this.controlText_=a,this.controlTextEl_.innerHTML=this.localize(this.controlText_),this):this.controlText_||"Need Text"},b.prototype.buildCSSClass=function(){return"vjs-control vjs-button "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){},b.prototype.handleFocus=function(){l.on(p["default"],"keydown",n.bind(this,this.handleKeyPress))},b.prototype.handleKeyPress=function(a){(32===a.which||13===a.which)&&(a.preventDefault(),this.handleClick())},b.prototype.handleBlur=function(){l.off(p["default"],"keydown",n.bind(this,this.handleKeyPress))},b}(h["default"]);h["default"].registerComponent("Button",s),c["default"]=s,b.exports=c["default"]},{"./component":52,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"global/document":1,"object.assign":44}],52:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")};c.__esModule=!0;var f=a("global/window"),g=d(f),h=a("./utils/dom.js"),i=d(h),j=a("./utils/fn.js"),k=d(j),l=a("./utils/guid.js"),m=d(l),n=a("./utils/events.js"),o=d(n),p=a("./utils/log.js"),q=d(p),r=a("./utils/to-title-case.js"),s=d(r),t=a("object.assign"),u=d(t),v=a("./utils/merge-options.js"),w=d(v),x=function(){function a(b,c,d){if(e(this,a),this.player_=!b&&this.play?b=this:b,this.options_=w["default"]({},this.options_),c=this.options_=w["default"](this.options_,c),this.id_=c.id||c.el&&c.el.id,!this.id_){var f=b&&b.id&&b.id()||"no_player";this.id_=""+f+"_component_"+m.newGUID()}this.name_=c.name||null,c.el?this.el_=c.el:c.createEl!==!1&&(this.el_=this.createEl()),this.children_=[],this.childIndex_={},this.childNameIndex_={},c.initChildren!==!1&&this.initChildren(),this.ready(d),c.reportTouchActivity!==!1&&this.enableTouchActivity()}return a.prototype.dispose=function(){if(this.trigger({type:"dispose",bubbles:!1}),this.children_)for(var a=this.children_.length-1;a>=0;a--)this.children_[a].dispose&&this.children_[a].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.off(),this.el_.parentNode&&this.el_.parentNode.removeChild(this.el_),i.removeElData(this.el_),this.el_=null},a.prototype.player=function(){return this.player_},a.prototype.options=function(a){return q["default"].warn("this.options() has been deprecated and will be moved to the constructor in 6.0"),a?(this.options_=w["default"](this.options_,a),this.options_):this.options_},a.prototype.el=function(){return this.el_},a.prototype.createEl=function(a,b){return i.createEl(a,b)},a.prototype.localize=function(a){var b=this.player_.language&&this.player_.language(),c=this.player_.languages&&this.player_.languages();if(!b||!c)return a;var d=c[b];if(d&&d[a])return d[a];var e=b.split("-")[0],f=c[e];return f&&f[a]?f[a]:a},a.prototype.contentEl=function(){return this.contentEl_||this.el_},a.prototype.id=function(){return this.id_},a.prototype.name=function(){return this.name_},a.prototype.children=function(){return this.children_},a.prototype.getChildById=function(a){return this.childIndex_[a]},a.prototype.getChild=function(a){return this.childNameIndex_[a]},a.prototype.addChild=function(b){var c=void 0===arguments[1]?{}:arguments[1],d=void 0,e=void 0;if("string"==typeof b){e=b,c||(c={}),c===!0&&(q["default"].warn("Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`."),c={});var f=c.componentClass||s["default"](e);c.name=e;var g=a.getComponent(f);d=new g(this.player_||this,c)}else d=b;return this.children_.push(d),"function"==typeof d.id&&(this.childIndex_[d.id()]=d),e=e||d.name&&d.name(),e&&(this.childNameIndex_[e]=d),"function"==typeof d.el&&d.el()&&this.contentEl().appendChild(d.el()),d},a.prototype.removeChild=function(a){if("string"==typeof a&&(a=this.getChild(a)),a&&this.children_){for(var b=!1,c=this.children_.length-1;c>=0;c--)if(this.children_[c]===a){b=!0,this.children_.splice(c,1);break}if(b){this.childIndex_[a.id()]=null,this.childNameIndex_[a.name()]=null;var d=a.el();d&&d.parentNode===this.contentEl()&&this.contentEl().removeChild(a.el())}}},a.prototype.initChildren=function(){var a=this,b=this.options_.children;b&&!function(){var c=a.options_,d=function(b,d){void 0!==c[b]&&(d=c[b]),d!==!1&&(d===!0&&(d={}),d.playerOptions=a.options_.playerOptions,a[b]=a.addChild(b,d))};if(Array.isArray(b))for(var e=0;e0&&(a.forEach(function(a){a.call(this)},this),this.readyQueue_=[]),this.trigger("ready")},1)},a.prototype.hasClass=function(a){return i.hasElClass(this.el_,a)},a.prototype.addClass=function(a){return i.addElClass(this.el_,a),this},a.prototype.removeClass=function(a){return i.removeElClass(this.el_,a),this},a.prototype.show=function(){return this.removeClass("vjs-hidden"),this},a.prototype.hide=function(){return this.addClass("vjs-hidden"),this},a.prototype.lockShowing=function(){return this.addClass("vjs-lock-showing"),this},a.prototype.unlockShowing=function(){return this.removeClass("vjs-lock-showing"),this},a.prototype.width=function(a,b){return this.dimension("width",a,b)},a.prototype.height=function(a,b){return this.dimension("height",a,b)},a.prototype.dimensions=function(a,b){return this.width(a,!0).height(b)},a.prototype.dimension=function(a,b,c){if(void 0!==b)return(null===b||b!==b)&&(b=0),this.el_.style[a]=-1!==(""+b).indexOf("%")||-1!==(""+b).indexOf("px")?b:"auto"===b?"":b+"px",c||this.trigger("resize"),this;if(!this.el_)return 0;var d=this.el_.style[a],e=d.indexOf("px");return-1!==e?parseInt(d.slice(0,e),10):parseInt(this.el_["offset"+s["default"](a)],10)},a.prototype.emitTapEvents=function(){var a=0,b=null,c=10,d=200,e=void 0;this.on("touchstart",function(c){1===c.touches.length&&(b=u["default"]({},c.touches[0]),a=(new Date).getTime(),e=!0)}),this.on("touchmove",function(a){if(a.touches.length>1)e=!1;else if(b){var d=a.touches[0].pageX-b.pageX,f=a.touches[0].pageY-b.pageY,g=Math.sqrt(d*d+f*f);g>c&&(e=!1)}});var f=function(){e=!1};this.on("touchleave",f),this.on("touchcancel",f),this.on("touchend",function(c){if(b=null,e===!0){var f=(new Date).getTime()-a;d>f&&(c.preventDefault(),this.trigger("tap"))}})},a.prototype.enableTouchActivity=function(){if(this.player()&&this.player().reportUserActivity){var a=k.bind(this.player(),this.player().reportUserActivity),b=void 0;this.on("touchstart",function(){a(),this.clearInterval(b),b=this.setInterval(a,250)});var c=function(){a(),this.clearInterval(b)};this.on("touchmove",a),this.on("touchend",c),this.on("touchcancel",c)}},a.prototype.setTimeout=function(a,b){a=k.bind(this,a);var c=g["default"].setTimeout(a,b),d=function(){this.clearTimeout(c)};return d.guid="vjs-timeout-"+c,this.on("dispose",d),c},a.prototype.clearTimeout=function(a){g["default"].clearTimeout(a);var b=function(){};return b.guid="vjs-timeout-"+a,this.off("dispose",b),a},a.prototype.setInterval=function(a,b){a=k.bind(this,a);var c=g["default"].setInterval(a,b),d=function(){this.clearInterval(c)};return d.guid="vjs-interval-"+c,this.on("dispose",d),c},a.prototype.clearInterval=function(a){g["default"].clearInterval(a);var b=function(){};return b.guid="vjs-interval-"+a,this.off("dispose",b),a},a.registerComponent=function(b,c){return a.components_||(a.components_={}),a.components_[b]=c,c},a.getComponent=function(b){return a.components_&&a.components_[b]?a.components_[b]:g["default"]&&g["default"].videojs&&g["default"].videojs[b]?(q["default"].warn("The "+b+" component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)"),g["default"].videojs[b]):void 0},a.extend=function(b){b=b||{},q["default"].warn("Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead");var c=b.init||b.init||this.prototype.init||this.prototype.init||function(){},d=function(){c.apply(this,arguments)};d.prototype=Object.create(this.prototype),d.prototype.constructor=d,d.extend=a.extend;for(var e in b)b.hasOwnProperty(e)&&(d.prototype[e]=b[e]);return d},a}();x.registerComponent("Component",x),c["default"]=x,b.exports=c["default"]},{"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/to-title-case.js":120,"global/window":2,"object.assign":44}],53:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("./play-toggle.js"),j=(d(i),a("./time-controls/current-time-display.js")),k=(d(j),a("./time-controls/duration-display.js")),l=(d(k),a("./time-controls/time-divider.js")),m=(d(l),a("./time-controls/remaining-time-display.js")),n=(d(m),a("./live-display.js")),o=(d(n),a("./progress-control/progress-control.js")),p=(d(o),a("./fullscreen-toggle.js")),q=(d(p),a("./volume-control/volume-control.js")),r=(d(q),a("./volume-menu-button.js")),s=(d(r),a("./mute-toggle.js")),t=(d(s),a("./text-track-controls/chapters-button.js")),u=(d(t),a("./text-track-controls/subtitles-button.js")),v=(d(u),a("./text-track-controls/captions-button.js")),w=(d(v),a("./playback-rate-menu/playback-rate-menu-button.js")),x=(d(w),a("./spacer-controls/custom-control-spacer.js")),y=(d(x),function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-control-bar"})},b}(h["default"]));y.prototype.options_={loadEvent:"play",children:["playToggle","volumeMenuButton","currentTimeDisplay","timeDivider","durationDisplay","progressControl","liveDisplay","remainingTimeDisplay","customControlSpacer","playbackRateMenuButton","muteToggle","volumeControl","chaptersButton","subtitlesButton","captionsButton","fullscreenToggle"] -},h["default"].registerComponent("ControlBar",y),c["default"]=y,b.exports=c["default"]},{"../component.js":52,"./fullscreen-toggle.js":54,"./live-display.js":55,"./mute-toggle.js":56,"./play-toggle.js":57,"./playback-rate-menu/playback-rate-menu-button.js":58,"./progress-control/progress-control.js":62,"./spacer-controls/custom-control-spacer.js":64,"./text-track-controls/captions-button.js":67,"./text-track-controls/chapters-button.js":68,"./text-track-controls/subtitles-button.js":71,"./time-controls/current-time-display.js":74,"./time-controls/duration-display.js":75,"./time-controls/remaining-time-display.js":76,"./time-controls/time-divider.js":77,"./volume-control/volume-control.js":79,"./volume-menu-button.js":81}],54:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-fullscreen-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.isFullscreen()?(this.player_.exitFullscreen(),this.controlText("Fullscreen")):(this.player_.requestFullscreen(),this.controlText("Non-Fullscreen"))},b}(h["default"]);k.prototype.controlText_="Fullscreen",j["default"].registerComponent("FullscreenToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":51,"../component.js":52}],55:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-live-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-live-display",innerHTML:''+this.localize("Stream Type")+""+this.localize("LIVE"),"aria-live":"off"}),b.appendChild(this.contentEl_),b},b}(h["default"]);h["default"].registerComponent("LiveDisplay",k),c["default"]=k,b.exports=c["default"]},{"../component":52,"../utils/dom.js":111}],56:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button"),h=d(g),i=a("../component"),j=d(i),k=a("../utils/dom.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"volumechange",this.update),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){this.update(),c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-mute-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.muted(this.player_.muted()?!1:!0)},b.prototype.update=function(){var a=this.player_.volume(),b=3;0===a||this.player_.muted()?b=0:.33>a?b=1:.67>a&&(b=2);var c=this.player_.muted()?"Unmute":"Mute",d=this.localize(c);this.controlText()!==d&&this.controlText(d);for(var e=0;4>e;e++)l.removeElClass(this.el_,"vjs-vol-"+e);l.addElClass(this.el_,"vjs-vol-"+b)},b}(h["default"]);m.prototype.controlText_="Mute",j["default"].registerComponent("MuteToggle",m),c["default"]=m,b.exports=c["default"]},{"../button":51,"../component":52,"../utils/dom.js":111}],57:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"play",this.handlePlay),this.on(c,"pause",this.handlePause)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-play-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b.prototype.handlePlay=function(){this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")},b.prototype.handlePause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")},b}(h["default"]);k.prototype.controlText_="Play",j["default"].registerComponent("PlayToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":51,"../component.js":52}],58:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-button.js"),h=d(g),i=a("../../menu/menu.js"),j=d(i),k=a("./playback-rate-menu-item.js"),l=d(k),m=a("../../component.js"),n=d(m),o=a("../../utils/dom.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.updateVisibility(),this.updateLabel(),this.on(c,"loadstart",this.updateVisibility),this.on(c,"ratechange",this.updateLabel)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this);return this.labelEl_=p.createEl("div",{className:"vjs-playback-rate-value",innerHTML:1}),b.appendChild(this.labelEl_),b},b.prototype.buildCSSClass=function(){return"vjs-playback-rate "+a.prototype.buildCSSClass.call(this)},b.prototype.createMenu=function(){var a=new j["default"](this.player()),b=this.playbackRates();if(b)for(var c=b.length-1;c>=0;c--)a.addChild(new l["default"](this.player(),{rate:b[c]+"x"}));return a},b.prototype.updateARIAAttributes=function(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},b.prototype.handleClick=function(){for(var a=this.player().playbackRate(),b=this.playbackRates(),c=b[0],d=0;da){c=b[d];break}this.player().playbackRate(c)},b.prototype.playbackRates=function(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates},b.prototype.playbackRateSupported=function(){return this.player().tech&&this.player().tech.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0},b.prototype.updateVisibility=function(){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},b.prototype.updateLabel=function(){this.playbackRateSupported()&&(this.labelEl_.innerHTML=this.player().playbackRate()+"x")},b}(h["default"]);q.prototype.controlText_="Playback Rate",n["default"].registerComponent("PlaybackRateMenuButton",q),c["default"]=q,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu-button.js":88,"../../menu/menu.js":90,"../../utils/dom.js":111,"./playback-rate-menu-item.js":59}],59:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b);var f=d.rate,g=parseFloat(f,10);d.label=f,d.selected=1===g,a.call(this,c,d),this.label=f,this.rate=g,this.on(c,"ratechange",this.update)}return f(b,a),b.prototype.handleClick=function(){a.prototype.handleClick.call(this),this.player().playbackRate(this.rate)},b.prototype.update=function(){this.selected(this.player().playbackRate()===this.rate)},b}(h["default"]);k.prototype.contentElType="button",j["default"].registerComponent("PlaybackRateMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu-item.js":89}],60:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"progress",this.update)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-load-progress",innerHTML:''+this.localize("Loaded")+": 0%"})},b.prototype.update=function(){var a=this.player_.buffered(),b=this.player_.duration(),c=this.player_.bufferedEnd(),d=this.el_.children,e=function(a,b){var c=a/b||0;return 100*(c>=1?1:c)+"%"};this.el_.style.width=e(c,b);for(var f=0;fa.length;f--)this.el_.removeChild(d[f-1])},b}(h["default"]);h["default"].registerComponent("LoadProgressBar",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111}],61:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/fn.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateDataAttr),c.ready(j.bind(this,this.updateDataAttr))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-play-progress",innerHTML:''+this.localize("Progress")+": 0%"})},b.prototype.updateDataAttr=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("data-current-time",l["default"](a,this.player_.duration()))},b}(h["default"]);h["default"].registerComponent("PlayProgressBar",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/fn.js":113,"../../utils/format-time.js":114}],62:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./seek-bar.js"),j=(d(i),function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{seekBar:{}}},h["default"].registerComponent("ProgressControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":52,"./seek-bar.js":63}],63:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../slider/slider.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./load-progress-bar.js"),l=(d(k),a("./play-progress-bar.js")),m=(d(l),a("../../utils/fn.js")),n=d(m),o=a("../../utils/format-time.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateARIAAttributes),c.ready(n.bind(this,this.updateARIAAttributes))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})},b.prototype.updateARIAAttributes=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("aria-valuenow",(100*this.getPercent()).toFixed(2)),this.el_.setAttribute("aria-valuetext",p["default"](a,this.player_.duration()))},b.prototype.getPercent=function(){var a=this.player_.currentTime()/this.player_.duration();return a>=1?1:a},b.prototype.handleMouseDown=function(b){a.prototype.handleMouseDown.call(this,b),this.player_.scrubbing(!0),this.videoWasPlaying=!this.player_.paused(),this.player_.pause()},b.prototype.handleMouseMove=function(a){var b=this.calculateDistance(a)*this.player_.duration();b===this.player_.duration()&&(b-=.1),this.player_.currentTime(b)},b.prototype.handleMouseUp=function(b){a.prototype.handleMouseUp.call(this,b),this.player_.scrubbing(!1),this.videoWasPlaying&&this.player_.play()},b.prototype.stepForward=function(){this.player_.currentTime(this.player_.currentTime()+5)},b.prototype.stepBack=function(){this.player_.currentTime(this.player_.currentTime()-5)},b}(h["default"]);q.prototype.options_={children:{loadProgressBar:{},playProgressBar:{}},barName:"playProgressBar"},q.prototype.playerEvent="timeupdate",j["default"].registerComponent("SeekBar",q),c["default"]=q,b.exports=c["default"]},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"../../utils/format-time.js":114,"./load-progress-bar.js":60,"./play-progress-bar.js":61}],64:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./spacer.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-custom-control-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,{className:this.buildCSSClass()})},b}(h["default"]);j["default"].registerComponent("CustomControlSpacer",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./spacer.js":65}],65:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:this.buildCSSClass()})},b}(h["default"]);h["default"].registerComponent("Spacer",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],66:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),d.track={kind:d.kind,player:c,label:d.kind+" settings","default":!1,mode:"disabled"},a.call(this,c,d),this.addClass("vjs-texttrack-settings")}return f(b,a),b.prototype.handleClick=function(){this.player().getChild("textTrackSettings").show()},b}(h["default"]);j["default"].registerComponent("CaptionSettingsMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-menu-item.js":73}],67:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./caption-settings-menu-item.js"),l=d(k),m=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Captions Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-captions-button "+a.prototype.buildCSSClass.call(this)},b.prototype.update=function(){var b=2;a.prototype.update.call(this),this.player().tech&&this.player().tech.featuresNativeTextTracks&&(b=1),this.items&&this.items.length>b?this.show():this.hide()},b.prototype.createItems=function(){var b=[];return this.player().tech&&this.player().tech.featuresNativeTextTracks||b.push(new l["default"](this.player_,{kind:this.kind_})),a.prototype.createItems.call(this,b)},b}(h["default"]);m.prototype.kind_="captions",m.prototype.controlText_="Captions",j["default"].registerComponent("CaptionsButton",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"./caption-settings-menu-item.js":66,"./text-track-button.js":72}],68:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./text-track-menu-item.js"),l=d(k),m=a("./chapters-track-menu-item.js"),n=d(m),o=a("../../menu/menu.js"),p=d(o),q=a("../../utils/dom.js"),r=d(q),s=a("../../utils/fn.js"),t=d(s),u=a("../../utils/to-title-case.js"),v=d(u),w=a("global/window"),x=d(w),y=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Chapters Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-chapters-button "+a.prototype.buildCSSClass.call(this)},b.prototype.createItems=function(){var a=[],b=this.player_.textTracks();if(!b)return a;for(var c=0;cd;d++){var f=a[d];if(f.kind===this.kind_){if(f.cues){b=f;break}f.mode="hidden",x["default"].setTimeout(t.bind(this,function(){this.createMenu()}),100)}}var g=this.menu;if(void 0===g&&(g=new p["default"](this.player_),g.contentEl().appendChild(r.createEl("li",{className:"vjs-menu-title",innerHTML:v["default"](this.kind_),tabIndex:-1}))),b){for(var h=b.cues,i=void 0,d=0,e=h.length;e>d;d++){i=h[d];var j=new n["default"](this.player_,{track:b,cue:i});c.push(j),g.addChild(j)}this.addChild(g)}return this.items.length>0&&this.show(),g},b}(h["default"]);y.prototype.kind_="chapters",y.prototype.controlText_="Chapters",j["default"].registerComponent("ChaptersButton",y),c["default"]=y,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu.js":90,"../../utils/dom.js":111,"../../utils/fn.js":113,"../../utils/to-title-case.js":120,"./chapters-track-menu-item.js":69,"./text-track-button.js":72,"./text-track-menu-item.js":73,"global/window":2}],69:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=function(a){function b(c,d){e(this,b);var f=d.track,g=d.cue,h=c.currentTime();d.label=g.text,d.selected=g.startTime<=h&&hc;c++){var e=a[c];if(e.kind===this.track.kind&&"showing"===e.mode){b=!1;break}}this.selected(b)},b}(h["default"]);j["default"].registerComponent("OffTextTrackMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-menu-item.js":73}],71:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Subtitles Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-subtitles-button "+a.prototype.buildCSSClass.call(this)},b}(h["default"]);k.prototype.kind_="subtitles",k.prototype.controlText_="Subtitles",j["default"].registerComponent("SubtitlesButton",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-button.js":72}],72:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=a("./text-track-menu-item.js"),n=d(m),o=a("./off-text-track-menu-item.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d);var f=this.player_.textTracks();if(this.items.length<=1&&this.hide(),f){var g=l.bind(this,this.update);f.addEventListener("removetrack",g),f.addEventListener("addtrack",g),this.player_.on("dispose",function(){f.removeEventListener("removetrack",g),f.removeEventListener("addtrack",g)})}}return f(b,a),b.prototype.createItems=function(){var a=void 0===arguments[0]?[]:arguments[0];a.push(new p["default"](this.player_,{kind:this.kind_}));var b=this.player_.textTracks();if(!b)return a;for(var c=0;cCurrent Time 0:00',"aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),b=this.localize("Current Time"),c=l["default"](a,this.player_.duration());this.contentEl_.innerHTML=''+b+" "+c},b}(h["default"]);h["default"].registerComponent("CurrentTimeDisplay",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],75:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent),this.on(c,"loadedmetadata",this.updateContent)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-duration vjs-time-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-duration-display",innerHTML:''+this.localize("Duration Time")+" 0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.duration();if(a){var b=this.localize("Duration Time"),c=l["default"](a);this.contentEl_.innerHTML=''+b+" "+c}},b}(h["default"]);h["default"].registerComponent("DurationDisplay",m),c["default"]=m,b.exports=c["default"]; +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.videojs=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g2?c[g-2]:void 0,i=g>2?c[2]:void 0,j=g>1?c[g-1]:void 0;for("function"==typeof h?(h=d(h,j,5),g-=2):(h="function"==typeof j?j:void 0,g-=h?1:0),i&&e(c[0],c[1],i)&&(h=3>g?void 0:h,g=1);++f-1&&a%1==0&&b>a}var d=/^\d+$/,e=9007199254740991;b.exports=c},{}],21:[function(a,b){function c(a,b,c){if(!f(c))return!1;var g=typeof b;if("number"==g?d(c)&&e(b,c.length):"string"==g&&b in c){var h=c[b];return a===a?a===h:h!==h}return!1}var d=a("./isArrayLike"),e=a("./isIndex"),f=a("../lang/isObject");b.exports=c},{"../lang/isObject":30,"./isArrayLike":18,"./isIndex":20}],22:[function(a,b){function c(a){return"number"==typeof a&&a>-1&&a%1==0&&d>=a}var d=9007199254740991;b.exports=c},{}],23:[function(a,b){function c(a){return!!a&&"object"==typeof a}b.exports=c},{}],24:[function(a,b){function c(a){for(var b=i(a),c=b.length,j=c&&a.length,l=!!j&&g(j)&&(e(a)||d(a)||h(a)),m=-1,n=[];++m0,r=l.enumErrorProps&&(a===w||a instanceof Error),t=l.enumPrototypes&&g(a);++d2?arguments[2]:{},g=c(b);e&&(g=g.concat(Object.getOwnPropertySymbols(b))),d(g,function(c){j(a,c,b[c],f[c])})};k.supportsDescriptors=!!i,b.exports=k},{foreach:42,"object-keys":43}],42:[function(a,b){var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString;b.exports=function(a,b,e){if("[object Function]"!==d.call(b))throw new TypeError("iterator must be a function");var f=a.length;if(f===+f)for(var g=0;f>g;g++)b.call(e,a[g],g,a);else for(var h in a)c.call(a,h)&&b.call(e,a[h],h,a)}},{}],43:[function(a,b){"use strict";var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString,e=Array.prototype.slice,f=a("./isArguments"),g=!{toString:null}.propertyIsEnumerable("toString"),h=function(){}.propertyIsEnumerable("prototype"),i=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],j=function(a){var b=a.constructor;return b&&b.prototype===a},k={$window:!0,$console:!0,$parent:!0,$self:!0,$frames:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0},l=function(){if("undefined"==typeof window)return!1;for(var a in window)if(!k["$"+a]&&c.call(window,a)&&null!==window[a]&&"object"==typeof window[a])try{j(window[a])}catch(b){return!0}return!1}(),m=function(a){if("undefined"==typeof window&&!l)return j(a);try{return j(a)}catch(b){return!1}},n=function(a){var b=null!==a&&"object"==typeof a,e="[object Function]"===d.call(a),j=f(a),k=b&&"[object String]"===d.call(a),l=[];if(!b&&!e&&!j)throw new TypeError("Object.keys called on a non-object");var n=h&&e;if(k&&a.length>0&&!c.call(a,0))for(var o=0;o0)for(var p=0;p=0&&"[object Function]"===c.call(a.callee)),d}},{}],45:[function(a,b){function c(a,b){var c,d=null;try{c=JSON.parse(a,b)}catch(e){d=e}return[d,c]}b.exports=c},{}],46:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-big-play-button"},b.prototype.handleClick=function(){this.player_.play()},b}(h["default"]);k.prototype.controlText_="Play Video",j["default"].registerComponent("BigPlayButton",k),c["default"]=k,b.exports=c["default"]},{"./button.js":47,"./component.js":48}],47:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component"),i=e(h),j=a("./utils/dom.js"),k=d(j),l=a("./utils/events.js"),m=d(l),n=a("./utils/fn.js"),o=d(n),p=a("global/document"),q=e(p),r=a("object.assign"),s=e(r),t=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.emitTapEvents(),this.on("tap",this.handleClick),this.on("click",this.handleClick),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur)}return g(b,a),b.prototype.createEl=function(){var b=arguments.length<=0||void 0===arguments[0]?"button":arguments[0],c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];c=s["default"]({className:this.buildCSSClass(),role:"button",type:"button","aria-live":"polite",tabIndex:0},c);var d=a.prototype.createEl.call(this,b,c);return this.controlTextEl_=k.createEl("span",{className:"vjs-control-text"}),d.appendChild(this.controlTextEl_),this.controlText(this.controlText_),d},b.prototype.controlText=function(a){return a?(this.controlText_=a,this.controlTextEl_.innerHTML=this.localize(this.controlText_),this):this.controlText_||"Need Text"},b.prototype.buildCSSClass=function(){return"vjs-control vjs-button "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){},b.prototype.handleFocus=function(){m.on(q["default"],"keydown",o.bind(this,this.handleKeyPress))},b.prototype.handleKeyPress=function(a){(32===a.which||13===a.which)&&(a.preventDefault(),this.handleClick())},b.prototype.handleBlur=function(){m.off(q["default"],"keydown",o.bind(this,this.handleKeyPress))},b}(i["default"]);i["default"].registerComponent("Button",t),c["default"]=t,b.exports=c["default"]},{"./component":48,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"global/document":1,"object.assign":40}],48:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}c.__esModule=!0;var g=a("global/window"),h=e(g),i=a("./utils/dom.js"),j=d(i),k=a("./utils/fn.js"),l=d(k),m=a("./utils/guid.js"),n=d(m),o=a("./utils/events.js"),p=d(o),q=a("./utils/log.js"),r=e(q),s=a("./utils/to-title-case.js"),t=e(s),u=a("object.assign"),v=e(u),w=a("./utils/merge-options.js"),x=e(w),y=function(){function a(b,c,d){if(f(this,a),this.player_=!b&&this.play?b=this:b,this.options_=x["default"]({},this.options_),c=this.options_=x["default"](this.options_,c),this.id_=c.id||c.el&&c.el.id,!this.id_){var e=b&&b.id&&b.id()||"no_player";this.id_=e+"_component_"+n.newGUID()}this.name_=c.name||null,c.el?this.el_=c.el:c.createEl!==!1&&(this.el_=this.createEl()),this.children_=[],this.childIndex_={},this.childNameIndex_={},c.initChildren!==!1&&this.initChildren(),this.ready(d),c.reportTouchActivity!==!1&&this.enableTouchActivity()}return a.prototype.dispose=function(){if(this.trigger({type:"dispose",bubbles:!1}),this.children_)for(var a=this.children_.length-1;a>=0;a--)this.children_[a].dispose&&this.children_[a].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.off(),this.el_.parentNode&&this.el_.parentNode.removeChild(this.el_),j.removeElData(this.el_),this.el_=null},a.prototype.player=function(){return this.player_},a.prototype.options=function(a){return r["default"].warn("this.options() has been deprecated and will be moved to the constructor in 6.0"),a?(this.options_=x["default"](this.options_,a),this.options_):this.options_},a.prototype.el=function(){return this.el_},a.prototype.createEl=function(a,b){return j.createEl(a,b)},a.prototype.localize=function(a){var b=this.player_.language&&this.player_.language(),c=this.player_.languages&&this.player_.languages();if(!b||!c)return a;var d=c[b];if(d&&d[a])return d[a];var e=b.split("-")[0],f=c[e];return f&&f[a]?f[a]:a},a.prototype.contentEl=function(){return this.contentEl_||this.el_},a.prototype.id=function(){return this.id_},a.prototype.name=function(){return this.name_},a.prototype.children=function(){return this.children_},a.prototype.getChildById=function(a){return this.childIndex_[a]},a.prototype.getChild=function(a){return this.childNameIndex_[a]},a.prototype.addChild=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],d=void 0,e=void 0;if("string"==typeof b){e=b,c||(c={}),c===!0&&(r["default"].warn("Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`."),c={});var f=c.componentClass||t["default"](e);c.name=e;var g=a.getComponent(f);d=new g(this.player_||this,c)}else d=b;return this.children_.push(d),"function"==typeof d.id&&(this.childIndex_[d.id()]=d),e=e||d.name&&d.name(),e&&(this.childNameIndex_[e]=d),"function"==typeof d.el&&d.el()&&this.contentEl().appendChild(d.el()),d},a.prototype.removeChild=function(a){if("string"==typeof a&&(a=this.getChild(a)),a&&this.children_){for(var b=!1,c=this.children_.length-1;c>=0;c--)if(this.children_[c]===a){b=!0,this.children_.splice(c,1);break}if(b){this.childIndex_[a.id()]=null,this.childNameIndex_[a.name()]=null;var d=a.el();d&&d.parentNode===this.contentEl()&&this.contentEl().removeChild(a.el())}}},a.prototype.initChildren=function(){var a=this,b=this.options_.children;b&&!function(){var c=a.options_,d=function(b,d){void 0!==c[b]&&(d=c[b]),d!==!1&&(d===!0&&(d={}),d.playerOptions=a.options_.playerOptions,a[b]=a.addChild(b,d))};if(Array.isArray(b))for(var e=0;e0&&(a.forEach(function(a){a.call(this)},this),this.readyQueue_=[]),this.trigger("ready")},1)},a.prototype.hasClass=function(a){return j.hasElClass(this.el_,a)},a.prototype.addClass=function(a){return j.addElClass(this.el_,a),this},a.prototype.removeClass=function(a){return j.removeElClass(this.el_,a),this},a.prototype.show=function(){return this.removeClass("vjs-hidden"),this},a.prototype.hide=function(){return this.addClass("vjs-hidden"),this},a.prototype.lockShowing=function(){return this.addClass("vjs-lock-showing"),this},a.prototype.unlockShowing=function(){return this.removeClass("vjs-lock-showing"),this},a.prototype.width=function(a,b){return this.dimension("width",a,b)},a.prototype.height=function(a,b){return this.dimension("height",a,b)},a.prototype.dimensions=function(a,b){return this.width(a,!0).height(b)},a.prototype.dimension=function(a,b,c){if(void 0!==b)return(null===b||b!==b)&&(b=0),this.el_.style[a]=-1!==(""+b).indexOf("%")||-1!==(""+b).indexOf("px")?b:"auto"===b?"":b+"px",c||this.trigger("resize"),this;if(!this.el_)return 0;var d=this.el_.style[a],e=d.indexOf("px");return-1!==e?parseInt(d.slice(0,e),10):parseInt(this.el_["offset"+t["default"](a)],10)},a.prototype.emitTapEvents=function(){var a=0,b=null,c=10,d=200,e=void 0;this.on("touchstart",function(c){1===c.touches.length&&(b=v["default"]({},c.touches[0]),a=(new Date).getTime(),e=!0)}),this.on("touchmove",function(a){if(a.touches.length>1)e=!1;else if(b){var d=a.touches[0].pageX-b.pageX,f=a.touches[0].pageY-b.pageY,g=Math.sqrt(d*d+f*f);g>c&&(e=!1)}});var f=function(){e=!1};this.on("touchleave",f),this.on("touchcancel",f),this.on("touchend",function(c){if(b=null,e===!0){var f=(new Date).getTime()-a;d>f&&(c.preventDefault(),this.trigger("tap"))}})},a.prototype.enableTouchActivity=function(){if(this.player()&&this.player().reportUserActivity){var a=l.bind(this.player(),this.player().reportUserActivity),b=void 0;this.on("touchstart",function(){a(),this.clearInterval(b),b=this.setInterval(a,250)});var c=function(){a(),this.clearInterval(b)};this.on("touchmove",a),this.on("touchend",c),this.on("touchcancel",c)}},a.prototype.setTimeout=function(a,b){a=l.bind(this,a);var c=h["default"].setTimeout(a,b),d=function(){this.clearTimeout(c)};return d.guid="vjs-timeout-"+c,this.on("dispose",d),c},a.prototype.clearTimeout=function(a){h["default"].clearTimeout(a);var b=function(){};return b.guid="vjs-timeout-"+a,this.off("dispose",b),a},a.prototype.setInterval=function(a,b){a=l.bind(this,a);var c=h["default"].setInterval(a,b),d=function(){this.clearInterval(c)};return d.guid="vjs-interval-"+c,this.on("dispose",d),c},a.prototype.clearInterval=function(a){h["default"].clearInterval(a);var b=function(){};return b.guid="vjs-interval-"+a,this.off("dispose",b),a},a.registerComponent=function(b,c){return a.components_||(a.components_={}),a.components_[b]=c,c},a.getComponent=function(b){return a.components_&&a.components_[b]?a.components_[b]:h["default"]&&h["default"].videojs&&h["default"].videojs[b]?(r["default"].warn("The "+b+" component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)"),h["default"].videojs[b]):void 0},a.extend=function(b){b=b||{},r["default"].warn("Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead");var c=b.init||b.init||this.prototype.init||this.prototype.init||function(){},d=function(){c.apply(this,arguments)};d.prototype=Object.create(this.prototype),d.prototype.constructor=d,d.extend=a.extend;for(var e in b)b.hasOwnProperty(e)&&(d.prototype[e]=b[e]);return d},a}();y.registerComponent("Component",y),c["default"]=y,b.exports=c["default"]},{"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/to-title-case.js":116,"global/window":2,"object.assign":40}],49:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("./play-toggle.js"),j=(d(i),a("./time-controls/current-time-display.js")),k=(d(j),a("./time-controls/duration-display.js")),l=(d(k),a("./time-controls/time-divider.js")),m=(d(l),a("./time-controls/remaining-time-display.js")),n=(d(m),a("./live-display.js")),o=(d(n),a("./progress-control/progress-control.js")),p=(d(o),a("./fullscreen-toggle.js")),q=(d(p),a("./volume-control/volume-control.js")),r=(d(q),a("./volume-menu-button.js")),s=(d(r),a("./mute-toggle.js")),t=(d(s),a("./text-track-controls/chapters-button.js")),u=(d(t),a("./text-track-controls/subtitles-button.js")),v=(d(u),a("./text-track-controls/captions-button.js")),w=(d(v),a("./playback-rate-menu/playback-rate-menu-button.js")),x=(d(w),a("./spacer-controls/custom-control-spacer.js")),y=(d(x),function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-control-bar"})},b}(h["default"]));y.prototype.options_={loadEvent:"play",children:["playToggle","volumeMenuButton","currentTimeDisplay","timeDivider","durationDisplay","progressControl","liveDisplay","remainingTimeDisplay","customControlSpacer","playbackRateMenuButton","muteToggle","volumeControl","chaptersButton","subtitlesButton","captionsButton","fullscreenToggle"]},h["default"].registerComponent("ControlBar",y),c["default"]=y,b.exports=c["default"]},{"../component.js":48,"./fullscreen-toggle.js":50,"./live-display.js":51,"./mute-toggle.js":52,"./play-toggle.js":53,"./playback-rate-menu/playback-rate-menu-button.js":54,"./progress-control/progress-control.js":58,"./spacer-controls/custom-control-spacer.js":60,"./text-track-controls/captions-button.js":63, +"./text-track-controls/chapters-button.js":64,"./text-track-controls/subtitles-button.js":67,"./time-controls/current-time-display.js":70,"./time-controls/duration-display.js":71,"./time-controls/remaining-time-display.js":72,"./time-controls/time-divider.js":73,"./volume-control/volume-control.js":75,"./volume-menu-button.js":77}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-fullscreen-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.isFullscreen()?(this.player_.exitFullscreen(),this.controlText("Fullscreen")):(this.player_.requestFullscreen(),this.controlText("Non-Fullscreen"))},b}(h["default"]);k.prototype.controlText_="Fullscreen",j["default"].registerComponent("FullscreenToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":47,"../component.js":48}],51:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=function(a){function b(){f(this,b),a.apply(this,arguments)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-live-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-live-display",innerHTML:''+this.localize("Stream Type")+""+this.localize("LIVE"),"aria-live":"off"}),b.appendChild(this.contentEl_),b},b}(i["default"]);i["default"].registerComponent("LiveDisplay",l),c["default"]=l,b.exports=c["default"]},{"../component":48,"../utils/dom.js":107}],52:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../button"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"volumechange",this.update),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){this.update(),c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return g(b,a),b.prototype.buildCSSClass=function(){return"vjs-mute-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.muted(this.player_.muted()?!1:!0)},b.prototype.update=function(){var a=this.player_.volume(),b=3;0===a||this.player_.muted()?b=0:.33>a?b=1:.67>a&&(b=2);var c=this.player_.muted()?"Unmute":"Mute",d=this.localize(c);this.controlText()!==d&&this.controlText(d);for(var e=0;4>e;e++)m.removeElClass(this.el_,"vjs-vol-"+e);m.addElClass(this.el_,"vjs-vol-"+b)},b}(i["default"]);n.prototype.controlText_="Mute",k["default"].registerComponent("MuteToggle",n),c["default"]=n,b.exports=c["default"]},{"../button":47,"../component":48,"../utils/dom.js":107}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"play",this.handlePlay),this.on(c,"pause",this.handlePause)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-play-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b.prototype.handlePlay=function(){this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")},b.prototype.handlePause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")},b}(h["default"]);k.prototype.controlText_="Play",j["default"].registerComponent("PlayToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":47,"../component.js":48}],54:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-button.js"),i=e(h),j=a("../../menu/menu.js"),k=e(j),l=a("./playback-rate-menu-item.js"),m=e(l),n=a("../../component.js"),o=e(n),p=a("../../utils/dom.js"),q=d(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.updateVisibility(),this.updateLabel(),this.on(c,"loadstart",this.updateVisibility),this.on(c,"ratechange",this.updateLabel)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this);return this.labelEl_=q.createEl("div",{className:"vjs-playback-rate-value",innerHTML:1}),b.appendChild(this.labelEl_),b},b.prototype.buildCSSClass=function(){return"vjs-playback-rate "+a.prototype.buildCSSClass.call(this)},b.prototype.createMenu=function(){var a=new k["default"](this.player()),b=this.playbackRates();if(b)for(var c=b.length-1;c>=0;c--)a.addChild(new m["default"](this.player(),{rate:b[c]+"x"}));return a},b.prototype.updateARIAAttributes=function(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},b.prototype.handleClick=function(){for(var a=this.player().playbackRate(),b=this.playbackRates(),c=b[0],d=0;da){c=b[d];break}this.player().playbackRate(c)},b.prototype.playbackRates=function(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates},b.prototype.playbackRateSupported=function(){return this.player().tech&&this.player().tech.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0},b.prototype.updateVisibility=function(){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},b.prototype.updateLabel=function(){this.playbackRateSupported()&&(this.labelEl_.innerHTML=this.player().playbackRate()+"x")},b}(i["default"]);r.prototype.controlText_="Playback Rate",o["default"].registerComponent("PlaybackRateMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu-button.js":84,"../../menu/menu.js":86,"../../utils/dom.js":107,"./playback-rate-menu-item.js":55}],55:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b);var f=d.rate,g=parseFloat(f,10);d.label=f,d.selected=1===g,a.call(this,c,d),this.label=f,this.rate=g,this.on(c,"ratechange",this.update)}return f(b,a),b.prototype.handleClick=function(){a.prototype.handleClick.call(this),this.player().playbackRate(this.rate)},b.prototype.update=function(){this.selected(this.player().playbackRate()===this.rate)},b}(h["default"]);k.prototype.contentElType="button",j["default"].registerComponent("PlaybackRateMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu-item.js":85}],56:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"progress",this.update)}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-load-progress",innerHTML:''+this.localize("Loaded")+": 0%"})},b.prototype.update=function(){var a=this.player_.buffered(),b=this.player_.duration(),c=this.player_.bufferedEnd(),d=this.el_.children,e=function(a,b){var c=a/b||0;return 100*(c>=1?1:c)+"%"};this.el_.style.width=e(c,b);for(var f=0;fa.length;f--)this.el_.removeChild(d[f-1])},b}(i["default"]);i["default"].registerComponent("LoadProgressBar",l),c["default"]=l,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107}],57:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/fn.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateDataAttr),c.ready(k.bind(this,this.updateDataAttr))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-play-progress",innerHTML:''+this.localize("Progress")+": 0%"})},b.prototype.updateDataAttr=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("data-current-time",m["default"](a,this.player_.duration()))},b}(i["default"]);i["default"].registerComponent("PlayProgressBar",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/fn.js":109,"../../utils/format-time.js":110}],58:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./seek-bar.js"),j=(d(i),function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{seekBar:{}}},h["default"].registerComponent("ProgressControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":48,"./seek-bar.js":59}],59:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../slider/slider.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("./load-progress-bar.js"),m=(e(l),a("./play-progress-bar.js")),n=(e(m),a("../../utils/fn.js")),o=d(n),p=a("../../utils/format-time.js"),q=e(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateARIAAttributes),c.ready(o.bind(this,this.updateARIAAttributes))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})},b.prototype.updateARIAAttributes=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("aria-valuenow",(100*this.getPercent()).toFixed(2)),this.el_.setAttribute("aria-valuetext",q["default"](a,this.player_.duration()))},b.prototype.getPercent=function(){var a=this.player_.currentTime()/this.player_.duration();return a>=1?1:a},b.prototype.handleMouseDown=function(b){a.prototype.handleMouseDown.call(this,b),this.player_.scrubbing(!0),this.videoWasPlaying=!this.player_.paused(),this.player_.pause()},b.prototype.handleMouseMove=function(a){var b=this.calculateDistance(a)*this.player_.duration();b===this.player_.duration()&&(b-=.1),this.player_.currentTime(b)},b.prototype.handleMouseUp=function(b){a.prototype.handleMouseUp.call(this,b),this.player_.scrubbing(!1),this.videoWasPlaying&&this.player_.play()},b.prototype.stepForward=function(){this.player_.currentTime(this.player_.currentTime()+5)},b.prototype.stepBack=function(){this.player_.currentTime(this.player_.currentTime()-5)},b}(i["default"]);r.prototype.options_={children:{loadProgressBar:{},playProgressBar:{}},barName:"playProgressBar"},r.prototype.playerEvent="timeupdate",k["default"].registerComponent("SeekBar",r),c["default"]=r,b.exports=c["default"]},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"../../utils/format-time.js":110,"./load-progress-bar.js":56,"./play-progress-bar.js":57}],60:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./spacer.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-custom-control-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,{className:this.buildCSSClass()})},b}(h["default"]);j["default"].registerComponent("CustomControlSpacer",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./spacer.js":61}],61:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:this.buildCSSClass()})},b}(h["default"]);h["default"].registerComponent("Spacer",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],62:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),d.track={kind:d.kind,player:c,label:d.kind+" settings","default":!1,mode:"disabled"},a.call(this,c,d),this.addClass("vjs-texttrack-settings")}return f(b,a),b.prototype.handleClick=function(){this.player().getChild("textTrackSettings").show()},b}(h["default"]);j["default"].registerComponent("CaptionSettingsMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-menu-item.js":69}],63:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./caption-settings-menu-item.js"),l=d(k),m=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Captions Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-captions-button "+a.prototype.buildCSSClass.call(this)},b.prototype.update=function(){var b=2;a.prototype.update.call(this),this.player().tech&&this.player().tech.featuresNativeTextTracks&&(b=1),this.items&&this.items.length>b?this.show():this.hide()},b.prototype.createItems=function(){var b=[];return this.player().tech&&this.player().tech.featuresNativeTextTracks||b.push(new l["default"](this.player_,{kind:this.kind_})),a.prototype.createItems.call(this,b)},b}(h["default"]);m.prototype.kind_="captions",m.prototype.controlText_="Captions",j["default"].registerComponent("CaptionsButton",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":48,"./caption-settings-menu-item.js":62,"./text-track-button.js":68}],64:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./text-track-button.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("./text-track-menu-item.js"),m=e(l),n=a("./chapters-track-menu-item.js"),o=e(n),p=a("../../menu/menu.js"),q=e(p),r=a("../../utils/dom.js"),s=d(r),t=a("../../utils/fn.js"),u=d(t),v=a("../../utils/to-title-case.js"),w=e(v),x=a("global/window"),y=e(x),z=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),this.el_.setAttribute("aria-label","Chapters Menu")}return g(b,a),b.prototype.buildCSSClass=function(){return"vjs-chapters-button "+a.prototype.buildCSSClass.call(this)},b.prototype.createItems=function(){var a=[],b=this.player_.textTracks();if(!b)return a;for(var c=0;cd;d++){var f=a[d];if(f.kind===this.kind_){if(f.cues){b=f;break}f.mode="hidden",y["default"].setTimeout(u.bind(this,function(){this.createMenu()}),100)}}var g=this.menu;if(void 0===g&&(g=new q["default"](this.player_),g.contentEl().appendChild(s.createEl("li",{className:"vjs-menu-title",innerHTML:w["default"](this.kind_),tabIndex:-1}))),b){for(var h=b.cues,i=void 0,d=0,e=h.length;e>d;d++){i=h[d];var j=new o["default"](this.player_,{track:b,cue:i});c.push(j),g.addChild(j)}this.addChild(g)}return this.items.length>0&&this.show(),g},b}(i["default"]);z.prototype.kind_="chapters",z.prototype.controlText_="Chapters",k["default"].registerComponent("ChaptersButton",z),c["default"]=z,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu.js":86,"../../utils/dom.js":107,"../../utils/fn.js":109,"../../utils/to-title-case.js":116,"./chapters-track-menu-item.js":65,"./text-track-button.js":68,"./text-track-menu-item.js":69,"global/window":2}],65:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-item.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=function(a){function b(c,d){f(this,b);var e=d.track,g=d.cue,h=c.currentTime();d.label=g.text,d.selected=g.startTime<=h&&hc;c++){var e=a[c];if(e.kind===this.track.kind&&"showing"===e.mode){b=!1;break}}this.selected(b)},b}(h["default"]);j["default"].registerComponent("OffTextTrackMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-menu-item.js":69}],67:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Subtitles Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-subtitles-button "+a.prototype.buildCSSClass.call(this)},b}(h["default"]);k.prototype.kind_="subtitles",k.prototype.controlText_="Subtitles",j["default"].registerComponent("SubtitlesButton",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-button.js":68}],68:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-button.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=a("./text-track-menu-item.js"),o=e(n),p=a("./off-text-track-menu-item.js"),q=e(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=this.player_.textTracks();if(this.items.length<=1&&this.hide(),e){var g=m.bind(this,this.update);e.addEventListener("removetrack",g),e.addEventListener("addtrack",g),this.player_.on("dispose",function(){e.removeEventListener("removetrack",g),e.removeEventListener("addtrack",g)})}}return g(b,a),b.prototype.createItems=function(){var a=arguments.length<=0||void 0===arguments[0]?[]:arguments[0];a.push(new q["default"](this.player_,{kind:this.kind_}));var b=this.player_.textTracks();if(!b)return a;for(var c=0;cCurrent Time 0:00',"aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),b=this.localize("Current Time"),c=m["default"](a,this.player_.duration());this.contentEl_.innerHTML=''+b+" "+c},b}(i["default"]);i["default"].registerComponent("CurrentTimeDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],71:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent),this.on(c,"loadedmetadata",this.updateContent)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-duration vjs-time-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-duration-display",innerHTML:''+this.localize("Duration Time")+" 0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.duration();if(a){var b=this.localize("Duration Time"),c=m["default"](a);this.contentEl_.innerHTML=''+b+" "+c}},b}(i["default"]);i["default"].registerComponent("DurationDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],72:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-remaining-time vjs-time-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-remaining-time-display",innerHTML:''+this.localize("Remaining Time")+" -0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){if(this.player_.duration()){var a=this.localize("Remaining Time"),b=m["default"](this.player_.remainingTime());this.contentEl_.innerHTML=''+a+" -"+b}},b}(i["default"]);i["default"].registerComponent("RemainingTimeDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],73:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-time-control vjs-time-divider",innerHTML:"
    /
    "})},b}(h["default"]);h["default"].registerComponent("TimeDivider",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],74:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../slider/slider.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=a("./volume-level.js"),o=(e(n),function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"volumechange",this.updateARIAAttributes),c.ready(m.bind(this,this.updateARIAAttributes))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})},b.prototype.handleMouseMove=function(a){this.player_.muted()&&this.player_.muted(!1),this.player_.volume(this.calculateDistance(a))},b.prototype.getPercent=function(){return this.player_.muted()?0:this.player_.volume()},b.prototype.stepForward=function(){this.player_.volume(this.player_.volume()+.1)},b.prototype.stepBack=function(){this.player_.volume(this.player_.volume()-.1)},b.prototype.updateARIAAttributes=function(){var a=(100*this.player_.volume()).toFixed(2);this.el_.setAttribute("aria-valuenow",a),this.el_.setAttribute("aria-valuetext",a+"%")},b}(i["default"]));o.prototype.options_={children:{volumeLevel:{}},barName:"volumeLevel"},o.prototype.playerEvent="volumechange",k["default"].registerComponent("VolumeBar",o),c["default"]=o,b.exports=c["default"]},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"./volume-level.js":76}],75:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./volume-bar.js"),j=(d(i),function(a){function b(c,d){e(this,b),a.call(this,c,d),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{volumeBar:{}}},h["default"].registerComponent("VolumeControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":48,"./volume-bar.js":74}],76:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-level",innerHTML:''})},b}(h["default"]);h["default"].registerComponent("VolumeLevel",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=(d(g),a("../component.js")),i=d(h),j=a("../menu/menu.js"),k=d(j),l=a("../menu/menu-button.js"),m=d(l),n=a("./mute-toggle.js"),o=d(n),p=a("./volume-control/volume-bar.js"),q=d(p),r=function(a){function b(c){var d=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];e(this,b),void 0===d.vertical&&(d.vertical=d.inline?!1:!0),d.volumeBar=d.volumeBar||{},d.volumeBar.vertical=!!d.vertical,a.call(this,c,d),this.on(c,"volumechange",this.volumeUpdate),this.on(c,"loadstart",this.volumeUpdate),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")}),this.addClass("vjs-menu-button")}return f(b,a),b.prototype.buildCSSClass=function(){var b="";return b=this.options_.vertical?"vjs-volume-menu-button-vertical":"vjs-volume-menu-button-horizontal","vjs-volume-menu-button "+a.prototype.buildCSSClass.call(this)+" "+b},b.prototype.createMenu=function(){var a=new k["default"](this.player_,{contentElType:"div"}),b=new q["default"](this.player_,this.options_.volumeBar);return b.on("focus",function(){a.lockShowing()}),b.on("blur",function(){a.unlockShowing()}),a.addChild(b),a},b.prototype.handleClick=function(){o["default"].prototype.handleClick.call(this),a.prototype.handleClick.call(this)},b}(m["default"]);r.prototype.volumeUpdate=o["default"].prototype.update,r.prototype.controlText_="Mute",i["default"].registerComponent("VolumeMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"../menu/menu-button.js":84,"../menu/menu.js":86,"./mute-toggle.js":52,"./volume-control/volume-bar.js":74}],78:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component"),i=e(h),j=a("./utils/dom.js"),k=d(j),l=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.update(),this.on(c,"error",this.update)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-error-display"});return this.contentEl_=k.createEl("div"),b.appendChild(this.contentEl_),b},b.prototype.update=function(){this.player().error()&&(this.contentEl_.innerHTML=this.localize(this.player().error().message))},b}(i["default"]);i["default"].registerComponent("ErrorDisplay",l),c["default"]=l,b.exports=c["default"]},{"./component":48,"./utils/dom.js":107}],79:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=function(){};g.prototype.allowedEvents_={},g.prototype.on=function(a,b){var c=this.addEventListener;this.addEventListener=Function.prototype,f.on(this,a,b),this.addEventListener=c},g.prototype.addEventListener=g.prototype.on,g.prototype.off=function(a,b){f.off(this,a,b)},g.prototype.removeEventListener=g.prototype.off,g.prototype.one=function(a,b){f.one(this,a,b)},g.prototype.trigger=function(a){var b=a.type||a;"string"==typeof a&&(a={type:b}),a=f.fixEvent(a),this.allowedEvents_[b]&&this["on"+b]&&this["on"+b](a),f.trigger(this,a)},g.prototype.dispatchEvent=g.prototype.trigger,c["default"]=g,b.exports=c["default"]},{"./utils/events.js":108}],80:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./utils/log"),f=d(e),g=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.super_=b)},h=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=function(){a.apply(this,arguments)},d={};"object"==typeof b?("function"==typeof b.init&&(f["default"].warn("Constructor logic via init() is deprecated; please use constructor() instead."),b.constructor=b.init),b.constructor!==Object.prototype.constructor&&(c=b.constructor),d=b):"function"==typeof b&&(c=b),g(c,a);for(var e in d)d.hasOwnProperty(e)&&(c.prototype[e]=d[e]);return c};c["default"]=h,b.exports=c["default"]},{"./utils/log":112}],81:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;for(var e=a("global/document"),f=d(e),g={},h=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=h[0],j=void 0,k=0;k1&&this.show()},b.prototype.createMenu=function(){var a=new m["default"](this.player_);if(this.options_.title&&a.contentEl().appendChild(o.createEl("li",{className:"vjs-menu-title",innerHTML:s["default"](this.options_.title),tabIndex:-1})),this.items=this.createItems(),this.items)for(var b=0;b0&&this.items[0].el().focus()},b.prototype.unpressButton=function(){this.buttonPressed_=!1,this.menu.unlockShowing(),this.el_.setAttribute("aria-pressed",!1)},b}(i["default"]);k["default"].registerComponent("MenuButton",t),c["default"]=t,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/to-title-case.js":116,"./menu.js":86}],85:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=a("object.assign"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.selected(d.selected)}return f(b,a),b.prototype.createEl=function(b,c){return a.prototype.createEl.call(this,"li",l["default"]({className:"vjs-menu-item",innerHTML:this.localize(this.options_.label)},c))},b.prototype.handleClick=function(){this.selected(!0)},b.prototype.selected=function(a){a?(this.addClass("vjs-selected"),this.el_.setAttribute("aria-selected",!0)):(this.removeClass("vjs-selected"),this.el_.setAttribute("aria-selected",!1))},b}(h["default"]);j["default"].registerComponent("MenuItem",m),c["default"]=m,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"object.assign":40}],86:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component.js"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=a("../utils/fn.js"),m=d(l),n=a("../utils/events.js"),o=d(n),p=function(a){function b(){f(this,b),a.apply(this,arguments)}return g(b,a),b.prototype.addItem=function(a){this.addChild(a),a.on("click",m.bind(this,function(){this.unlockShowing()}))},b.prototype.createEl=function(){var b=this.options_.contentElType||"ul";this.contentEl_=k.createEl(b,{className:"vjs-menu-content"});var c=a.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return c.appendChild(this.contentEl_),o.on(c,"click",function(a){a.preventDefault(),a.stopImmediatePropagation()}),c},b}(i["default"]);i["default"].registerComponent("Menu",p),c["default"]=p,b.exports=c["default"]},{"../component.js":48,"../utils/dom.js":107,"../utils/events.js":108,"../utils/fn.js":109}],87:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component.js"),i=e(h),j=a("global/document"),k=e(j),l=a("global/window"),m=e(l),n=a("./utils/events.js"),o=d(n),p=a("./utils/dom.js"),q=d(p),r=a("./utils/fn.js"),s=d(r),t=a("./utils/guid.js"),u=d(t),v=a("./utils/browser.js"),w=(d(v),a("./utils/log.js")),x=e(w),y=a("./utils/to-title-case.js"),z=e(y),A=a("./utils/time-ranges.js"),B=a("./utils/buffer.js"),C=a("./utils/stylesheet.js"),D=d(C),E=a("./fullscreen-api.js"),F=e(E),G=a("./media-error.js"),H=e(G),I=a("safe-json-parse/tuple"),J=e(I),K=a("object.assign"),L=e(K),M=a("./utils/merge-options.js"),N=e(M),O=a("./tracks/text-track-list-converter.js"),P=e(O),Q=a("./tech/loader.js"),R=(e(Q),a("./poster-image.js")),S=(e(R),a("./tracks/text-track-display.js")),T=(e(S),a("./loading-spinner.js")),U=(e(T),a("./big-play-button.js")),V=(e(U),a("./control-bar/control-bar.js")),W=(e(V),a("./error-display.js")),X=(e(W),a("./tracks/text-track-settings.js")),Y=(e(X),a("./tech/html5.js")),Z=(e(Y),function(a){function b(c,d,e){var g=this;if(f(this,b),c.id=c.id||"vjs_video_"+u.newGUID(),d=L["default"](b.getTagSettings(c),d),d.initChildren=!1,d.createEl=!1,d.reportTouchActivity=!1,a.call(this,null,d,e),!this.options_||!this.options_.techOrder||!this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");this.tag=c,this.tagAttributes=c&&q.getElAttributes(c),this.language(this.options_.language),d.languages?!function(){var a={};Object.getOwnPropertyNames(d.languages).forEach(function(b){a[b.toLowerCase()]=d.languages[b]}),g.languages_=a}():this.languages_=b.prototype.options_.languages,this.cache_={},this.poster_=d.poster||"",this.controls_=!!d.controls,c.controls=!1,this.scrubbing_=!1,this.el_=this.createEl();var h=N["default"](this.options_);d.plugins&&!function(){var a=d.plugins;Object.getOwnPropertyNames(a).forEach(function(b){"function"==typeof this[b]?this[b](a[b]):x["default"].error("Unable to find plugin:",b)},g)}(),this.options_.playerOptions=h,this.initChildren(),this.isAudio("audio"===c.nodeName.toLowerCase()),this.addClass(this.controls()?"vjs-controls-enabled":"vjs-controls-disabled"),this.isAudio()&&this.addClass("vjs-audio"),this.flexNotSupported_()&&this.addClass("vjs-no-flex"),b.players[this.id_]=this,this.userActive_=!0,this.reportUserActivity(),this.listenForUserActivity(),this.on("fullscreenchange",this.handleFullscreenChange),this.on("stageclick",this.handleStageClick)}return g(b,a),b.prototype.dispose=function(){this.trigger("dispose"),this.off("dispose"),this.styleEl_&&this.styleEl_.parentNode.removeChild(this.styleEl_),b.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech&&this.tech.dispose(),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var b=this.el_=a.prototype.createEl.call(this,"div"),c=this.tag;c.removeAttribute("width"),c.removeAttribute("height");var d=q.getElAttributes(c);Object.getOwnPropertyNames(d).forEach(function(a){"class"===a?b.className=d[a]:b.setAttribute(a,d[a])}),c.id+="_html5_api",c.className="vjs-tech",c.player=b.player=this,this.addClass("vjs-paused"),this.styleEl_=D.createStyleElement("vjs-styles-dimensions");var e=k["default"].querySelector(".vjs-styles-defaults"),f=k["default"].querySelector("head");return f.insertBefore(this.styleEl_,e?e.nextSibling:f.firstChild),this.width(this.options_.width),this.height(this.options_.height),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),c.initNetworkState_=c.networkState,c.parentNode&&c.parentNode.insertBefore(b,c),q.insertElFirst(c,b),this.el_=b,b},b.prototype.width=function(a){return this.dimension("width",a)},b.prototype.height=function(a){return this.dimension("height",a)},b.prototype.dimension=function(a,b){var c=a+"_";if(void 0===b)return this[c]||0;if(""===b)this[c]=void 0;else{var d=parseFloat(b);if(isNaN(d))return x["default"].error('Improper value "'+b+'" supplied for for '+a),this;this[c]=d}return this.updateStyleEl_(),this},b.prototype.fluid=function(a){return void 0===a?!!this.fluid_:(this.fluid_=!!a,void(a?this.addClass("vjs-fluid"):this.removeClass("vjs-fluid")))},b.prototype.aspectRatio=function(a){if(void 0===a)return this.aspectRatio_;if(!/^\d+\:\d+$/.test(a))throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");this.aspectRatio_=a,this.fluid(!0),this.updateStyleEl_()},b.prototype.updateStyleEl_=function(){var a=void 0,b=void 0,c=void 0;c=void 0!==this.aspectRatio_&&"auto"!==this.aspectRatio_?this.aspectRatio_:this.videoWidth()?this.videoWidth()+":"+this.videoHeight():"16:9";var d=c.split(":"),e=d[1]/d[0];a=void 0!==this.width_?this.width_:void 0!==this.height_?this.height_/e:this.videoWidth()||300,b=void 0!==this.height_?this.height_:a*e;var f=this.id()+"-dimensions";this.addClass(f),D.setTextContent(this.styleEl_,"\n ."+f+" {\n width: "+a+"px;\n height: "+b+"px;\n }\n\n ."+f+".vjs-fluid {\n padding-top: "+100*e+"%;\n }\n ")},b.prototype.loadTech=function(a,b){this.tech&&this.unloadTech(),"Html5"!==a&&this.tag&&(i["default"].getComponent("Html5").disposeMediaElement(this.tag),this.tag.player=null,this.tag=null),this.techName=a,this.isReady_=!1;var c=s.bind(this,function(){this.triggerReady()}),d=L["default"]({nativeControlsForTouch:this.options_.nativeControlsForTouch,source:b,playerId:this.id(),techId:this.id()+"_"+a+"_api",textTracks:this.textTracks_,autoplay:this.options_.autoplay,preload:this.options_.preload,loop:this.options_.loop,muted:this.options_.muted,poster:this.poster(),language:this.language(),"vtt.js":this.options_["vtt.js"]},this.options_[a.toLowerCase()]);this.tag&&(d.tag=this.tag),b&&(this.currentType_=b.type,b.src===this.cache_.src&&this.cache_.currentTime>0&&(d.startTime=this.cache_.currentTime),this.cache_.src=b.src);var e=i["default"].getComponent(a);this.tech=new e(d),P["default"].jsonToTextTracks(this.textTracksJson_||[],this.tech),this.on(this.tech,"ready",this.handleTechReady),this.on(this.tech,"loadstart",this.handleTechLoadStart),this.on(this.tech,"waiting",this.handleTechWaiting),this.on(this.tech,"canplay",this.handleTechCanPlay),this.on(this.tech,"canplaythrough",this.handleTechCanPlayThrough),this.on(this.tech,"playing",this.handleTechPlaying),this.on(this.tech,"ended",this.handleTechEnded),this.on(this.tech,"seeking",this.handleTechSeeking),this.on(this.tech,"seeked",this.handleTechSeeked),this.on(this.tech,"play",this.handleTechPlay),this.on(this.tech,"firstplay",this.handleTechFirstPlay),this.on(this.tech,"pause",this.handleTechPause),this.on(this.tech,"progress",this.handleTechProgress),this.on(this.tech,"durationchange",this.handleTechDurationChange),this.on(this.tech,"fullscreenchange",this.handleTechFullscreenChange),this.on(this.tech,"error",this.handleTechError),this.on(this.tech,"suspend",this.handleTechSuspend),this.on(this.tech,"abort",this.handleTechAbort),this.on(this.tech,"emptied",this.handleTechEmptied),this.on(this.tech,"stalled",this.handleTechStalled),this.on(this.tech,"loadedmetadata",this.handleTechLoadedMetaData),this.on(this.tech,"loadeddata",this.handleTechLoadedData),this.on(this.tech,"timeupdate",this.handleTechTimeUpdate),this.on(this.tech,"ratechange",this.handleTechRateChange),this.on(this.tech,"volumechange",this.handleTechVolumeChange),this.on(this.tech,"texttrackchange",this.onTextTrackChange),this.on(this.tech,"loadedmetadata",this.updateStyleEl_),this.usingNativeControls(this.techGet("controls")),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners(),this.tech.el().parentNode===this.el()||"Html5"===a&&this.tag||q.insertElFirst(this.tech.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null),this.tech.ready(c,!0)},b.prototype.unloadTech=function(){this.textTracks_=this.textTracks(),this.textTracksJson_=P["default"].textTracksToJson(this),this.isReady_=!1,this.tech.dispose(),this.tech=!1},b.prototype.addTechControlsListeners=function(){ +this.removeTechControlsListeners(),this.on(this.tech,"mousedown",this.handleTechClick),this.on(this.tech,"touchstart",this.handleTechTouchStart),this.on(this.tech,"touchmove",this.handleTechTouchMove),this.on(this.tech,"touchend",this.handleTechTouchEnd),this.on(this.tech,"tap",this.handleTechTap)},b.prototype.removeTechControlsListeners=function(){this.off(this.tech,"tap",this.handleTechTap),this.off(this.tech,"touchstart",this.handleTechTouchStart),this.off(this.tech,"touchmove",this.handleTechTouchMove),this.off(this.tech,"touchend",this.handleTechTouchEnd),this.off(this.tech,"mousedown",this.handleTechClick)},b.prototype.handleTechReady=function(){this.triggerReady(),this.cache_.volume&&this.techCall("setVolume",this.cache_.volume),this.tag&&this.options_.autoplay&&this.paused()&&(delete this.tag.poster,this.play())},b.prototype.handleTechLoadStart=function(){this.removeClass("vjs-ended"),this.error(null),this.paused()?(this.hasStarted(!1),this.trigger("loadstart")):(this.trigger("loadstart"),this.trigger("firstplay"))},b.prototype.hasStarted=function(a){return void 0!==a?(this.hasStarted_!==a&&(this.hasStarted_=a,a?(this.addClass("vjs-has-started"),this.trigger("firstplay")):this.removeClass("vjs-has-started")),this):!!this.hasStarted_},b.prototype.handleTechPlay=function(){this.removeClass("vjs-ended"),this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.hasStarted(!0),this.trigger("play")},b.prototype.handleTechWaiting=function(){this.addClass("vjs-waiting"),this.trigger("waiting")},b.prototype.handleTechCanPlay=function(){this.removeClass("vjs-waiting"),this.trigger("canplay")},b.prototype.handleTechCanPlayThrough=function(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")},b.prototype.handleTechPlaying=function(){this.removeClass("vjs-waiting"),this.trigger("playing")},b.prototype.handleTechSeeking=function(){this.addClass("vjs-seeking"),this.trigger("seeking")},b.prototype.handleTechSeeked=function(){this.removeClass("vjs-seeking"),this.trigger("seeked")},b.prototype.handleTechFirstPlay=function(){this.options_.starttime&&this.currentTime(this.options_.starttime),this.addClass("vjs-has-started"),this.trigger("firstplay")},b.prototype.handleTechPause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")},b.prototype.handleTechProgress=function(){this.trigger("progress"),1===this.bufferedPercent()&&this.trigger("loadedalldata")},b.prototype.handleTechEnded=function(){this.addClass("vjs-ended"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")},b.prototype.handleTechDurationChange=function(){this.updateDuration(),this.trigger("durationchange")},b.prototype.handleTechClick=function(a){0===a.button&&this.controls()&&(this.paused()?this.play():this.pause())},b.prototype.handleTechTap=function(){this.userActive(!this.userActive())},b.prototype.handleTechTouchStart=function(){this.userWasActive=this.userActive()},b.prototype.handleTechTouchMove=function(){this.userWasActive&&this.reportUserActivity()},b.prototype.handleTechTouchEnd=function(a){a.preventDefault()},b.prototype.updateDuration=function(){var a=this.techGet("duration");a&&(0>a&&(a=1/0),this.duration(a),a===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"))},b.prototype.handleFullscreenChange=function(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")},b.prototype.handleStageClick=function(){this.reportUserActivity()},b.prototype.handleTechFullscreenChange=function(a,b){b&&this.isFullscreen(b.isFullscreen),this.trigger("fullscreenchange")},b.prototype.handleTechError=function(){var a=this.tech.error();this.error(a&&a.code)},b.prototype.handleTechSuspend=function(){this.trigger("suspend")},b.prototype.handleTechAbort=function(){this.trigger("abort")},b.prototype.handleTechEmptied=function(){this.trigger("emptied")},b.prototype.handleTechStalled=function(){this.trigger("stalled")},b.prototype.handleTechLoadedMetaData=function(){this.trigger("loadedmetadata")},b.prototype.handleTechLoadedData=function(){this.trigger("loadeddata")},b.prototype.handleTechTimeUpdate=function(){this.trigger("timeupdate")},b.prototype.handleTechRateChange=function(){this.trigger("ratechange")},b.prototype.handleTechVolumeChange=function(){this.trigger("volumechange")},b.prototype.onTextTrackChange=function(){this.trigger("texttrackchange")},b.prototype.getCache=function(){return this.cache_},b.prototype.techCall=function(a,b){if(this.tech&&!this.tech.isReady_)this.tech.ready(function(){this[a](b)},!0);else try{this.tech[a](b)}catch(c){throw x["default"](c),c}},b.prototype.techGet=function(a){if(this.tech&&this.tech.isReady_)try{return this.tech[a]()}catch(b){throw void 0===this.tech[a]?x["default"]("Video.js: "+a+" method not defined for "+this.techName+" playback technology.",b):"TypeError"===b.name?(x["default"]("Video.js: "+a+" unavailable on "+this.techName+" playback technology element.",b),this.tech.isReady_=!1):x["default"](b),b}},b.prototype.play=function(){return this.techCall("play"),this},b.prototype.pause=function(){return this.techCall("pause"),this},b.prototype.paused=function(){return this.techGet("paused")===!1?!1:!0},b.prototype.scrubbing=function(a){return void 0!==a?(this.scrubbing_=!!a,a?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing"),this):this.scrubbing_},b.prototype.currentTime=function(a){return void 0!==a?(this.techCall("setCurrentTime",a),this):this.cache_.currentTime=this.techGet("currentTime")||0},b.prototype.duration=function(a){return void 0!==a?(this.cache_.duration=parseFloat(a),this):(void 0===this.cache_.duration&&this.updateDuration(),this.cache_.duration||0)},b.prototype.remainingTime=function(){return this.duration()-this.currentTime()},b.prototype.buffered=function c(){var c=this.techGet("buffered");return c&&c.length||(c=A.createTimeRange(0,0)),c},b.prototype.bufferedPercent=function(){return B.bufferedPercent(this.buffered(),this.duration())},b.prototype.bufferedEnd=function(){var a=this.buffered(),b=this.duration(),c=a.end(a.length-1);return c>b&&(c=b),c},b.prototype.volume=function(a){var b=void 0;return void 0!==a?(b=Math.max(0,Math.min(1,parseFloat(a))),this.cache_.volume=b,this.techCall("setVolume",b),this):(b=parseFloat(this.techGet("volume")),isNaN(b)?1:b)},b.prototype.muted=function(a){return void 0!==a?(this.techCall("setMuted",a),this):this.techGet("muted")||!1},b.prototype.supportsFullScreen=function(){return this.techGet("supportsFullScreen")||!1},b.prototype.isFullscreen=function(a){return void 0!==a?(this.isFullscreen_=!!a,this):!!this.isFullscreen_},b.prototype.requestFullscreen=function(){var a=F["default"];return this.isFullscreen(!0),a.requestFullscreen?(o.on(k["default"],a.fullscreenchange,s.bind(this,function b(){this.isFullscreen(k["default"][a.fullscreenElement]),this.isFullscreen()===!1&&o.off(k["default"],a.fullscreenchange,b),this.trigger("fullscreenchange")})),this.el_[a.requestFullscreen]()):this.tech.supportsFullScreen()?this.techCall("enterFullScreen"):(this.enterFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.exitFullscreen=function(){var a=F["default"];return this.isFullscreen(!1),a.requestFullscreen?k["default"][a.exitFullscreen]():this.tech.supportsFullScreen()?this.techCall("exitFullScreen"):(this.exitFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.enterFullWindow=function(){this.isFullWindow=!0,this.docOrigOverflow=k["default"].documentElement.style.overflow,o.on(k["default"],"keydown",s.bind(this,this.fullWindowOnEscKey)),k["default"].documentElement.style.overflow="hidden",q.addElClass(k["default"].body,"vjs-full-window"),this.trigger("enterFullWindow")},b.prototype.fullWindowOnEscKey=function(a){27===a.keyCode&&(this.isFullscreen()===!0?this.exitFullscreen():this.exitFullWindow())},b.prototype.exitFullWindow=function(){this.isFullWindow=!1,o.off(k["default"],"keydown",this.fullWindowOnEscKey),k["default"].documentElement.style.overflow=this.docOrigOverflow,q.removeElClass(k["default"].body,"vjs-full-window"),this.trigger("exitFullWindow")},b.prototype.selectSource=function(a){for(var b=0,c=this.options_.techOrder;b0&&(h=this.setTimeout(function(){this.userActivity_||this.userActive(!1)},a))}},250)}},b.prototype.playbackRate=function(a){return void 0!==a?(this.techCall("setPlaybackRate",a),this):this.tech&&this.tech.featuresPlaybackRate?this.techGet("playbackRate"):1},b.prototype.isAudio=function(a){return void 0!==a?(this.isAudio_=!!a,this):!!this.isAudio_},b.prototype.networkState=function(){return this.techGet("networkState")},b.prototype.readyState=function(){return this.techGet("readyState")},b.prototype.textTracks=function(){return this.tech&&this.tech.textTracks()},b.prototype.remoteTextTracks=function(){return this.tech&&this.tech.remoteTextTracks()},b.prototype.addTextTrack=function(a,b,c){return this.tech&&this.tech.addTextTrack(a,b,c)},b.prototype.addRemoteTextTrack=function(a){return this.tech&&this.tech.addRemoteTextTrack(a)},b.prototype.removeRemoteTextTrack=function(a){this.tech&&this.tech.removeRemoteTextTrack(a)},b.prototype.videoWidth=function(){return this.tech&&this.tech.videoWidth&&this.tech.videoWidth()||0},b.prototype.videoHeight=function(){return this.tech&&this.tech.videoHeight&&this.tech.videoHeight()||0},b.prototype.language=function(a){return void 0===a?this.language_:(this.language_=(""+a).toLowerCase(),this)},b.prototype.languages=function(){return N["default"](b.prototype.options_.languages,this.languages_)},b.prototype.toJSON=function(){var a=N["default"](this.options_),b=a.tracks;a.tracks=[];for(var c=0;ci;i++){var k=h[i],l=k.nodeName.toLowerCase();"source"===l?b.sources.push(q.getElAttributes(k)):"track"===l&&b.tracks.push(q.getElAttributes(k))}return b},b}(i["default"]));Z.players={};var $=m["default"].navigator;Z.prototype.options_={techOrder:["html5","flash"],html5:{},flash:{},defaultVolume:0,inactivityTimeout:2e3,playbackRates:[],children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{},textTrackSettings:{}},language:k["default"].getElementsByTagName("html")[0].getAttribute("lang")||$.languages&&$.languages[0]||$.userLanguage||$.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."},Z.prototype.handleLoadedMetaData,Z.prototype.handleLoadedData,Z.prototype.handleLoadedAllData,Z.prototype.handleUserActive,Z.prototype.handleUserInactive,Z.prototype.handleTimeUpdate,Z.prototype.handleVolumeChange,Z.prototype.handleError,Z.prototype.flexNotSupported_=function(){var a=k["default"].createElement("i");return!("flexBasis"in a.style||"webkitFlexBasis"in a.style||"mozFlexBasis"in a.style||"msFlexBasis"in a.style||"msFlexOrder"in a.style)},i["default"].registerComponent("Player",Z),c["default"]=Z,b.exports=c["default"]},{"./big-play-button.js":46,"./component.js":48,"./control-bar/control-bar.js":49,"./error-display.js":78,"./fullscreen-api.js":81,"./loading-spinner.js":82,"./media-error.js":83,"./poster-image.js":89,"./tech/html5.js":94,"./tech/loader.js":95,"./tracks/text-track-display.js":98,"./tracks/text-track-list-converter.js":100,"./tracks/text-track-settings.js":102,"./utils/browser.js":104,"./utils/buffer.js":105,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/to-title-case.js":116,"global/document":1,"global/window":2,"object.assign":40,"safe-json-parse/tuple":45}],88:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./player.js"),f=d(e),g=function(a,b){f["default"].prototype[a]=b};c["default"]=g,b.exports=c["default"]},{"./player.js":87}],89:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./button.js"),i=e(h),j=a("./component.js"),k=e(j),l=a("./utils/fn.js"),m=d(l),n=a("./utils/dom.js"),o=d(n),p=a("./utils/browser.js"),q=d(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.update(),c.on("posterchange",m.bind(this,this.update))}return g(b,a),b.prototype.dispose=function(){this.player().off("posterchange",this.update),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var a=o.createEl("div",{className:"vjs-poster",tabIndex:-1});return q.BACKGROUND_SIZE_SUPPORTED||(this.fallbackImg_=o.createEl("img"),a.appendChild(this.fallbackImg_)),a},b.prototype.update=function(){var a=this.player().poster();this.setSrc(a),a?this.show():this.hide()},b.prototype.setSrc=function(a){if(this.fallbackImg_)this.fallbackImg_.src=a;else{var b="";a&&(b='url("'+a+'")'),this.el_.style.backgroundImage=b}},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b}(i["default"]);k["default"].registerComponent("PosterImage",r),c["default"]=r,b.exports=c["default"]},{"./button.js":47,"./component.js":48,"./utils/browser.js":104,"./utils/dom.js":107,"./utils/fn.js":109}],90:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var f=a("./utils/events.js"),g=e(f),h=a("global/document"),i=d(h),j=a("global/window"),k=d(j),l=!1,m=void 0,n=function(){var a=i["default"].getElementsByTagName("video"),b=i["default"].getElementsByTagName("audio"),c=[];if(a&&a.length>0)for(var d=0,e=a.length;e>d;d++)c.push(a[d]);if(b&&b.length>0)for(var d=0,e=b.length;e>d;d++)c.push(b[d]);if(c&&c.length>0)for(var d=0,e=c.length;e>d;d++){var f=c[d];if(!f||!f.getAttribute){o(1);break}if(void 0===f.player){var g=f.getAttribute("data-setup");if(null!==g){m(f)}}}else l||o(1)},o=function(a,b){m=b,setTimeout(n,a)};"complete"===i["default"].readyState?l=!0:g.one(k["default"],"load",function(){l=!0});var p=function(){return l};c.autoSetup=n,c.autoSetupTimeout=o,c.hasLoaded=p},{"./utils/events.js":108,"global/document":1,"global/window":2}],91:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component.js"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=a("global/document"),m=e(l),n=a("object.assign"),o=e(n),p=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.bar=this.getChild(this.options_.barName),this.vertical(!!this.options_.vertical),this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur),this.on("click",this.handleClick),this.on(c,"controlsvisible",this.update),this.on(c,this.playerEvent,this.update)}return g(b,a),b.prototype.createEl=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.className=c.className+" vjs-slider",c=o["default"]({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c),a.prototype.createEl.call(this,b,c)},b.prototype.handleMouseDown=function(a){a.preventDefault(),k.blockTextSelection(),this.addClass("vjs-sliding"),this.on(m["default"],"mousemove",this.handleMouseMove),this.on(m["default"],"mouseup",this.handleMouseUp),this.on(m["default"],"touchmove",this.handleMouseMove),this.on(m["default"],"touchend",this.handleMouseUp),this.handleMouseMove(a)},b.prototype.handleMouseMove=function(){},b.prototype.handleMouseUp=function(){k.unblockTextSelection(),this.removeClass("vjs-sliding"),this.off(m["default"],"mousemove",this.handleMouseMove),this.off(m["default"],"mouseup",this.handleMouseUp),this.off(m["default"],"touchmove",this.handleMouseMove),this.off(m["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=this.el_,c=k.findElPosition(b),d=b.offsetWidth,e=b.offsetHeight;if(this.vertical()){var f=c.top,g=void 0;return g=a.changedTouches?a.changedTouches[0].pageY:a.pageY,Math.max(0,Math.min(1,(f-g+e)/e))}var h=c.left,i=void 0;return i=a.changedTouches?a.changedTouches[0].pageX:a.pageX,Math.max(0,Math.min(1,(i-h)/d))},b.prototype.handleFocus=function(){this.on(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(i["default"]);i["default"].registerComponent("Slider",p),c["default"]=p,b.exports=c["default"]},{"../component.js":48,"../utils/dom.js":107,"global/document":1,"object.assign":40}],92:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],93:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=a.charAt(0).toUpperCase()+a.slice(1);A["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function i(a){A[a]=function(){return this.el_.vjs_getProperty(a)}}c.__esModule=!0;for(var j=a("./tech"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/time-ranges.js"),q=a("./flash-rtmp"),r=e(q),s=a("../component"),t=e(s),u=a("global/window"),v=e(u),w=a("object.assign"),x=e(w),y=v["default"].navigator,z=function(a){function b(c,d){f(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),v["default"].videojs=v["default"].videojs||{},v["default"].videojs.Flash=v["default"].videojs.Flash||{},v["default"].videojs.Flash.onReady=b.onReady,v["default"].videojs.Flash.onEvent=b.onEvent,v["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return g(b,a),b.prototype.createEl=function(){var a=this.options_,c=a.techId,d=x["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=x["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=x["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.ended()&&this.setCurrentTime(0),this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){return void 0===a?this.currentSrc():this.setSrc(a)},b.prototype.setSrc=function(a){if(a=o.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},k["default"].withSourceHandlers(z),z.nativeSourceHandler={},z.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=o.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in z.formats?"maybe":""},z.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},z.nativeSourceHandler.dispose=function(){},z.registerSourceHandler(z.nativeSourceHandler),z.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},z.onReady=function(a){var b=m.getEl(a),c=b&&b.tech;c&&c.el()&&z.checkReady(c)},z.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){z.checkReady(a)},50))},z.onEvent=function(a,b){var c=m.getEl(a).tech;c.trigger(b)},z.onError=function(a,b){var c=m.getEl(a).tech;return"srcnotfound"===b?c.error(4):void c.error("FLASH: "+b)},z.version=function(){var a="0,0,0";try{a=new v["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{y.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(y.plugins["Shockwave Flash 2.0"]||y.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},z.embed=function(a,b,c,d){var e=z.getEmbedCode(a,b,c,d),f=m.createEl("div",{innerHTML:e}).childNodes[0];return f},z.getEmbedCode=function(a,b,c,d){var e=''}),d=x["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=a+'="'+d[a]+'" '}),""+e+h+">"+g+""},r["default"](z),t["default"].registerComponent("Flash",z),c["default"]=z,b.exports=c["default"]},{"../component":48,"../utils/dom.js":107,"../utils/time-ranges.js":115,"../utils/url.js":117,"./flash-rtmp":92,"./tech":96,"global/window":2,"object.assign":40}],94:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./tech.js"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/fn.js"),q=d(p),r=a("../utils/log.js"),s=e(r),t=a("../utils/browser.js"),u=d(t),v=a("global/document"),w=e(v),x=a("global/window"),y=e(x),z=a("object.assign"),A=e(z),B=a("../utils/merge-options.js"),C=e(B),D=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=c.source;if(e&&(this.el_.currentSrc!==e.src||c.tag&&3===c.tag.initNetworkState_)&&this.setSource(e),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),m.setElAttributes(a,i)}return a},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){s["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=y["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){return void 0===a?this.el_.src:void this.setSrc(a)},b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=w["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(i["default"]);D.TEST_VID=w["default"].createElement("video");var E=w["default"].createElement("track");E.kind="captions",E.srclang="en",E.label="English",D.TEST_VID.appendChild(E),D.isSupported=function(){try{D.TEST_VID.volume=.5}catch(a){return!1}return!!D.TEST_VID.canPlayType},i["default"].withSourceHandlers(D),D.nativeSourceHandler={},D.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return D.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=o.getFileExtension(a.src),b("video/"+c)):""},D.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},D.nativeSourceHandler.dispose=function(){},D.registerSourceHandler(D.nativeSourceHandler),D.canControlVolume=function(){var a=D.TEST_VID.volume;return D.TEST_VID.volume=a/2+.1,a!==D.TEST_VID.volume},D.canControlPlaybackRate=function(){var a=D.TEST_VID.playbackRate;return D.TEST_VID.playbackRate=a/2+.1,a!==D.TEST_VID.playbackRate},D.supportsNativeTextTracks=function(){var a;return a=!!D.TEST_VID.textTracks,a&&D.TEST_VID.textTracks.length>0&&(a="number"!=typeof D.TEST_VID.textTracks[0].mode),a&&u.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in D.TEST_VID.textTracks||(a=!1),a},D.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],D.prototype.featuresVolumeControl=D.canControlVolume(),D.prototype.featuresPlaybackRate=D.canControlPlaybackRate(),D.prototype.movingMediaElementInDOM=!u.IS_IOS,D.prototype.featuresFullscreenResize=!0,D.prototype.featuresProgressEvents=!0,D.prototype.featuresNativeTextTracks=D.supportsNativeTextTracks();var F=void 0,G=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,H=/^video\/mp4/i;D.patchCanPlayType=function(){u.ANDROID_VERSION>=4&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":F.call(this,a)}),u.IS_OLD_ANDROID&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&H.test(a)?"maybe":F.call(this,a)})},D.unpatchCanPlayType=function(){var a=D.TEST_VID.constructor.prototype.canPlayType;return D.TEST_VID.constructor.prototype.canPlayType=F,F=null,a},D.patchCanPlayType(),D.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},k["default"].registerComponent("Html5",D),c["default"]=D,b.exports=c["default"]},{"../component":48,"../utils/browser.js":104,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/log.js":112,"../utils/merge-options.js":113,"../utils/url.js":117,"./tech.js":96,"global/document":1,"global/window":2,"object.assign":40}],95:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;g0&&this.trigger("loadstart")},!0)},b.prototype.manualProgressOn=function(){this.on("durationchange",this.onDurationChange),this.manualProgress=!0,this.one("ready",this.trackProgress)},b.prototype.manualProgressOff=function(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange)},b.prototype.trackProgress=function(){this.stopTrackingProgress(),this.progressInterval=this.setInterval(o.bind(this,function(){var a=this.bufferedPercent();this.bufferedPercent_!==a&&this.trigger("progress"),this.bufferedPercent_=a,1===a&&this.stopTrackingProgress()}),500)},b.prototype.onDurationChange=function(){this.duration_=this.duration()},b.prototype.buffered=function(){return r.createTimeRange(0,0)},b.prototype.bufferedPercent=function(){return s.bufferedPercent(this.buffered(),this.duration_)},b.prototype.stopTrackingProgress=function(){this.clearInterval(this.progressInterval)},b.prototype.manualTimeUpdatesOn=function(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime),this.on("pause",this.stopTrackingCurrentTime)},b.prototype.manualTimeUpdatesOff=function(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime),this.off("pause",this.stopTrackingCurrentTime)},b.prototype.trackCurrentTime=function(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval(function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},250)},b.prototype.stopTrackingCurrentTime=function(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.dispose=function(){var b=this.textTracks();if(b)for(var c=b.length;c--;)this.removeRemoteTextTrack(b[c]);this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),a.prototype.dispose.call(this)},b.prototype.error=function(a){return void 0!==a&&(this.error_=a instanceof u["default"]?a:new u["default"](a),this.trigger("error")),this.error_},b.prototype.played=function(){return this.hasStarted_?r.createTimeRange(0,0):r.createTimeRange()},b.prototype.setCurrentTime=function(){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.initTextTrackListeners=function(){var a=o.bind(this,function(){this.trigger("texttrackchange")}),b=this.textTracks();b&&(b.addEventListener("removetrack",a),b.addEventListener("addtrack",a),this.on("dispose",o.bind(this,function(){b.removeEventListener("removetrack",a),b.removeEventListener("addtrack",a)})))},b.prototype.emulateTextTracks=function(){if(!w["default"].WebVTT&&null!=this.el().parentNode){var a=y["default"].createElement("script");a.src=this.options_["vtt.js"]||"../node_modules/vtt.js/dist/vtt.js",this.el().parentNode.appendChild(a),w["default"].WebVTT=!0}var b=this.textTracks();if(b){var c=o.bind(this,function(){var a=this,c=function(){return a.trigger("texttrackchange")};c();for(var d=0;db)for(c=b;d>c;c++)e.call(this,c)},j.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=j,b.exports=c["default"]},{"../utils/browser.js":104,"global/document":1}],98:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function i(a,b,c){try{a.style[b]=c}catch(d){}}c.__esModule=!0;var j=a("../component"),k=e(j),l=a("../menu/menu.js"),m=(e(l),a("../menu/menu-item.js")),n=(e(m),a("../menu/menu-button.js")),o=(e(n),a("../utils/fn.js")),p=d(o),q=a("global/document"),r=(e(q),a("global/window")),s=e(r),t="#222",u="#ccc",v={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},w=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),c.on("loadstart",p.bind(this,this.toggleDisplay)),c.on("texttrackchange",p.bind(this,this.updateDisplay)),c.ready(p.bind(this,function(){if(c.tech&&c.tech.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",p.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},n.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=n,b.exports=c["default"]},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"global/document":1}],102:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function i(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),n.on(this.el().querySelector(".vjs-fg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".window-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-text-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-window-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-percent select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-edge-style select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-family select"),"change",p.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:j()})},b.prototype.getValues=function(){var a=this.el(),b=h(a.querySelector(".vjs-edge-style select")),c=h(a.querySelector(".vjs-font-family select")),d=h(a.querySelector(".vjs-fg-color > select")),e=h(a.querySelector(".vjs-text-opacity > select")),f=h(a.querySelector(".vjs-bg-color > select")),g=h(a.querySelector(".vjs-bg-opacity > select")),i=h(a.querySelector(".window-color > select")),j=h(a.querySelector(".vjs-window-opacity > select")),k=v["default"].parseFloat(h(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:g,textOpacity:e,windowOpacity:j,edgeStyle:b,fontFamily:c,color:d,backgroundColor:f,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();i(b.querySelector(".vjs-edge-style select"),a.edgeStyle),i(b.querySelector(".vjs-font-family select"),a.fontFamily),i(b.querySelector(".vjs-fg-color > select"),a.color),i(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),i(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),i(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),i(b.querySelector(".window-color > select"),a.windowColor),i(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),i(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=t["default"](v["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&r["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?v["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):v["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(l["default"]);l["default"].registerComponent("TextTrackSettings",w),c["default"]=w,b.exports=c["default"]},{"../component":48,"../utils/events.js":108,"../utils/fn.js":109,"../utils/log.js":112,"global/window":2,"safe-json-parse/tuple":45}],103:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var f=a("./text-track-cue-list"),g=e(f),h=a("../utils/fn.js"),i=d(h),j=a("../utils/guid.js"),k=d(j),l=a("../utils/browser.js"),m=d(l),n=a("./text-track-enums"),o=d(n),p=a("../utils/log.js"),q=e(p),r=a("../event-target"),s=e(r),t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("../xhr.js"),y=e(x),z=function D(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(m.IS_IE8){b=u["default"].createElement("custom");for(var c in D.prototype)b[c]=D.prototype[c]}b.tech_=a.tech;var d=o.TextTrackMode[a.mode]||"disabled",e=o.TextTrackKind[a.kind]||"subtitles",f=a.label||"",h=a.language||a.srclang||"",j=a.id||"vjs_text_track_"+k.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var l=new g["default"](b.cues_),n=new g["default"](b.activeCues_),p=!1,q=i.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return f},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return h},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return j},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){o.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?l:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return n;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var A=function E(a,b){if("function"!=typeof w["default"].WebVTT)return w["default"].setTimeout(function(){E(a,b)},25);var c=new w["default"].WebVTT.Parser(w["default"],w["default"].vttjs,w["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){q["default"].error(a)},c.parse(a),c.flush()},B=function(a,b){y["default"](a,i.bind(this,function(a,c,d){return a?q["default"].error(a,c):(b.loaded_=!0,void A(d,b))}))},C=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=z,b.exports=c["default"]},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"../utils/guid.js":111,"../utils/log.js":112,"../xhr.js":119,"./text-track-cue-list":97,"./text-track-enums":99,"global/document":1,"global/window":2}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/AppleWebKit\/([\d.]+)/i.exec(i),k=j?parseFloat(j.pop()):null,l=/iPhone/i.test(i);c.IS_IPHONE=l;var m=/iPad/i.test(i);c.IS_IPAD=m;var n=/iPod/i.test(i);c.IS_IPOD=n;var o=l||m||n;c.IS_IOS=o;var p=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=p;var q=/Android/i.test(i);c.IS_ANDROID=q;var r=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=r;var s=q&&/webkit/i.test(i)&&2.3>r;c.IS_OLD_ANDROID=s;var t=q&&5>r&&537>k;c.IS_NATIVE_ANDROID=t;var u=/Firefox/i.test(i);c.IS_FIREFOX=u;var v=/Chrome/i.test(i);c.IS_CHROME=v;var w=/MSIE\s8\.0/.test(i);c.IS_IE8=w;var x=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=x;var y="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=y},{"global/document":1,"global/window":2}],105:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":115}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":112}],107:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a){return 0===a.indexOf("#")&&(a=a.slice(1)),u["default"].getElementById(a)}function g(){var a=arguments.length<=0||void 0===arguments[0]?"div":arguments[0],b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=u["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var d=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?c.setAttribute(a,d):c[a]=d}),c}function h(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function i(a){var b=a[A];return b||(b=a[A]=y.newGUID()),z[b]||(z[b]={}),z[b]}function j(a){var b=a[A];return b?!!Object.getOwnPropertyNames(z[b]).length:!1}function k(a){var b=a[A];if(b){delete z[b];try{delete a[A]}catch(c){a.removeAttribute?a.removeAttribute(A):a[A]=null}}}function l(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function m(a,b){l(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function n(a,b){if(l(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);a.className=c.join(" ")}}function o(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d); -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],76:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-remaining-time vjs-time-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-remaining-time-display",innerHTML:''+this.localize("Remaining Time")+" -0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){if(this.player_.duration()){var a=this.localize("Remaining Time"),b=l["default"](this.player_.remainingTime());this.contentEl_.innerHTML=''+a+" -"+b}},b}(h["default"]);h["default"].registerComponent("RemainingTimeDisplay",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],77:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-time-control vjs-time-divider",innerHTML:"
    /
    "})},b}(h["default"]);h["default"].registerComponent("TimeDivider",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],78:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../slider/slider.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=a("./volume-level.js"),n=(d(m),function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"volumechange",this.updateARIAAttributes),c.ready(l.bind(this,this.updateARIAAttributes))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})},b.prototype.handleMouseMove=function(a){this.player_.muted()&&this.player_.muted(!1),this.player_.volume(this.calculateDistance(a))},b.prototype.getPercent=function(){return this.player_.muted()?0:this.player_.volume()},b.prototype.stepForward=function(){this.player_.volume(this.player_.volume()+.1)},b.prototype.stepBack=function(){this.player_.volume(this.player_.volume()-.1)},b.prototype.updateARIAAttributes=function(){var a=(100*this.player_.volume()).toFixed(2);this.el_.setAttribute("aria-valuenow",a),this.el_.setAttribute("aria-valuetext",a+"%")},b}(h["default"]));n.prototype.options_={children:{volumeLevel:{}},barName:"volumeLevel"},n.prototype.playerEvent="volumechange",j["default"].registerComponent("VolumeBar",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"./volume-level.js":80}],79:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./volume-bar.js"),j=(d(i),function(a){function b(c,d){e(this,b),a.call(this,c,d),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{volumeBar:{}}},h["default"].registerComponent("VolumeControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":52,"./volume-bar.js":78}],80:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-level",innerHTML:''})},b}(h["default"]);h["default"].registerComponent("VolumeLevel",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],81:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=(d(g),a("../component.js")),i=d(h),j=a("../menu/menu.js"),k=d(j),l=a("../menu/menu-button.js"),m=d(l),n=a("./mute-toggle.js"),o=d(n),p=a("./volume-control/volume-bar.js"),q=d(p),r=function(a){function b(c){var d=void 0===arguments[1]?{}:arguments[1];e(this,b),void 0===d.vertical&&(d.vertical=d.inline?!1:!0),d.volumeBar=d.volumeBar||{},d.volumeBar.vertical=!!d.vertical,a.call(this,c,d),this.on(c,"volumechange",this.volumeUpdate),this.on(c,"loadstart",this.volumeUpdate),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")}),this.addClass("vjs-menu-button")}return f(b,a),b.prototype.buildCSSClass=function(){var b="";return b=this.options_.vertical?"vjs-volume-menu-button-vertical":"vjs-volume-menu-button-horizontal","vjs-volume-menu-button "+a.prototype.buildCSSClass.call(this)+" "+b},b.prototype.createMenu=function(){var a=new k["default"](this.player_,{contentElType:"div"}),b=new q["default"](this.player_,this.options_.volumeBar);return b.on("focus",function(){a.lockShowing()}),b.on("blur",function(){a.unlockShowing()}),a.addChild(b),a},b.prototype.handleClick=function(){o["default"].prototype.handleClick.call(this),a.prototype.handleClick.call(this)},b}(m["default"]);r.prototype.volumeUpdate=o["default"].prototype.update,r.prototype.controlText_="Mute",i["default"].registerComponent("VolumeMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"../menu/menu-button.js":88,"../menu/menu.js":90,"./mute-toggle.js":56,"./volume-control/volume-bar.js":78}],82:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component"),h=d(g),i=a("./utils/dom.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.update(),this.on(c,"error",this.update)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-error-display"});return this.contentEl_=j.createEl("div"),b.appendChild(this.contentEl_),b},b.prototype.update=function(){this.player().error()&&(this.contentEl_.innerHTML=this.localize(this.player().error().message))},b}(h["default"]);h["default"].registerComponent("ErrorDisplay",k),c["default"]=k,b.exports=c["default"]},{"./component":52,"./utils/dom.js":111}],83:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=function(){};g.prototype.allowedEvents_={},g.prototype.on=function(a,b){var c=this.addEventListener;this.addEventListener=Function.prototype,f.on(this,a,b),this.addEventListener=c},g.prototype.addEventListener=g.prototype.on,g.prototype.off=function(a,b){f.off(this,a,b)},g.prototype.removeEventListener=g.prototype.off,g.prototype.one=function(a,b){f.one(this,a,b)},g.prototype.trigger=function(a){var b=a.type||a;"string"==typeof a&&(a={type:b}),a=f.fixEvent(a),this.allowedEvents_[b]&&this["on"+b]&&this["on"+b](a),f.trigger(this,a)},g.prototype.dispatchEvent=g.prototype.trigger,c["default"]=g,b.exports=c["default"]},{"./utils/events.js":112}],84:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/log"),f=d(e),g=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.super_=b)},h=function(a){var b=void 0===arguments[1]?{}:arguments[1],c=function(){a.apply(this,arguments)},d={};"object"==typeof b?("function"==typeof b.init&&(f["default"].warn("Constructor logic via init() is deprecated; please use constructor() instead."),b.constructor=b.init),b.constructor!==Object.prototype.constructor&&(c=b.constructor),d=b):"function"==typeof b&&(c=b),g(c,a);for(var e in d)d.hasOwnProperty(e)&&(c.prototype[e]=d[e]);return c};c["default"]=h,b.exports=c["default"]},{"./utils/log":116}],85:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;for(var e=a("global/document"),f=d(e),g={},h=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=h[0],j=void 0,k=0;k1&&this.show()},b.prototype.createMenu=function(){var a=new l["default"](this.player_);if(this.options_.title&&a.contentEl().appendChild(n.createEl("li",{className:"vjs-menu-title",innerHTML:r["default"](this.options_.title),tabIndex:-1})),this.items=this.createItems(),this.items)for(var b=0;b0&&this.items[0].el().focus()},b.prototype.unpressButton=function(){this.buttonPressed_=!1,this.menu.unlockShowing(),this.el_.setAttribute("aria-pressed",!1)},b}(h["default"]);j["default"].registerComponent("MenuButton",s),c["default"]=s,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/to-title-case.js":120,"./menu.js":90}],89:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=a("object.assign"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.selected(d.selected)}return f(b,a),b.prototype.createEl=function(b,c){return a.prototype.createEl.call(this,"li",l["default"]({className:"vjs-menu-item",innerHTML:this.localize(this.options_.label)},c))},b.prototype.handleClick=function(){this.selected(!0)},b.prototype.selected=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){a?(this.addClass("vjs-selected"),this.el_.setAttribute("aria-selected",!0)):(this.removeClass("vjs-selected"),this.el_.setAttribute("aria-selected",!1))}),b}(h["default"]);j["default"].registerComponent("MenuItem",m),c["default"]=m,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"object.assign":44}],90:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=a("../utils/fn.js"),l=d(k),m=a("../utils/events.js"),n=d(m),o=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.addItem=function(a){this.addChild(a),a.on("click",l.bind(this,function(){this.unlockShowing()}))},b.prototype.createEl=function(){var b=this.options_.contentElType||"ul";this.contentEl_=j.createEl(b,{className:"vjs-menu-content"});var c=a.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return c.appendChild(this.contentEl_),n.on(c,"click",function(a){a.preventDefault(),a.stopImmediatePropagation()}),c},b}(h["default"]);h["default"].registerComponent("Menu",o),c["default"]=o,b.exports=c["default"]},{"../component.js":52,"../utils/dom.js":111,"../utils/events.js":112,"../utils/fn.js":113}],91:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component.js"),h=d(g),i=a("global/document"),j=d(i),k=a("global/window"),l=d(k),m=a("./utils/events.js"),n=d(m),o=a("./utils/dom.js"),p=d(o),q=a("./utils/fn.js"),r=d(q),s=a("./utils/guid.js"),t=d(s),u=a("./utils/browser.js"),v=(d(u),a("./utils/log.js")),w=d(v),x=a("./utils/to-title-case.js"),y=d(x),z=a("./utils/time-ranges.js"),A=a("./utils/buffer.js"),B=a("./utils/stylesheet.js"),C=d(B),D=a("./fullscreen-api.js"),E=d(D),F=a("./media-error.js"),G=d(F),H=a("safe-json-parse/tuple"),I=d(H),J=a("object.assign"),K=d(J),L=a("./utils/merge-options.js"),M=d(L),N=a("./tracks/text-track-list-converter.js"),O=d(N),P=a("./tech/loader.js"),Q=(d(P),a("./poster-image.js")),R=(d(Q),a("./tracks/text-track-display.js")),S=(d(R),a("./loading-spinner.js")),T=(d(S),a("./big-play-button.js")),U=(d(T),a("./control-bar/control-bar.js")),V=(d(U),a("./error-display.js")),W=(d(V),a("./tracks/text-track-settings.js")),X=(d(W),a("./tech/html5.js")),Y=(d(X),function(a){function b(c,d,f){var g=this;if(e(this,b),c.id=c.id||"vjs_video_"+t.newGUID(),d=K["default"](b.getTagSettings(c),d),d.initChildren=!1,d.createEl=!1,d.reportTouchActivity=!1,a.call(this,null,d,f),!this.options_||!this.options_.techOrder||!this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");this.tag=c,this.tagAttributes=c&&p.getElAttributes(c),this.language(this.options_.language),d.languages?!function(){var a={};Object.getOwnPropertyNames(d.languages).forEach(function(b){a[b.toLowerCase()]=d.languages[b]}),g.languages_=a}():this.languages_=b.prototype.options_.languages,this.cache_={},this.poster_=d.poster||"",this.controls_=!!d.controls,c.controls=!1,this.scrubbing_=!1,this.el_=this.createEl();var h=M["default"](this.options_);d.plugins&&!function(){var a=d.plugins;Object.getOwnPropertyNames(a).forEach(function(b){a[b].playerOptions=h,"function"==typeof this[b]?this[b](a[b]):w["default"].error("Unable to find plugin:",b)},g)}(),this.options_.playerOptions=h,this.initChildren(),this.isAudio("audio"===c.nodeName.toLowerCase()),this.addClass(this.controls()?"vjs-controls-enabled":"vjs-controls-disabled"),this.isAudio()&&this.addClass("vjs-audio"),this.flexNotSupported_()&&this.addClass("vjs-no-flex"),b.players[this.id_]=this,this.userActive_=!0,this.reportUserActivity(),this.listenForUserActivity(),this.on("fullscreenchange",this.handleFullscreenChange),this.on("stageclick",this.handleStageClick)}return f(b,a),b.prototype.dispose=function(){this.trigger("dispose"),this.off("dispose"),this.styleEl_&&this.styleEl_.parentNode.removeChild(this.styleEl_),b.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech&&this.tech.dispose(),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var b=this.el_=a.prototype.createEl.call(this,"div"),c=this.tag;c.removeAttribute("width"),c.removeAttribute("height");var d=p.getElAttributes(c);Object.getOwnPropertyNames(d).forEach(function(a){"class"===a?b.className=d[a]:b.setAttribute(a,d[a])}),c.id+="_html5_api",c.className="vjs-tech",c.player=b.player=this,this.addClass("vjs-paused"),this.styleEl_=C.createStyleElement("vjs-styles-dimensions");var e=j["default"].querySelector(".vjs-styles-defaults"),f=j["default"].querySelector("head");return f.insertBefore(this.styleEl_,e?e.nextSibling:f.firstChild),this.width(this.options_.width),this.height(this.options_.height),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),c.initNetworkState_=c.networkState,c.parentNode&&c.parentNode.insertBefore(b,c),p.insertElFirst(c,b),this.el_=b,b},b.prototype.width=function(a){return this.dimension("width",a)},b.prototype.height=function(a){return this.dimension("height",a)},b.prototype.dimension=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b){var c=a+"_";if(void 0===b)return this[c]||0;if(""===b)this[c]=void 0;else{var d=parseFloat(b);if(isNaN(d))return w["default"].error('Improper value "'+b+'" supplied for for '+a),this;this[c]=d}return this.updateStyleEl_(),this}),b.prototype.fluid=function(a){return void 0===a?!!this.fluid_:(this.fluid_=!!a,void(a?this.addClass("vjs-fluid"):this.removeClass("vjs-fluid")))},b.prototype.aspectRatio=function(a){if(void 0===a)return this.aspectRatio_;if(!/^\d+\:\d+$/.test(a))throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");this.aspectRatio_=a,this.fluid(!0),this.updateStyleEl_()},b.prototype.updateStyleEl_=function(){var a=void 0,b=void 0,c=void 0;c=void 0!==this.aspectRatio_&&"auto"!==this.aspectRatio_?this.aspectRatio_:this.videoWidth()?this.videoWidth()+":"+this.videoHeight():"16:9";var d=c.split(":"),e=d[1]/d[0];a=void 0!==this.width_?this.width_:void 0!==this.height_?this.height_/e:this.videoWidth()||300,b=void 0!==this.height_?this.height_:a*e;var f=this.id()+"-dimensions";this.addClass(f),C.setTextContent(this.styleEl_,"\n ."+f+" {\n width: "+a+"px;\n height: "+b+"px;\n }\n\n ."+f+".vjs-fluid {\n padding-top: "+100*e+"%;\n }\n ")},b.prototype.loadTech=function(a,b){this.tech&&this.unloadTech(),"Html5"!==a&&this.tag&&(h["default"].getComponent("Html5").disposeMediaElement(this.tag),this.tag.player=null,this.tag=null),this.techName=a,this.isReady_=!1;var c=r.bind(this,function(){this.triggerReady()}),d=K["default"]({source:b,playerId:this.id(),techId:""+this.id()+"_"+a+"_api",textTracks:this.textTracks_,autoplay:this.options_.autoplay,preload:this.options_.preload,loop:this.options_.loop,muted:this.options_.muted,poster:this.poster(),language:this.language(),"vtt.js":this.options_["vtt.js"]},this.options_[a.toLowerCase()]);this.tag&&(d.tag=this.tag),b&&(this.currentType_=b.type,b.src===this.cache_.src&&this.cache_.currentTime>0&&(d.startTime=this.cache_.currentTime),this.cache_.src=b.src);var e=h["default"].getComponent(a);this.tech=new e(d),O["default"].jsonToTextTracks(this.textTracksJson_||[],this.tech),this.on(this.tech,"ready",this.handleTechReady),this.on(this.tech,"usenativecontrols",this.handleTechUseNativeControls),this.on(this.tech,"loadstart",this.handleTechLoadStart),this.on(this.tech,"waiting",this.handleTechWaiting),this.on(this.tech,"canplay",this.handleTechCanPlay),this.on(this.tech,"canplaythrough",this.handleTechCanPlayThrough),this.on(this.tech,"playing",this.handleTechPlaying),this.on(this.tech,"ended",this.handleTechEnded),this.on(this.tech,"seeking",this.handleTechSeeking),this.on(this.tech,"seeked",this.handleTechSeeked),this.on(this.tech,"play",this.handleTechPlay),this.on(this.tech,"firstplay",this.handleTechFirstPlay),this.on(this.tech,"pause",this.handleTechPause),this.on(this.tech,"progress",this.handleTechProgress),this.on(this.tech,"durationchange",this.handleTechDurationChange),this.on(this.tech,"fullscreenchange",this.handleTechFullscreenChange),this.on(this.tech,"error",this.handleTechError),this.on(this.tech,"suspend",this.handleTechSuspend),this.on(this.tech,"abort",this.handleTechAbort),this.on(this.tech,"emptied",this.handleTechEmptied),this.on(this.tech,"stalled",this.handleTechStalled),this.on(this.tech,"loadedmetadata",this.handleTechLoadedMetaData),this.on(this.tech,"loadeddata",this.handleTechLoadedData),this.on(this.tech,"timeupdate",this.handleTechTimeUpdate),this.on(this.tech,"ratechange",this.handleTechRateChange),this.on(this.tech,"volumechange",this.handleTechVolumeChange),this.on(this.tech,"texttrackchange",this.onTextTrackChange),this.on(this.tech,"loadedmetadata",this.updateStyleEl_),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners(),this.tech.el().parentNode===this.el()||"Html5"===a&&this.tag||p.insertElFirst(this.tech.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null),this.tech.ready(c,!0)},b.prototype.unloadTech=function(){this.textTracks_=this.textTracks(),this.textTracksJson_=O["default"].textTracksToJson(this),this.isReady_=!1,this.tech.dispose(),this.tech=!1},b.prototype.addTechControlsListeners=function(){this.on(this.tech,"mousedown",this.handleTechClick),this.on(this.tech,"touchstart",this.handleTechTouchStart),this.on(this.tech,"touchmove",this.handleTechTouchMove),this.on(this.tech,"touchend",this.handleTechTouchEnd),this.on(this.tech,"tap",this.handleTechTap)},b.prototype.removeTechControlsListeners=function(){this.off(this.tech,"tap",this.handleTechTap),this.off(this.tech,"touchstart",this.handleTechTouchStart),this.off(this.tech,"touchmove",this.handleTechTouchMove),this.off(this.tech,"touchend",this.handleTechTouchEnd),this.off(this.tech,"mousedown",this.handleTechClick)},b.prototype.handleTechReady=function(){this.triggerReady(),this.cache_.volume&&this.techCall("setVolume",this.cache_.volume),this.tag&&this.options_.autoplay&&this.paused()&&(delete this.tag.poster,this.play())},b.prototype.handleTechUseNativeControls=function(){this.usingNativeControls(!0)},b.prototype.handleTechLoadStart=function(){this.removeClass("vjs-ended"),this.error(null),this.paused()?(this.hasStarted(!1),this.trigger("loadstart")):(this.trigger("loadstart"),this.trigger("firstplay"))},b.prototype.hasStarted=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0!==a?(this.hasStarted_!==a&&(this.hasStarted_=a,a?(this.addClass("vjs-has-started"),this.trigger("firstplay")):this.removeClass("vjs-has-started")),this):!!this.hasStarted_}),b.prototype.handleTechPlay=function(){this.removeClass("vjs-ended"),this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.hasStarted(!0),this.trigger("play")},b.prototype.handleTechWaiting=function(){this.addClass("vjs-waiting"),this.trigger("waiting")},b.prototype.handleTechCanPlay=function(){this.removeClass("vjs-waiting"),this.trigger("canplay")},b.prototype.handleTechCanPlayThrough=function(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")},b.prototype.handleTechPlaying=function(){this.removeClass("vjs-waiting"),this.trigger("playing")},b.prototype.handleTechSeeking=function(){this.addClass("vjs-seeking"),this.trigger("seeking")},b.prototype.handleTechSeeked=function(){this.removeClass("vjs-seeking"),this.trigger("seeked")},b.prototype.handleTechFirstPlay=function(){this.options_.starttime&&this.currentTime(this.options_.starttime),this.addClass("vjs-has-started"),this.trigger("firstplay")},b.prototype.handleTechPause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")},b.prototype.handleTechProgress=function(){this.trigger("progress"),1===this.bufferedPercent()&&this.trigger("loadedalldata")},b.prototype.handleTechEnded=function(){this.addClass("vjs-ended"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")},b.prototype.handleTechDurationChange=function(){this.updateDuration(),this.trigger("durationchange")},b.prototype.handleTechClick=function(a){0===a.button&&this.controls()&&(this.paused()?this.play():this.pause())},b.prototype.handleTechTap=function(){this.userActive(!this.userActive())},b.prototype.handleTechTouchStart=function(){this.userWasActive=this.userActive()},b.prototype.handleTechTouchMove=function(){this.userWasActive&&this.reportUserActivity()},b.prototype.handleTechTouchEnd=function(a){a.preventDefault()},b.prototype.updateDuration=function(){var a=this.techGet("duration");a&&(0>a&&(a=1/0),this.duration(a),a===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"))},b.prototype.handleFullscreenChange=function(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")},b.prototype.handleStageClick=function(){ -this.reportUserActivity()},b.prototype.handleTechFullscreenChange=function(a,b){b&&this.isFullscreen(b.isFullscreen),this.trigger("fullscreenchange")},b.prototype.handleTechError=function(){this.error(this.tech.error().code)},b.prototype.handleTechSuspend=function(){this.trigger("suspend")},b.prototype.handleTechAbort=function(){this.trigger("abort")},b.prototype.handleTechEmptied=function(){this.trigger("emptied")},b.prototype.handleTechStalled=function(){this.trigger("stalled")},b.prototype.handleTechLoadedMetaData=function(){this.trigger("loadedmetadata")},b.prototype.handleTechLoadedData=function(){this.trigger("loadeddata")},b.prototype.handleTechTimeUpdate=function(){this.trigger("timeupdate")},b.prototype.handleTechRateChange=function(){this.trigger("ratechange")},b.prototype.handleTechVolumeChange=function(){this.trigger("volumechange")},b.prototype.onTextTrackChange=function(){this.trigger("texttrackchange")},b.prototype.getCache=function(){return this.cache_},b.prototype.techCall=function(a,b){if(this.tech&&!this.tech.isReady_)this.tech.ready(function(){this[a](b)},!0);else try{this.tech[a](b)}catch(c){throw w["default"](c),c}},b.prototype.techGet=function(a){if(this.tech&&this.tech.isReady_)try{return this.tech[a]()}catch(b){throw void 0===this.tech[a]?w["default"]("Video.js: "+a+" method not defined for "+this.techName+" playback technology.",b):"TypeError"===b.name?(w["default"]("Video.js: "+a+" unavailable on "+this.techName+" playback technology element.",b),this.tech.isReady_=!1):w["default"](b),b}},b.prototype.play=function(){return this.techCall("play"),this},b.prototype.pause=function(){return this.techCall("pause"),this},b.prototype.paused=function(){return this.techGet("paused")===!1?!1:!0},b.prototype.scrubbing=function(a){return void 0!==a?(this.scrubbing_=!!a,a?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing"),this):this.scrubbing_},b.prototype.currentTime=function(a){return void 0!==a?(this.techCall("setCurrentTime",a),this):this.cache_.currentTime=this.techGet("currentTime")||0},b.prototype.duration=function(a){return void 0!==a?(this.cache_.duration=parseFloat(a),this):(void 0===this.cache_.duration&&this.updateDuration(),this.cache_.duration||0)},b.prototype.remainingTime=function(){return this.duration()-this.currentTime()},b.prototype.buffered=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){var a=this.techGet("buffered");return a&&a.length||(a=z.createTimeRange(0,0)),a}),b.prototype.bufferedPercent=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return A.bufferedPercent(this.buffered(),this.duration())}),b.prototype.bufferedEnd=function(){var a=this.buffered(),b=this.duration(),c=a.end(a.length-1);return c>b&&(c=b),c},b.prototype.volume=function(a){var b=void 0;return void 0!==a?(b=Math.max(0,Math.min(1,parseFloat(a))),this.cache_.volume=b,this.techCall("setVolume",b),this):(b=parseFloat(this.techGet("volume")),isNaN(b)?1:b)},b.prototype.muted=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0!==a?(this.techCall("setMuted",a),this):this.techGet("muted")||!1}),b.prototype.supportsFullScreen=function(){return this.techGet("supportsFullScreen")||!1},b.prototype.isFullscreen=function(a){return void 0!==a?(this.isFullscreen_=!!a,this):!!this.isFullscreen_},b.prototype.requestFullscreen=function(){var a=E["default"];return this.isFullscreen(!0),a.requestFullscreen?(n.on(j["default"],a.fullscreenchange,r.bind(this,function b(){this.isFullscreen(j["default"][a.fullscreenElement]),this.isFullscreen()===!1&&n.off(j["default"],a.fullscreenchange,b),this.trigger("fullscreenchange")})),this.el_[a.requestFullscreen]()):this.tech.supportsFullScreen()?this.techCall("enterFullScreen"):(this.enterFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.exitFullscreen=function(){var a=E["default"];return this.isFullscreen(!1),a.requestFullscreen?j["default"][a.exitFullscreen]():this.tech.supportsFullScreen()?this.techCall("exitFullScreen"):(this.exitFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.enterFullWindow=function(){this.isFullWindow=!0,this.docOrigOverflow=j["default"].documentElement.style.overflow,n.on(j["default"],"keydown",r.bind(this,this.fullWindowOnEscKey)),j["default"].documentElement.style.overflow="hidden",p.addElClass(j["default"].body,"vjs-full-window"),this.trigger("enterFullWindow")},b.prototype.fullWindowOnEscKey=function(a){27===a.keyCode&&(this.isFullscreen()===!0?this.exitFullscreen():this.exitFullWindow())},b.prototype.exitFullWindow=function(){this.isFullWindow=!1,n.off(j["default"],"keydown",this.fullWindowOnEscKey),j["default"].documentElement.style.overflow=this.docOrigOverflow,p.removeElClass(j["default"].body,"vjs-full-window"),this.trigger("exitFullWindow")},b.prototype.selectSource=function(a){for(var b=0,c=this.options_.techOrder;b0&&(h=this.setTimeout(function(){this.userActivity_||this.userActive(!1)},a))}},250)}},b.prototype.playbackRate=function(a){return void 0!==a?(this.techCall("setPlaybackRate",a),this):this.tech&&this.tech.featuresPlaybackRate?this.techGet("playbackRate"):1},b.prototype.isAudio=function(a){return void 0!==a?(this.isAudio_=!!a,this):!!this.isAudio_},b.prototype.networkState=function(){return this.techGet("networkState")},b.prototype.readyState=function(){return this.techGet("readyState")},b.prototype.textTracks=function(){return this.tech&&this.tech.textTracks()},b.prototype.remoteTextTracks=function(){return this.tech&&this.tech.remoteTextTracks()},b.prototype.addTextTrack=function(a,b,c){return this.tech&&this.tech.addTextTrack(a,b,c)},b.prototype.addRemoteTextTrack=function(a){return this.tech&&this.tech.addRemoteTextTrack(a)},b.prototype.removeRemoteTextTrack=function(a){this.tech&&this.tech.removeRemoteTextTrack(a)},b.prototype.videoWidth=function(){return this.tech&&this.tech.videoWidth&&this.tech.videoWidth()||0},b.prototype.videoHeight=function(){return this.tech&&this.tech.videoHeight&&this.tech.videoHeight()||0},b.prototype.language=function(a){return void 0===a?this.language_:(this.language_=(""+a).toLowerCase(),this)},b.prototype.languages=function(){return M["default"](b.prototype.options_.languages,this.languages_)},b.prototype.toJSON=function(){var a=M["default"](this.options_),b=a.tracks;a.tracks=[];for(var c=0;ci;i++){var k=h[i],l=k.nodeName.toLowerCase();"source"===l?b.sources.push(p.getElAttributes(k)):"track"===l&&b.tracks.push(p.getElAttributes(k))}return b},b}(h["default"]));Y.players={};var Z=l["default"].navigator;Y.prototype.options_={techOrder:["html5","flash"],html5:{},flash:{},defaultVolume:0,inactivityTimeout:2e3,playbackRates:[],children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{},textTrackSettings:{}},language:j["default"].getElementsByTagName("html")[0].getAttribute("lang")||Z.languages&&Z.languages[0]||Z.userLanguage||Z.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."},Y.prototype.handleLoadedMetaData,Y.prototype.handleLoadedData,Y.prototype.handleLoadedAllData,Y.prototype.handleUserActive,Y.prototype.handleUserInactive,Y.prototype.handleTimeUpdate,Y.prototype.handleVolumeChange,Y.prototype.handleError,Y.prototype.flexNotSupported_=function(){var a=j["default"].createElement("i");return!("flexBasis"in a.style||"webkitFlexBasis"in a.style||"mozFlexBasis"in a.style||"msFlexBasis"in a.style||"msFlexOrder"in a.style)},h["default"].registerComponent("Player",Y),c["default"]=Y,b.exports=c["default"]},{"./big-play-button.js":50,"./component.js":52,"./control-bar/control-bar.js":53,"./error-display.js":82,"./fullscreen-api.js":85,"./loading-spinner.js":86,"./media-error.js":87,"./poster-image.js":93,"./tech/html5.js":98,"./tech/loader.js":99,"./tracks/text-track-display.js":102,"./tracks/text-track-list-converter.js":104,"./tracks/text-track-settings.js":106,"./utils/browser.js":108,"./utils/buffer.js":109,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/to-title-case.js":120,"global/document":1,"global/window":2,"object.assign":44,"safe-json-parse/tuple":49}],92:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./player.js"),f=d(e),g=function(a,b){f["default"].prototype[a]=b};c["default"]=g,b.exports=c["default"]},{"./player.js":91}],93:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=a("./utils/fn.js"),l=d(k),m=a("./utils/dom.js"),n=d(m),o=a("./utils/browser.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.update(),c.on("posterchange",l.bind(this,this.update))}return f(b,a),b.prototype.dispose=function(){this.player().off("posterchange",this.update),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var a=n.createEl("div",{className:"vjs-poster",tabIndex:-1});return p.BACKGROUND_SIZE_SUPPORTED||(this.fallbackImg_=n.createEl("img"),a.appendChild(this.fallbackImg_)),a},b.prototype.update=function(){var a=this.player().poster();this.setSrc(a),a?this.show():this.hide()},b.prototype.setSrc=function(a){if(this.fallbackImg_)this.fallbackImg_.src=a;else{var b="";a&&(b='url("'+a+'")'),this.el_.style.backgroundImage=b}},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b}(h["default"]);j["default"].registerComponent("PosterImage",q),c["default"]=q,b.exports=c["default"]},{"./button.js":51,"./component.js":52,"./utils/browser.js":108,"./utils/dom.js":111,"./utils/fn.js":113}],94:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=a("global/document"),h=d(g),i=a("global/window"),j=d(i),k=!1,l=void 0,m=function(){var a=h["default"].getElementsByTagName("video"),b=h["default"].getElementsByTagName("audio"),c=[];if(a&&a.length>0)for(var d=0,e=a.length;e>d;d++)c.push(a[d]);if(b&&b.length>0)for(var d=0,e=b.length;e>d;d++)c.push(b[d]);if(c&&c.length>0)for(var d=0,e=c.length;e>d;d++){var f=c[d];if(!f||!f.getAttribute){n(1);break}if(void 0===f.player){var g=f.getAttribute("data-setup");if(null!==g){l(f)}}}else k||n(1)},n=function(a,b){l=b,setTimeout(m,a)};"complete"===h["default"].readyState?k=!0:f.one(j["default"],"load",function(){k=!0});var o=function(){return k};c.autoSetup=m,c.autoSetupTimeout=n,c.hasLoaded=o},{"./utils/events.js":112,"global/document":1,"global/window":2}],95:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=a("global/document"),l=d(k),m=a("object.assign"),n=d(m),o=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.bar=this.getChild(this.options_.barName),this.vertical(!!this.options_.vertical),this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur),this.on("click",this.handleClick),this.on(c,"controlsvisible",this.update),this.on(c,this.playerEvent,this.update)}return f(b,a),b.prototype.createEl=function(b){var c=void 0===arguments[1]?{}:arguments[1];return c.className=c.className+" vjs-slider",c=n["default"]({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c),a.prototype.createEl.call(this,b,c)},b.prototype.handleMouseDown=function(a){a.preventDefault(),j.blockTextSelection(),this.addClass("vjs-sliding"),this.on(l["default"],"mousemove",this.handleMouseMove),this.on(l["default"],"mouseup",this.handleMouseUp),this.on(l["default"],"touchmove",this.handleMouseMove),this.on(l["default"],"touchend",this.handleMouseUp),this.handleMouseMove(a)},b.prototype.handleMouseMove=function(){},b.prototype.handleMouseUp=function(){j.unblockTextSelection(),this.removeClass("vjs-sliding"),this.off(l["default"],"mousemove",this.handleMouseMove),this.off(l["default"],"mouseup",this.handleMouseUp),this.off(l["default"],"touchmove",this.handleMouseMove),this.off(l["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=this.el_,c=j.findElPosition(b),d=b.offsetWidth,e=b.offsetHeight;if(this.vertical()){var f=c.top,g=void 0;return g=a.changedTouches?a.changedTouches[0].pageY:a.pageY,Math.max(0,Math.min(1,(f-g+e)/e))}var h=c.left,i=void 0;return i=a.changedTouches?a.changedTouches[0].pageX:a.pageX,Math.max(0,Math.min(1,(i-h)/d))},b.prototype.handleFocus=function(){this.on(l["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(l["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(h["default"]);h["default"].registerComponent("Slider",o),c["default"]=o,b.exports=c["default"]},{"../component.js":52,"../utils/dom.js":111,"global/document":1,"object.assign":44}],96:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],97:[function(a,b,c){"use strict";function d(a){var b=a.charAt(0).toUpperCase()+a.slice(1);z["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function e(a){z[a]=function(){return this.el_.vjs_getProperty(a)}}var f=function(a){return a&&a.__esModule?a:{"default":a}},g=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},h=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;for(var i=a("./tech"),j=f(i),k=a("../utils/dom.js"),l=f(k),m=a("../utils/url.js"),n=f(m),o=a("../utils/time-ranges.js"),p=a("./flash-rtmp"),q=f(p),r=a("../component"),s=f(r),t=a("global/window"),u=f(t),v=a("object.assign"),w=f(v),x=u["default"].navigator,y=function(a){function b(c,d){g(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),u["default"].videojs=u["default"].videojs||{},u["default"].videojs.Flash=u["default"].videojs.Flash||{},u["default"].videojs.Flash.onReady=b.onReady,u["default"].videojs.Flash.onEvent=b.onEvent,u["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return h(b,a),b.prototype.createEl=function(){var a=this.options_,c=a.techId,d=w["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=w["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=w["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0===a?this.currentSrc():this.setSrc(a)}),b.prototype.setSrc=function(a){if(a=n.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},j["default"].withSourceHandlers(y),y.nativeSourceHandler={},y.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=n.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in y.formats?"maybe":""},y.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},y.nativeSourceHandler.dispose=function(){},y.registerSourceHandler(y.nativeSourceHandler),y.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},y.onReady=function(a){var b=l.getEl(a),c=b&&b.tech;c&&c.el()&&y.checkReady(c)},y.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){y.checkReady(a)},50))},y.onEvent=function(a,b){var c=l.getEl(a).tech;c.trigger(b)},y.onError=function(a,b){var c=l.getEl(a).tech,d="FLASH: "+b;"srcnotfound"===b?c.trigger("error",{code:4,message:d}):c.trigger("error",d)},y.version=function(){var a="0,0,0";try{a=new u["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{x.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(x.plugins["Shockwave Flash 2.0"]||x.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},y.embed=function(a,b,c,d){var e=y.getEmbedCode(a,b,c,d),f=l.createEl("div",{innerHTML:e}).childNodes[0];return f},y.getEmbedCode=function(a,b,c,d){var e=''}),d=w["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=""+a+'="'+d[a]+'" '}),""+e+h+">"+g+""},q["default"](y),s["default"].registerComponent("Flash",y),c["default"]=y,b.exports=c["default"]},{"../component":52,"../utils/dom.js":111,"../utils/time-ranges.js":119,"../utils/url.js":121,"./flash-rtmp":96,"./tech":100,"global/window":2,"object.assign":44}],98:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./tech.js"),h=d(g),i=a("../component"),j=d(i),k=a("../utils/dom.js"),l=d(k),m=a("../utils/url.js"),n=d(m),o=a("../utils/fn.js"),p=d(o),q=a("../utils/log.js"),r=d(q),s=a("../utils/browser.js"),t=d(s),u=a("global/document"),v=d(u),w=a("global/window"),x=d(w),y=a("object.assign"),z=d(y),A=a("../utils/merge-options.js"),B=d(A),C=function(a){function b(c,d){e(this,b),a.call(this,c,d);var f=c.source;if(f&&(this.el_.currentSrc!==f.src||c.tag&&3===c.tag.initNetworkState_)&&this.setSource(f),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),l.setElAttributes(a,i)}return a},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){r["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=x["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0===a?this.el_.src:void this.setSrc(a)}),b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error; - -},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=v["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(h["default"]);C.TEST_VID=v["default"].createElement("video");var D=v["default"].createElement("track");D.kind="captions",D.srclang="en",D.label="English",C.TEST_VID.appendChild(D),C.isSupported=function(){try{C.TEST_VID.volume=.5}catch(a){return!1}return!!C.TEST_VID.canPlayType},h["default"].withSourceHandlers(C),C.nativeSourceHandler={},C.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return C.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=n.getFileExtension(a.src),b("video/"+c)):""},C.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},C.nativeSourceHandler.dispose=function(){},C.registerSourceHandler(C.nativeSourceHandler),C.canControlVolume=function(){var a=C.TEST_VID.volume;return C.TEST_VID.volume=a/2+.1,a!==C.TEST_VID.volume},C.canControlPlaybackRate=function(){var a=C.TEST_VID.playbackRate;return C.TEST_VID.playbackRate=a/2+.1,a!==C.TEST_VID.playbackRate},C.supportsNativeTextTracks=function(){var a;return a=!!C.TEST_VID.textTracks,a&&C.TEST_VID.textTracks.length>0&&(a="number"!=typeof C.TEST_VID.textTracks[0].mode),a&&t.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in C.TEST_VID.textTracks||(a=!1),a},C.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],C.prototype.featuresVolumeControl=C.canControlVolume(),C.prototype.featuresPlaybackRate=C.canControlPlaybackRate(),C.prototype.movingMediaElementInDOM=!t.IS_IOS,C.prototype.featuresFullscreenResize=!0,C.prototype.featuresProgressEvents=!0,C.prototype.featuresNativeTextTracks=C.supportsNativeTextTracks();var E=void 0,F=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,G=/^video\/mp4/i;C.patchCanPlayType=function(){t.ANDROID_VERSION>=4&&(E||(E=C.TEST_VID.constructor.prototype.canPlayType),C.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&F.test(a)?"maybe":E.call(this,a)}),t.IS_OLD_ANDROID&&(E||(E=C.TEST_VID.constructor.prototype.canPlayType),C.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":E.call(this,a)})},C.unpatchCanPlayType=function(){var a=C.TEST_VID.constructor.prototype.canPlayType;return C.TEST_VID.constructor.prototype.canPlayType=E,E=null,a},C.patchCanPlayType(),C.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},j["default"].registerComponent("Html5",C),c["default"]=C,b.exports=c["default"]},{"../component":52,"../utils/browser.js":108,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/log.js":116,"../utils/merge-options.js":117,"../utils/url.js":121,"./tech.js":100,"global/document":1,"global/window":2,"object.assign":44}],99:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;g0&&this.trigger("loadstart")},!0)},b.prototype.manualProgressOn=function(){this.on("durationchange",this.onDurationChange),this.manualProgress=!0,this.one("ready",this.trackProgress)},b.prototype.manualProgressOff=function(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange)},b.prototype.trackProgress=function(){this.stopTrackingProgress(),this.progressInterval=this.setInterval(n.bind(this,function(){var a=this.bufferedPercent();this.bufferedPercent_!==a&&this.trigger("progress"),this.bufferedPercent_=a,1===a&&this.stopTrackingProgress()}),500)},b.prototype.onDurationChange=function(){this.duration_=this.duration()},b.prototype.buffered=function(){return q.createTimeRange(0,0)},b.prototype.bufferedPercent=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return r.bufferedPercent(this.buffered(),this.duration_)}),b.prototype.stopTrackingProgress=function(){this.clearInterval(this.progressInterval)},b.prototype.manualTimeUpdatesOn=function(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime),this.on("pause",this.stopTrackingCurrentTime)},b.prototype.manualTimeUpdatesOff=function(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime),this.off("pause",this.stopTrackingCurrentTime)},b.prototype.trackCurrentTime=function(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval(function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},250)},b.prototype.stopTrackingCurrentTime=function(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.dispose=function(){for(var b=this.textTracks(),c=b.length;c--;)this.removeRemoteTextTrack(b[c]);this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),a.prototype.dispose.call(this)},b.prototype.played=function(){return this.hasStarted_?q.createTimeRange(0,0):q.createTimeRange()},b.prototype.setCurrentTime=function(){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.initTextTrackListeners=function(){var a=n.bind(this,function(){this.trigger("texttrackchange")}),b=this.textTracks();b&&(b.addEventListener("removetrack",a),b.addEventListener("addtrack",a),this.on("dispose",n.bind(this,function(){b.removeEventListener("removetrack",a),b.removeEventListener("addtrack",a)})))},b.prototype.emulateTextTracks=function(){if(!t["default"].WebVTT&&null!=this.el().parentNode){var a=v["default"].createElement("script");a.src=this.options_["vtt.js"]||"../node_modules/vtt.js/dist/vtt.js",this.el().parentNode.appendChild(a),t["default"].WebVTT=!0}var b=this.textTracks();if(b){var c=n.bind(this,function(){var a=this,c=function(){return a.trigger("texttrackchange")};c();for(var d=0;db)for(c=b;d>c;c++)e.call(this,c)},i.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=i,b.exports=c["default"]},{"../utils/browser.js":108,"global/document":1}],102:[function(a,b,c){"use strict";function d(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function e(a,b,c){try{a.style[b]=c}catch(d){}}var f=function(a){return a&&a.__esModule?a:{"default":a}},g=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},h=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var i=a("../component"),j=f(i),k=a("../menu/menu.js"),l=(f(k),a("../menu/menu-item.js")),m=(f(l),a("../menu/menu-button.js")),n=(f(m),a("../utils/fn.js")),o=f(n),p=a("global/document"),q=(f(p),a("global/window")),r=f(q),s="#222",t="#ccc",u={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},v=function(a){function b(c,d,e){g(this,b),a.call(this,c,d,e),c.on("loadstart",o.bind(this,this.toggleDisplay)),c.on("texttrackchange",o.bind(this,this.updateDisplay)),c.ready(o.bind(this,function(){if(c.tech&&c.tech.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",o.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},m.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=m,b.exports=c["default"]},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"global/document":1}],106:[function(a,b,c){"use strict";function d(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function e(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),m.on(this.el().querySelector(".vjs-fg-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-bg-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".window-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-text-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-window-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-font-percent select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-edge-style select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-font-family select"),"change",o.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return i(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:f()})},b.prototype.getValues=function(){var a=this.el(),b=d(a.querySelector(".vjs-edge-style select")),c=d(a.querySelector(".vjs-font-family select")),e=d(a.querySelector(".vjs-fg-color > select")),f=d(a.querySelector(".vjs-text-opacity > select")),g=d(a.querySelector(".vjs-bg-color > select")),h=d(a.querySelector(".vjs-bg-opacity > select")),i=d(a.querySelector(".window-color > select")),j=d(a.querySelector(".vjs-window-opacity > select")),k=u["default"].parseFloat(d(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:h,textOpacity:f,windowOpacity:j,edgeStyle:b,fontFamily:c,color:e,backgroundColor:g,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();e(b.querySelector(".vjs-edge-style select"),a.edgeStyle),e(b.querySelector(".vjs-font-family select"),a.fontFamily),e(b.querySelector(".vjs-fg-color > select"),a.color),e(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),e(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),e(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),e(b.querySelector(".window-color > select"),a.windowColor),e(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),e(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=s["default"](u["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&q["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?u["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):u["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(k["default"]);k["default"].registerComponent("TextTrackSettings",v),c["default"]=v,b.exports=c["default"]},{"../component":52,"../utils/events.js":112,"../utils/fn.js":113,"../utils/log.js":116,"global/window":2,"safe-json-parse/tuple":49}],107:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./text-track-cue-list"),f=d(e),g=a("../utils/fn.js"),h=d(g),i=a("../utils/guid.js"),j=d(i),k=a("../utils/browser.js"),l=d(k),m=a("./text-track-enums"),n=d(m),o=a("../utils/log.js"),p=d(o),q=a("../event-target"),r=d(q),s=a("global/document"),t=d(s),u=a("global/window"),v=d(u),w=a("../xhr.js"),x=d(w),y=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){var a=void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(l.IS_IE8){b=t["default"].createElement("custom");for(var c in y.prototype)b[c]=y.prototype[c]}b.tech_=a.tech;var d=n.TextTrackMode[a.mode]||"disabled",e=n.TextTrackKind[a.kind]||"subtitles",g=a.label||"",i=a.language||a.srclang||"",k=a.id||"vjs_text_track_"+j.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var m=new f["default"](b.cues_),o=new f["default"](b.activeCues_),p=!1,q=h.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return g},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return i},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return k},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){n.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?m:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return o;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var z=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b){if("function"!=typeof v["default"].WebVTT)return v["default"].setTimeout(function(){z(a,b)},25);var c=new v["default"].WebVTT.Parser(v["default"],v["default"].vttjs,v["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){p["default"].error(a)},c.parse(a),c.flush()}),A=function(a,b){x["default"](a,h.bind(this,function(a,c,d){return a?p["default"].error(a):(b.loaded_=!0,void z(d,b))}))},B=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=y,b.exports=c["default"]},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"../utils/guid.js":115,"../utils/log.js":116,"../xhr.js":123,"./text-track-cue-list":101,"./text-track-enums":103,"global/document":1,"global/window":2}],108:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/iPhone/i.test(i);c.IS_IPHONE=j;var k=/iPad/i.test(i);c.IS_IPAD=k;var l=/iPod/i.test(i);c.IS_IPOD=l;var m=j||k||l;c.IS_IOS=m;var n=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=n;var o=/Android/i.test(i);c.IS_ANDROID=o;var p=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=p;var q=o&&/webkit/i.test(i)&&2.3>p;c.IS_OLD_ANDROID=q;var r=/Firefox/i.test(i);c.IS_FIREFOX=r;var s=/Chrome/i.test(i);c.IS_CHROME=s;var t=/MSIE\s8\.0/.test(i);c.IS_IE8=t;var u=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=u;var v="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=v},{"global/document":1,"global/window":2}],109:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":119}],110:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":116}],111:[function(a,b,c){"use strict";function d(a){return 0===a.indexOf("#")&&(a=a.slice(1)),t["default"].getElementById(a)}function e(){var a=void 0===arguments[0]?"div":arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=t["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var d=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?c.setAttribute(a,d):c[a]=d}),c}function f(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function g(a){var b=a[z];return b||(b=a[z]=x.newGUID()),y[b]||(y[b]={}),y[b]}function h(a){var b=a[z];return b?!!Object.getOwnPropertyNames(y[b]).length:!1}function i(a){var b=a[z];if(b){delete y[b];try{delete a[z]}catch(c){a.removeAttribute?a.removeAttribute(z):a[z]=null}}}function j(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function k(a,b){j(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function l(a,b){if(j(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);a.className=c.join(" ")}}function m(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function n(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function o(){t["default"].body.focus(),t["default"].onselectstart=function(){return!1}}function p(){t["default"].onselectstart=function(){return!0}}function q(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=t["default"].documentElement,d=t["default"].body,e=c.clientLeft||d.clientLeft||0,f=v["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=v["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j) -}}var r=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0,c.getEl=d,c.createEl=e,c.insertElFirst=f,c.getElData=g,c.hasElData=h,c.removeElData=i,c.hasElClass=j,c.addElClass=k,c.removeElClass=l,c.setElAttributes=m,c.getElAttributes=n,c.blockTextSelection=o,c.unblockTextSelection=p,c.findElPosition=q;var s=a("global/document"),t=r(s),u=a("global/window"),v=r(u),w=a("./guid.js"),x=r(w),y={},z="vdata"+(new Date).getTime()},{"./guid.js":115,"global/document":1,"global/window":2}],112:[function(a,b,c){"use strict";function d(a,b,c){if(Array.isArray(b))return j(d,a,b,c);var e=m.getElData(a);e.handlers||(e.handlers={}),e.handlers[b]||(e.handlers[b]=[]),c.guid||(c.guid=o.newGUID()),e.handlers[b].push(c),e.dispatcher||(e.disabled=!1,e.dispatcher=function(b,c){if(!e.disabled){b=h(b);var d=e.handlers[b.type];if(d)for(var f=d.slice(0),g=0,i=f.length;i>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===e.handlers[b].length&&(a.addEventListener?a.addEventListener(b,e.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,e.dispatcher))}function e(a,b,c){if(m.hasElData(a)){var d=m.getElData(a);if(d.handlers){if(Array.isArray(b))return j(e,a,b,c);var f=function(b){d.handlers[b]=[],i(a,b)};if(b){var g=d.handlers[b];if(g){if(!c)return void f(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],115:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],116:[function(a,b,c){"use strict";function d(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}var e=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var f=a("global/window"),g=e(f),h=function(){d(null,arguments)};h.history=[],h.error=function(){d("error",arguments)},h.warn=function(){d("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],117:[function(a,b,c){"use strict";function d(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function e(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}var f=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0,c["default"]=e;var g=a("lodash-compat/object/merge"),h=f(g),i=function(a,b){return d(b)?d(a)?void 0:e(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],118:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],119:[function(a,b,c){"use strict";function d(a,b){return void 0===a&&void 0===b?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:1,start:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return a}),end:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return b})}}c.__esModule=!0,c.createTimeRange=d},{}],120:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],121:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=h;var i=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=i},{"global/document":1}],122:[function(b,c,d){"use strict";var e=function(a){return a&&a.__esModule?a:{"default":a}};d.__esModule=!0;{var f=b("global/document"),g=e(f),h=b("./setup"),i=e(h),j=b("./utils/stylesheet.js"),k=e(j),l=b("./component"),m=e(l),n=b("./event-target"),o=e(n),p=b("./utils/events.js"),q=e(p),r=b("./player"),s=e(r),t=b("./plugins.js"),u=e(t),v=b("../../src/js/utils/merge-options.js"),w=e(v),x=b("./utils/fn.js"),y=e(x),z=b("object.assign"),A=(e(z),b("./utils/time-ranges.js")),B=b("./utils/format-time.js"),C=e(B),D=b("./utils/log.js"),E=e(D),F=b("./xhr.js"),G=e(F),H=b("./utils/dom.js"),I=e(H),J=b("./utils/browser.js"),K=e(J),L=b("./utils/url.js"),M=e(L),N=b("./extends.js"),O=e(N),P=b("lodash-compat/object/merge"),Q=e(P),R=b("./utils/create-deprecation-proxy.js"),S=e(R),T=b("./tech/html5.js"),U=(e(T),b("./tech/flash.js"));e(U)}"undefined"==typeof HTMLVideoElement&&(g["default"].createElement("video"),g["default"].createElement("audio"),g["default"].createElement("track"));var V=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),V.getPlayers()[a])return b&&E["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&V.getPlayers()[a].ready(c),V.getPlayers()[a];d=I.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new s["default"](d,b,c)}),W=k.createStyleElement("vjs-styles-defaults"),X=g["default"].querySelector("head");X.insertBefore(W,X.firstChild),k.setTextContent(W,"\n .video-js {\n width: 300px;\n height: 150px;\n"),i.autoSetupTimeout(1,V),V.VERSION="5.0.0-rc.59",V.options=s["default"].prototype.options_,V.getPlayers=function(){return s["default"].players},V.players=S["default"](s["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),V.getComponent=m["default"].getComponent,V.registerComponent=m["default"].registerComponent,V.browser=K,V.TOUCH_ENABLED=K.TOUCH_ENABLED,V["extends"]=O["default"],V.mergeOptions=w["default"],V.bind=y.bind,V.plugin=u["default"],V.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),Q["default"](V.options.languages,(c={},c[a]=b,c))[a]},V.log=E["default"],V.createTimeRange=A.createTimeRange,V.formatTime=C["default"],V.xhr=G["default"],V.parseUrl=M.parseUrl,V.EventTarget=o["default"],V.on=q.on,V.one=q.one,V.off=q.off,V.trigger=q.trigger,"function"==typeof a&&a.amd?a("videojs",[],function(){return V}):"object"==typeof d&&"object"==typeof c&&(c.exports=V),d["default"]=V,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":117,"./component":52,"./event-target":83,"./extends.js":84,"./player":91,"./plugins.js":92,"./setup":94,"./tech/flash.js":97,"./tech/html5.js":98,"./utils/browser.js":108,"./utils/create-deprecation-proxy.js":110,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/format-time.js":114,"./utils/log.js":116,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/url.js":121,"./xhr.js":123,"global/document":1,"lodash-compat/object/merge":40,"object.assign":44}],123:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/url.js"),f=d(e),g=a("./utils/log.js"),h=(d(g),a("./utils/merge-options.js")),i=d(h),j=a("global/window"),k=d(j),l=function(a,b){var c=void 0;"string"==typeof a&&(a={uri:a}),a=i["default"]({method:"GET",timeout:45e3},a),b=b||function(){};var d=k["default"].XMLHttpRequest;"undefined"==typeof d&&(d=function(){try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new Error("This browser does not support XMLHttpRequest.")});var e=new d;e.uri=a.uri;var g=f.parseUrl(a.uri),h=k["default"].location,j=function(){k["default"].clearTimeout(c),b(null,e,e.response||e.responseText)},l=function(a){k["default"].clearTimeout(c),a&&"string"!=typeof a||(a=new Error(a)),b(a,e)},m=g.protocol+g.host!==h.protocol+h.host;!m||!k["default"].XDomainRequest||"withCredentials"in e?!function(){var b="file:"===g.protocol||"file:"===h.protocol;e.onreadystatechange=function(){if(4===e.readyState){if(e.timedout)return l("timeout");200===e.status||b&&0===e.status?j():l()}},a.timeout&&(c=k["default"].setTimeout(function(){4!==e.readyState&&(e.timedout=!0,e.abort())},a.timeout))}():(e=new k["default"].XDomainRequest,e.onload=j,e.onerror=l,e.onprogress=function(){},e.ontimeout=function(){});try{e.open(a.method||"GET",a.uri,!0)}catch(n){return l(n)}a.withCredentials&&(e.withCredentials=!0),a.responseType&&(e.responseType=a.responseType);try{e.send()}catch(n){return l(n)}return e};c["default"]=l,b.exports=c["default"]},{"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/url.js":121,"global/window":2}]},{},[122])(122)}); +})}function p(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function q(){u["default"].body.focus(),u["default"].onselectstart=function(){return!1}}function r(){u["default"].onselectstart=function(){return!0}}function s(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=u["default"].documentElement,d=u["default"].body,e=c.clientLeft||d.clientLeft||0,f=w["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=w["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}c.__esModule=!0,c.getEl=f,c.createEl=g,c.insertElFirst=h,c.getElData=i,c.hasElData=j,c.removeElData=k,c.hasElClass=l,c.addElClass=m,c.removeElClass=n,c.setElAttributes=o,c.getElAttributes=p,c.blockTextSelection=q,c.unblockTextSelection=r,c.findElPosition=s;var t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("./guid.js"),y=d(x),z={},A="vdata"+(new Date).getTime()},{"./guid.js":111,"global/document":1,"global/window":2}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],111:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":37}],114:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],115:[function(a,b,c){"use strict";function d(a,b){return void 0===a&&void 0===b?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:1,start:function(){return a},end:function(){return b}}}c.__esModule=!0,c.createTimeRange=d},{}],116:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],117:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=h;var i=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=i},{"global/document":1}],118:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("object.assign"),B=(f(A),b("./utils/time-ranges.js")),C=b("./utils/format-time.js"),D=f(C),E=b("./utils/log.js"),F=f(E),G=b("./xhr.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extends.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("./tech/html5.js"),V=(f(U),b("./tech/flash.js"));f(V)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var W=function Z(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),Z.getPlayers()[a])return b&&F["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&Z.getPlayers()[a].ready(c),Z.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},X=l.createStyleElement("vjs-styles-defaults"),Y=h["default"].querySelector("head");Y.insertBefore(X,Y.firstChild),l.setTextContent(X,"\n .video-js {\n width: 300px;\n height: 150px;\n"),j.autoSetupTimeout(1,W),W.VERSION="5.0.0-rc.72",W.options=t["default"].prototype.options_,W.getPlayers=function(){return t["default"].players},W.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),W.getComponent=n["default"].getComponent,W.registerComponent=n["default"].registerComponent,W.browser=L,W.TOUCH_ENABLED=L.TOUCH_ENABLED,W["extends"]=P["default"],W.mergeOptions=x["default"],W.bind=z.bind,W.plugin=v["default"],W.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](W.options.languages,(c={},c[a]=b,c))[a]},W.log=F["default"],W.createTimeRange=B.createTimeRange,W.formatTime=D["default"],W.xhr=H["default"],W.parseUrl=N.parseUrl,W.EventTarget=p["default"],W.on=r.on,W.one=r.one,W.off=r.off,W.trigger=r.trigger,"function"==typeof a&&a.amd?a("videojs",[],function(){return W}):"object"==typeof d&&"object"==typeof c&&(c.exports=W),d["default"]=W,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":113,"./component":48,"./event-target":79,"./extends.js":80,"./player":87,"./plugins.js":88,"./setup":90,"./tech/flash.js":93,"./tech/html5.js":94,"./utils/browser.js":104,"./utils/create-deprecation-proxy.js":106,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/format-time.js":110,"./utils/log.js":112,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/url.js":117,"./xhr.js":119,"global/document":1,"lodash-compat/object/merge":37,"object.assign":40}],119:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var f=a("./utils/url.js"),g=e(f),h=a("./utils/log.js"),i=(d(h),a("./utils/merge-options.js")),j=d(i),k=a("global/window"),l=d(k),m=function(a,b){var c=void 0;"string"==typeof a&&(a={uri:a}),a=j["default"]({method:"GET",timeout:45e3},a),b=b||function(){};var d=l["default"].XMLHttpRequest;"undefined"==typeof d&&(d=function(){try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new Error("This browser does not support XMLHttpRequest.")});var e=new d;e.uri=a.uri;var f=g.parseUrl(a.uri),h=l["default"].location,i=function(){l["default"].clearTimeout(c),b(null,e,e.response||e.responseText)},k=function(a){l["default"].clearTimeout(c),a&&"string"!=typeof a||(a=new Error(a||"XHR Failed with a response of: "+(e&&(e.response||e.responseText)))),b(a,e)},m=f.protocol+f.host!==h.protocol+h.host;!m||!l["default"].XDomainRequest||"withCredentials"in e?!function(){var b="file:"===f.protocol||"file:"===h.protocol;e.onreadystatechange=function(){if(4===e.readyState){if(e.timedout)return k("timeout");200===e.status||b&&0===e.status?i():k()}},a.timeout&&(c=l["default"].setTimeout(function(){4!==e.readyState&&(e.timedout=!0,e.abort())},a.timeout))}():(e=new l["default"].XDomainRequest,e.onload=i,e.onerror=k,e.onprogress=function(){},e.ontimeout=function(){});try{e.open(a.method||"GET",a.uri,!0)}catch(n){return k(n)}a.withCredentials&&(e.withCredentials=!0),a.responseType&&(e.responseType=a.responseType);try{e.send()}catch(n){return k(n)}return e};c["default"]=m,b.exports=c["default"]},{"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/url.js":117,"global/window":2}]},{},[118])(118)}); //# sourceMappingURL=video.novtt.min.js.map diff --git a/node_modules/video.js/dist/alt/video.novtt.min.js.map b/node_modules/video.js/dist/alt/video.novtt.min.js.map index 834d5a0..25a836f 100644 --- a/node_modules/video.js/dist/alt/video.novtt.min.js.map +++ b/node_modules/video.js/dist/alt/video.novtt.min.js.map @@ -1 +1 @@ -{"version":3,"file":"generated.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseIsFunction.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/baseToString.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimIsPlainObject.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/string/escapeRegExp.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/safe-json-parse/tuple.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extends.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js","src/js/xhr.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"restParam","func","start","TypeError","FUNC_ERROR_TEXT","nativeMax","undefined","args","arguments","index","rest","Array","otherArgs","apply","Math","max",5,"arrayCopy","source","array",6,"arrayEach","iteratee",7,"baseCopy","props","object","key",8,"createBaseFor","baseFor","./createBaseFor",9,"baseForIn","keysIn","../object/keysIn","./baseFor",10,"value","baseIsFunction",11,"baseMerge","customizer","stackA","stackB","isObject","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","result","isCommon","../lang/isArray","../lang/isObject","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",12,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",13,"toObject","baseProperty","./toObject",14,"baseToString",15,"bindCallback","thisArg","argCount","identity","collection","accumulator","other","../utility/identity",16,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",17,"fromRight","keysFunc","iterable",18,"getLength","./baseProperty",19,"getNative","isNative","../lang/isNative",20,"isLength","./getLength","./isLength",21,"isHostObject","Object","toString",22,"reIsUint","test","MAX_SAFE_INTEGER","isIndex",23,"type","./isIndex",24,25,26,"shimIsPlainObject","Ctor","objToString","objectTag","hasOwnProperty","constructor","support","argsTag","ownLast","subValue","objectProto","prototype","../support","./baseForIn","./isHostObject",27,"shimKeys","propsLength","allowIndexes","isString","../lang/isString",28,"unindexedChars","charAt",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","nativeIsArray","../internal/getNative","../internal/isLength",31,"funcTag","Uint8Array","isFunction","../internal/baseIsFunction",32,"reIsNative","fnToString","reIsHostCtor","escapeRegExp","Function","RegExp","replace","../internal/isHostObject","../string/escapeRegExp",33,34,"getPrototypeOf","valueOf","objProto","../internal/shimIsPlainObject","./isArguments",35,"stringTag",36,"typedArrayTags","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","enumPrototypes","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"string","reRegExpChars","reHasRegExpChars","../internal/baseToString",42,"arrayProto","splice","x","0","y","nodeTag","spliceObjects",43,44,"canBeObject","obj","hasSymbols","Symbol","defineProperties","propIsEnumerable","isEnumerableOn","prop","assignShim","target","objTarget","getOwnPropertySymbols","filter","shim","assign","preventExtensions","assignHasPendingExceptions","thrower","define-properties","object-keys",45,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","supportsDescriptors","name","predicate","configurable","enumerable","writable","map","predicates",46,"hasOwn","ctx","k",47,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","keysShim","theKeys","j","ctor","skipConstructor",48,"str","callee",49,"SafeParseTuple","reviver","json","error","player_","play","_Component3","_interopRequireWildcard","_Component2","Dom","_import","Button","_Component","player","options","_classCallCheck","createEl","_assign2","role","aria-live","el","controlTextEl_","className","handleClick","_window2","_window","Fn","_import2","Component","ready","options_","_mergeOptions2","id_","id","Guid","newGUID","el_","childIndex_","initChildren","dispose","trigger","bubbles","children_","childNameIndex_","off","_log2","warn","tagName","attributes","localize","languages","language","primaryCode","split","addChild","child","component","componentName","childFound","parentOptions","_this","opts","children","_name","handleAdd","_this2","first","guid","cleanRemover","Events","on","second","bind","third","nodeName","_this3","_arguments","_newFunc","newFunc","sync","isReady_","setTimeout","triggerReady","readyQueue","readyQueue_","dimension","widthOrHeight","num","skipListeners","style","pxIndex","touchStart","touchTimeThreshold","couldBeTap","event","touches","firstTouch","Date","getTime","xdiff","pageX","touchDistance","sqrt","ydiff","tapMovementThreshold","noTap","touchTime","preventDefault","clearInterval","touchHolding","touchEnd","report","timeout","timeoutId","disposeFn","clearTimeout","intervalId","setInterval","interval","getComponent","components_","extend","subObj","_name2","ControlBar","exitFullscreen","requestFullscreen","LiveDisplay","contentEl_","appendChild","_Button3","_Button2","MuteToggle","update","tech","featuresVolumeControl","addClass","vol","volume","level","toMute","muted","localizedMute","controlText","removeElClass","addElClass","PlayToggle","_Button","removeClass","_PlaybackRateMenuItem2","_PlaybackRateMenuItem","PlaybackRateMenuButton","labelEl_","createMenu","rates","playbackRates","currentRate","playbackRate","newRate","playbackRateSupported","PlaybackRateMenuItem","_MenuItem","label","rate","parseFloat","_inherits","selected","LoadProgressBar","buffered","duration","percent","time","end","width","percentify","bufferedEnd","part","left","PlayProgressBar","updateDataAttr","scrubbing","getCache","currentTime","_LoadProgressBar","newTime","calculateDistance","SeekBar","stepBack","_Slider3","loadProgressBar","_Spacer","buildCSSClass","CaptionSettingsMenuItem","_TextTrackMenuItem","track","kind","_TextTrackButton","threshold","featuresNativeTextTracks","createItems","_ChaptersTrackMenuItem2","_ChaptersTrackMenuItem","_Menu2","_Menu","items","tracks","textTracks","kind_","ChaptersButton","cues","chaptersTrack","mode","menu","contentEl","tabIndex","cue","mi","_MenuItem3","_MenuItem2","ChaptersTrackMenuItem","startTime","endTime","OffTextTrackMenuItem","handleTracksChange","SubtitlesButton","_MenuButton3","_MenuButton2","TextTrackButton","_MenuButton","hide","updateHandler","removeEventListener","_OffTextTrackMenuItem2","TextTrackMenuItem","onchange","Event","err","_document2","createEvent","CurrentTimeDisplay","updateContent","localizedText","_formatTime2","DurationDisplay","formattedTime","innerHTML","RemainingTimeDisplay","_Slider2","toFixed","setAttribute","VolumeBar","VolumeControl","VolumeMenuButton","vertical","volumeUpdate","orientationClass","contentElType","vc","_VolumeBar2","volumeBar","_MuteToggle2","ErrorDisplay","message","EventTarget","allowedEvents_","ael","addEventListener","one","subClass","superClass","extendsFn","subClassMethods","methods","init","FullscreenApi","apiMap","specApi","browserApi","LoadingSpinner","_MediaError","status","MediaError","errorTypes","MenuButton","title","unlockShowing","handleKeyPress","which","buttonPressed_","unpressButton","pressButton","_selected","append","create","__proto__","_document","_import3","_log","_toTitleCase2","_toTitleCase","_mergeOptions","_textTrackConverter","_ErrorDisplay","reportTouchActivity","languagesToLower","poster_","poster","controls","scrubbing_","playerOptionsCopy","plugins","playerOptions","isAudio","toLowerCase","Player","players","styleEl_","parentNode","removeChild","attrs","getElAttributes","getOwnPropertyNames","forEach","attr","stylesheet","createStyleElement","defaultsStyleEl","querySelector","fluid","aspectRatio","initNetworkState_","networkState","_dimension","privDimension","parsedVal","isNaN","bool","fluid_","ratio","updateStyleEl_","aspectRatio_","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","loadTech","techName","unloadTech","disposeMediaElement","techReady","techOptions","playerId","techId","textTracks_","preload","loop","vtt.js","src","cache_","techComponent","_textTrackConverter2","jsonToTextTracks","textTracksJson_","handleTechReady","handleTechUseNativeControls","handleTechLoadStart","handleTechWaiting","handleTechCanPlay","handleTechCanPlayThrough","handleTechPlaying","handleTechEnded","handleTechSeeking","handleTechSeeked","handleTechPlay","handleTechFirstPlay","handleTechPause","handleTechProgress","handleTechDurationChange","handleTechFullscreenChange","handleTechError","handleTechSuspend","handleTechAbort","handleTechEmptied","handleTechLoadedMetaData","handleTechLoadedData","handleTechTimeUpdate","usingNativeControls","removeTechControlsListeners","techCall","paused","_hasStarted","hasStarted","hasStarted_","handleTechClick","button","updateDuration","techGet","method","arg","isScrubbing","seconds","_buffered","_bufferedPercent","percentAsDecimal","min","_muted","fsApi","fullscreenchange","documentFullscreenChange","isFullscreen","fullscreenElement","supportsFullScreen","_FullscreenApi2","fullWindowOnEscKey","exitFullWindow","documentElement","overflow","docOrigOverflow","selectSource","techOrder","isSupported","b","canPlaySource","sourceList_","currentTech","load","sourceTech","controls_","addTechControlsListeners","error_","userActive","userActive_","stopPropagation","lastMoveX","lastMoveY","handleActivity","reportUserActivity","handleMouseMove","screenX","screenY","mouseInProgress","handleMouseUp","inactivityTimeout","userActivity_","_safeParseTuple","_safeParseTuple3","dataSetup","data","hasChildNodes","childNodes","childName","baseOptions","mediaLoader","textTrackDisplay","controlBar","notSupportedMessage","handleError","flexNotSupported_","createElement","PosterImage","url","setSrc","fallbackImg_","backgroundImage","autoSetup","vids","getElementsByTagName","audios","mediaEls","mediaEl","getAttribute","autoSetupTimeout","_windowLoaded","wait","vjs","readyState","Slider","bar","getChild","barName","handleMouseDown","handleFocus","blockTextSelection","unblockTextSelection","progress","getPercent","percentage","box","findElPosition","boxW","offsetWidth","boxH","offsetHeight","pageY","changedTouches","boxY","vertical_","../component.js","../utils/dom.js","global/document","object.assign",96,"FlashRtmpDecorator","Flash","rtmp/mp4","rtmp/flv","streamFromParts","connection","stream","parts","streamBegin","connEnd","substring","isStreamingType","srcType","streamingFormats","isStreamingSrc","rtmpSourceHandler","handleSource","setRtmpConnection","srcParts","__esModule","_createSetter","attrUpper","toUpperCase","slice","_api","val","_createGetter","vjs_getProperty","_Tech3","_Tech2","_Tech","setSource","onEvent","objId","flashVars","readyFunction","errorEventProxyFunction","autoplay","params","wmode","bgcolor","_src","Url","getAbsoluteURL","vjs_src","setCurrentTime","seekable","enterFullScreen","_readWrite","_readOnly","nativeSourceHandler","canHandleSource","guessMimeType","ext","getFileExtension","formats","video/flv","onReady","currSwf","getEl","checkReady","swfID","eventName","onError","msg","version","ActiveXObject","GetVariable","match","navigator","description","getEmbedCode","swf","objTag","flashVarsString","paramsString","movie","flashvars","allowNetworking","currentSrc","nodes","node","nodesLength","remoteTextTracks","addTrack_","removeNodes","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","Html5","tt","handleTextTrackChange_","handleTextTrackAdd_","emulatedTt","movingMediaElementInDOM","clone","cloneNode","insertBefore","tagAttributes","browser","TOUCH_ENABLED","nativeControlsForTouch","setElAttributes","class","settingsAttrs","overwriteAttrs","handleTextTrackChange","srcElement","webkitEnterFullScreen","video","HAVE_METADATA","addRemoteTextTrack","srclang","removeTrack_","querySelectorAll","canPlayType","TEST_VID","supportsNativeTextTracks","supportsTextTracks","IS_FIREFOX","featuresPlaybackRate","canControlPlaybackRate","patchCanPlayType","ANDROID_VERSION","mpegurlRE","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","removeAttribute","MediaLoader","_TextTrack2","_TextTrack","Tech","manualProgressOn","featuresTimeupdateEvents","initControlsListeners","nativeCaptions","nativeTextTracks","trackProgress","stopTrackingProgress","numBufferedPercent","bufferedPercent","bufferedPercent_","removeRemoteTextTrack","manualProgress","manualProgressOff","initTextTrackListeners","textTrackListChanges","emulateTextTracks","WebVTT","script","updateDisplay","createTrackHelper","featuresFullscreenResize","handlers","sourceHandlers","selectSourceHandler","can","srcObj","originalSeekable","sh","disposeSourceHandler","sourceHandler_","_TextTrackCueList","TextTrackCueList","list","IS_IE8","setCues_","get","oldLength","length_","defineProp","getCueById","rule","darkGray","lightGray","fontMap","monospace","sansSerif","serif","toggleDisplay","TextTrackDisplay","clearDisplay","updateForTrack","activeCues","_i","processCues","cueDiv","displayState","overrides","color","firstChild","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","height","top","bottom","fontFamily","fontVariant","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","trackEl","addedTrack","addCue","_EventTarget2","_EventTarget","_TextTrackList","TextTrackList","tracks_","change","removetrack","_event","rtrack","getTrackById","selectedOption","selectedOptions","selectedIndex","setSelectedOption","option","TextTrackSettings","persistTextTrackSettings","saveSettings","getValues","textEdge","getSelectedOptionValue","fgColor","bgColor","bgOpacity","setValues","values","restoreSettings","ttDisplay","registerComponent","_TextTrackCueList2","TextTrack","tech_","TextTrackEnum","TextTrackMode","cues_","activeCues_","changed","timeupdateHandler","set","newMode","loaded_","ct","active","loadTrack","cuechange","removeCue","removed","_parseCues","parseCues","srcContent","parser","oncue","onparsingerror","parse","_XHR2","response","responseBody","O","len","fromIndex","abs","searchElement","USER_AGENT","IS_IPHONE","IS_IPAD","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","major","minor","bufferedDuration","_createTimeRange","createTimeRange","defaultBehaviors","messages","Proxy","_ret","handler","indexOf","propName","getElData","elIdAttr","elData","hasElData","removeElData","hasElClass","element","classToCheck","classToAdd","classToRemove","classNames","join","attrName","attrValue","attrVal","knownBooleans","body","focus","onselectstart","getBoundingClientRect","docEl","scrollLeft","pageXOffset","clientLeft","clientTop","scrollTop","pageYOffset","elem","_handleMultipleEvents","dispatcher","fixEvent","handlersCopy","m","isImmediatePropagationStopped","hash","attachEvent","removeType","_cleanUpEvents","elemData","parent","isPropagationStopped","defaultPrevented","targetData","disabled","_func","old","relatedTarget","fromElement","toElement","returnValue","cancelBubble","returnTrue","returnFalse","stopImmediatePropagation","doc","clientY","detachEvent","global/window",113,"context","uid","h","floor","gm","guide","argsArray","noop","console","log","history","unshift","_logType","default","_start","_end","href","addToBody","host","protocol","div","details","path","splitPathRe","pathParts","exec","_plugin2","_plugin","_import4","_assign","_xhr2","_xhr","_import5","_merge2","_createDeprecationProxy","_Flash","_Html5","_videojs","getPlayers","_merge3","_merge","xhr","callback","uri","XHR","XMLHttpRequest","request","urlInfo","parseUrl","winLoc","location","successHandler","abortTimeout","responseText","errorHandler","crossOrigin","fileUrl","onreadystatechange","timedout","abort","onload","onprogress","ontimeout","open","withCredentials","responseType"],"mappings":"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;A1H5IH;AACA;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACTA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;uBCXmB,aAAa;;;;yBACV,gBAAgB;;;;;;;;;;;;;;IAWhC,aAAa;AAEN,WAFP,aAAa,CAEL,MAAM,EAAE,OAAO,EAAE;0BAFzB,aAAa;;AAGf,uBAAM,MAAM,EAAE,OAAO,CAAC,CAAC;GACxB;;YAJG,aAAa;;;;;;;;;AAAb,eAAa,WAYjB,aAAa,GAAA,yBAAG;AACd,WAAO,qBAAqB,CAAC;GAC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","sourcesContent":["(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 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","/**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\nfunction baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n}\n\nmodule.exports = baseIsFunction;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? null : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n}\n\nmodule.exports = baseToString;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseForIn = require('./baseForIn'),\n isArguments = require('../lang/isArguments'),\n isHostObject = require('./isHostObject'),\n isObjectLike = require('./isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * A fallback implementation of `_.isPlainObject` which checks if `value`\n * is an object created by the `Object` constructor or has a `[[Prototype]]`\n * of `null`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\nfunction shimIsPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||\n (!hasOwnProperty.call(value, 'constructor') &&\n (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||\n (!support.argsTag && isArguments(value))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = shimIsPlainObject;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;\n}\n// Fallback for environments without a `toStringTag` for `arguments` objects.\nif (!support.argsTag) {\n isArguments = function(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var baseIsFunction = require('../internal/baseIsFunction'),\n getNative = require('../internal/getNative');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar Uint8Array = getNative(global, 'Uint8Array');\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nvar isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return objToString.call(value) == funcTag;\n};\n\nmodule.exports = isFunction;\n","var escapeRegExp = require('../string/escapeRegExp'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n escapeRegExp(fnToString.call(hasOwnProperty))\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (objToString.call(value) == funcTag) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getNative = require('../internal/getNative'),\n isArguments = require('./isArguments'),\n shimIsPlainObject = require('../internal/shimIsPlainObject'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar getPrototypeOf = getNative(Object, 'getPrototypeOf');\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nvar isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) {\n return false;\n }\n var valueOf = getNative(value, 'valueOf'),\n objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n return objProto\n ? (value == objProto || getPrototypeOf(value) == objProto)\n : shimIsPlainObject(value);\n};\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? null : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it is iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","var baseToString = require('../internal/baseToString');\n\n/**\n * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).\n * In addition to special characters the forward slash is escaped to allow for\n * easier `eval` use and `Function` compilation.\n */\nvar reRegExpChars = /[.*+?^${}()|[\\]\\/\\\\]/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n/**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\nfunction escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect DOM support. */\nvar document = (document = global.window) ? document.document : null;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if the `toStringTag` of `arguments` objects is resolvable\n * (all but Firefox < 4, IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.argsTag = objToString.call(arguments) == argsTag;\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nodeTag = objToString.call(document) != objectTag;\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n\n /**\n * Detect if the DOM is supported.\n *\n * @memberOf _.support\n * @type boolean\n */\n try {\n support.dom = document.createDocumentFragment().nodeType === 11;\n } catch(e) {\n support.dom = false;\n }\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar isEnumerableOn = function (obj) {\n\treturn function isEnumerable(prop) {\n\t\treturn propIsEnumerable.call(obj, prop);\n\t};\n};\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = Object(target);\n\tvar s, source, i, props;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = Object(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tprops.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source)));\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\nassignShim.shim = function shimObjectAssign() {\n\tif (Object.assign && Object.preventExtensions) {\n\t\tvar assignHasPendingExceptions = (function () {\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t}());\n\t\tif (assignHasPendingExceptions) {\n\t\t\tdelete Object.assign;\n\t\t}\n\t}\n\tif (!Object.assign) {\n\t\tdefineProperties(Object, {\n\t\t\tassign: assignShim\n\t\t});\n\t}\n\treturn Object.assign || assignShim;\n};\n\nmodule.exports = assignShim;\n\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj });\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tforeach(keys(map), function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar ctor = object.constructor;\n\t\tvar skipConstructor = ctor && ctor.prototype === object;\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]'\n\t\t\t&& value !== null\n\t\t\t&& typeof value === 'object'\n\t\t\t&& typeof value.length === 'number'\n\t\t\t&& value.length >= 0\n\t\t\t&& toStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}) {\n // Add standard Aria and Tabindex info\n props = assign({\n className: this.buildCSSClass(),\n 'role': 'button',\n 'type': 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite', // let the screen reader user know that the text of the button may change\n tabIndex: 0\n }, props);\n\n let el = super.createEl(tag, props);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick();\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n * This is used for merging options for child components. We\n * want it to be easy to override individual options on a child\n * component without having to rewrite all the other default options.\n * ```js\n * Parent.prototype.options_ = {\n * children: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * children: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * children: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} attributes An object of element attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, attributes) {\n return Dom.createEl(tagName, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComonent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * children: {\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_.children = {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * ```\n * // Or when creating the component\n * ```js\n * var myComp = new MyComponent(player, {\n * children: {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * });\n * ```\n * The children option can also be an Array of child names or\n * child options objects (that also include a 'name' key).\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'muteToggle',\n 'volumeControl',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n * \n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`,\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech\n && this.player().tech['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: {\n 'seekBar': {}\n }\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder',\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: {\n 'loadProgressBar': {},\n 'playProgressBar': {}\n },\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl({\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {Object} props An object of properties \n * @return {Element}\n * @method createEl\n */\n createEl(props) {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech && this.player().tech['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n innerHTML: 'Current Time ' + '0:00', // label the current time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n innerHTML: `${this.localize('Duration Time')} 0:00`, // label the duration time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display \n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n innerHTML: `${this.localize('Remaining Time')} -0:00`, // label the remaining time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar',\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: {\n 'volumeLevel': {}\n },\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: {\n 'volumeBar': {}\n }\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using a horizontal\n // slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well, since that will\n // need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n this.addClass('vjs-menu-button');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vc = new VolumeBar(this.player_, this.options_.volumeBar);\n\n vc.on('focus', function() {\n menu.lockShowing();\n });\n vc.on('blur', function() {\n menu.unlockShowing();\n });\n menu.addChild(vc);\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extends.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extends(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendsFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendsFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc \n * @return {Element}\n * @method createEl\n */\n createEl(type, props) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props));\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n plugins[name].playerOptions = playerOptionsCopy;\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the native controls are used\n *\n * @private\n * @method handleTechUseNativeControls\n */\n handleTechUseNativeControls() {\n this.usingNativeControls(true);\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n this.error(this.tech.error().code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, this.el_.vjs_getProperty('buffered'));\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n const msg = 'FLASH: '+err;\n\n if (err === 'srcnotfound') {\n tech.trigger('error', { code: 4, message: msg });\n\n // errors we haven't categorized into the media errors\n } else {\n tech.trigger('error', msg);\n }\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let tt = this.textTracks();\n let i = tt.length;\n while(i--) {\n this.removeRemoteTextTrack(tt[i]);\n }\n\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech && player.tech['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks \n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks \n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks \n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list \n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n // \n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err);\n }\n\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // Not remembering why we were checking for dash\n // but using setAttribute means you have to use getAttribute\n\n // The check for dash checks for the aria- * attributes, like aria-label, aria-valuemin.\n // The additional check for \"role\" is because the default method for adding attributes does not\n // add the attribute \"role\". My guess is because it's not a valid attribute in some namespaces, although\n // browsers handle the attribute just fine. The W3C allows for aria- * attributes to be used in pre-HTML5 docs.\n // http://www.w3.org/TR/wai-aria-primer/#ariahtml. Using setAttribute gets around this problem.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @private\n * @method createTimeRange\n */\nexport function createTimeRange(start, end){\n if (start === undefined && end === undefined) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: 1,\n start: function() { return start; },\n end: function() { return end; }\n };\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\n\nimport assign from 'object.assign';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport xhr from './xhr.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendsFn from './extends.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = stylesheet.createStyleElement('vjs-styles-defaults');\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);\nstylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n`);\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extends' doc for more info)\n * var MySpecialButton = videojs.extends(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extends` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extends(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extends\n */\nvideojs.extends = extendsFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = createTimeRange;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Simple http request for retrieving external files (e.g. text tracks)\n *\n * ##### Example\n *\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n *\n *\n * API is modeled after the Raynos/xhr.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @returns {Object} The request\n */\nvideojs.xhr = xhr;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n","/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err);\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n"]} \ No newline at end of file +{"version":3,"file":"video.novtt.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/safe-json-parse/tuple.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extends.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js","src/js/xhr.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"restParam","func","start","TypeError","FUNC_ERROR_TEXT","nativeMax","undefined","args","arguments","index","rest","Array","otherArgs","apply","Math","max",5,"arrayCopy","source","array",6,"arrayEach","iteratee",7,"baseCopy","props","object","key",8,"createBaseFor","baseFor","./createBaseFor",9,"baseForIn","keysIn","../object/keysIn","./baseFor",10,"baseMerge","customizer","stackA","stackB","isObject","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","result","isCommon","../lang/isArray","../lang/isObject","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",11,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",12,"toObject","baseProperty","./toObject",13,"bindCallback","thisArg","argCount","identity","collection","accumulator","other","../utility/identity",14,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",15,"fromRight","keysFunc","iterable",16,"getLength","./baseProperty",17,"getNative","isNative","../lang/isNative",18,"isLength","./getLength","./isLength",19,"isHostObject","Object","toString",20,"reIsUint","test","MAX_SAFE_INTEGER","isIndex",21,"type","./isIndex",22,23,24,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",25,"support","unindexedChars","charAt","../support",26,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",27,"arrayTag","objToString","nativeIsArray","../internal/getNative","../internal/isLength",28,"isFunction","funcTag","./isObject",29,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",30,31,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",32,"stringTag",33,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",34,"../internal/baseCopy",35,"nativeKeys","../internal/shimKeys",36,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","enumPrototypes","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",37,"merge","../internal/baseMerge","../internal/createAssigner",38,"arrayProto","splice","x","0","y","spliceObjects",39,40,"canBeObject","obj","hasSymbols","Symbol","defineProperties","propIsEnumerable","assignShim","target","syms","objTarget","getOwnPropertySymbols","shim","assignHasPendingExceptions","assign","preventExtensions","thrower","define-properties","object-keys",41,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","enumerable","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",42,"hasOwn","ctx","k",43,"has","slice","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$window","$console","$parent","$self","$frames","$webkitIndexedDB","$webkitStorageInfo","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",44,"str","callee",45,"SafeParseTuple","reviver","json","error","Constructor","instance","player_","play","__esModule","newObj","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_interopRequireDefault","_component","Dom","_interopRequireWildcard","_utilsDomJs","Button","_Component","player","options","_classCallCheck","createEl","_objectAssign2","role","aria-live","el","controlTextEl_","className","handleClick","default","_globalWindow2","_globalWindow","Fn","_utilsFnJs","Component","ready","options_","_utilsMergeOptionsJs2","id_","id","Guid","newGUID","el_","childIndex_","initChildren","dispose","trigger","bubbles","children_","childNameIndex_","off","_utilsLogJs2","warn","tagName","attributes","localize","string","languages","language","primaryCode","split","addChild","child","component","componentName","childFound","parentOptions","_this","opts","children","_name","handleAdd","_this2","first","guid","cleanRemover","Events","on","second","bind","third","nodeName","one","_this3","_arguments","newFunc","sync","isReady_","setTimeout","triggerReady","readyQueue","readyQueue_","dimension","widthOrHeight","num","skipListeners","style","pxIndex","touchStart","touchTimeThreshold","couldBeTap","event","touches","firstTouch","Date","getTime","xdiff","pageX","touchDistance","sqrt","ydiff","tapMovementThreshold","noTap","touchTime","preventDefault","clearInterval","touchHolding","touchEnd","report","timeout","timeoutId","disposeFn","clearTimeout","intervalId","setInterval","interval","getComponent","components_","extend","subObj","_name2","ControlBar","exitFullscreen","requestFullscreen","LiveDisplay","contentEl_","appendChild","_button2","_button","MuteToggle","_Button","update","tech","addClass","vol","volume","level","toMute","muted","localizedMute","controlText","removeElClass","addElClass","PlayToggle","removeClass","_playbackRateMenuItemJs2","_playbackRateMenuItemJs","PlaybackRateMenuButton","_MenuButton","labelEl_","createMenu","rates","playbackRates","currentRate","playbackRate","newRate","playbackRateSupported","PlaybackRateMenuItem","label","rate","parseFloat","selected","LoadProgressBar","buffered","duration","percent","time","end","width","percentify","bufferedEnd","part","left","PlayProgressBar","updateDataAttr","scrubbing","getCache","currentTime","_componentJs2","_loadProgressBarJs","SeekBar","_Slider","newTime","calculateDistance","stepBack","_sliderSliderJs2","loadProgressBar","_Spacer","buildCSSClass","CaptionSettingsMenuItem","_TextTrackMenuItem","kind","CaptionsButton","_TextTrackButton","threshold","createItems","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","_menuMenuJs2","_menuMenuJs","ChaptersButton","items","tracks","textTracks","track","kind_","cues","chaptersTrack","menu","contentEl","tabIndex","cue","mi","_menuMenuItemJs2","_menuMenuItemJs","ChaptersTrackMenuItem","_MenuItem","OffTextTrackMenuItem","handleTracksChange","SubtitlesButton","_menuMenuButtonJs2","_menuMenuButtonJs","TextTrackButton","hide","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","TextTrackMenuItem","onchange","Event","err","_globalDocument2","createEvent","CurrentTimeDisplay","updateContent","localizedText","_utilsFormatTimeJs2","DurationDisplay","formattedTime","innerHTML","RemainingTimeDisplay","_sliderSliderJs","_componentJs","VolumeBar","toFixed","setAttribute","VolumeControl","VolumeMenuButton","vertical","volumeUpdate","orientationClass","contentElType","vc","_volumeControlVolumeBarJs2","volumeBar","_muteToggleJs2","ErrorDisplay","message","_utilsEventsJs","EventTarget","allowedEvents_","ael","addEventListener","extendsFn","subClassMethods","methods","init","_utilsLog2","FullscreenApi","apiMap","specApi","browserApi","_objectAssign","MediaError","status","errorTypes","_menuJs2","_menuJs","MenuButton","title","unlockShowing","handleKeyPress","which","buttonPressed_","unpressButton","pressButton","MenuItem","_selected","append","_globalDocument","_utilsLogJs","_utilsToTitleCaseJs2","_utilsToTitleCaseJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_errorDisplayJs","reportTouchActivity","languagesToLower","poster_","poster","controls","scrubbing_","playerOptionsCopy","plugins","getOwnPropertyNames","forEach","isAudio","toLowerCase","Player","players","styleEl_","parentNode","removeChild","attrs","getElAttributes","attr","stylesheet","createStyleElement","defaultsStyleEl","querySelector","fluid","aspectRatio","initNetworkState_","networkState","privDimension","_dimension","parsedVal","isNaN","bool","fluid_","ratio","updateStyleEl_","aspectRatio_","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","loadTech","techName","unloadTech","disposeMediaElement","techReady","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","vtt.js","src","cache_","startTime","techComponent","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechReady","handleTechLoadStart","handleTechWaiting","handleTechCanPlay","handleTechCanPlayThrough","handleTechPlaying","handleTechEnded","handleTechSeeking","handleTechSeeked","handleTechPlay","handleTechFirstPlay","handleTechPause","handleTechProgress","handleTechDurationChange","handleTechFullscreenChange","handleTechError","handleTechSuspend","handleTechAbort","handleTechEmptied","handleTechLoadedMetaData","handleTechTimeUpdate","handleTechRateChange","handleTechVolumeChange","usingNativeControls","techGet","addTechControlsListeners","removeTechControlsListeners","techCall","paused","hasStarted","_hasStarted","hasStarted_","handleTechClick","button","updateDuration","method","arg","isScrubbing","seconds","percentAsDecimal","min","fsApi","fullscreenchange","documentFullscreenChange","isFullscreen","fullscreenElement","supportsFullScreen","_fullscreenApiJs2","fullWindowOnEscKey","exitFullWindow","documentElement","overflow","docOrigOverflow","selectSource","techOrder","isSupported","b","canPlaySource","sourceList_","currentTech","load","sourceTech","controls_","error_","userActive","userActive_","stopPropagation","lastMoveX","lastMoveY","handleActivity","reportUserActivity","handleMouseMove","screenX","screenY","mouseInProgress","handleMouseUp","inactivityTimeout","userActivity_","tagOptions","dataSetup","_safeParseTuple","_safeJsonParseTuple2","data","hasChildNodes","childNodes","childName","baseOptions","mediaLoader","textTrackDisplay","controlBar","notSupportedMessage","handleError","flexNotSupported_","createElement","_buttonJs2","_buttonJs","PosterImage","url","setSrc","fallbackImg_","backgroundImage","autoSetup","vids","getElementsByTagName","audios","mediaEls","mediaEl","getAttribute","autoSetupTimeout","_windowLoaded","wait","vjs","readyState","Slider","bar","getChild","barName","handleMouseDown","blockTextSelection","unblockTextSelection","progress","getPercent","percentage","box","findElPosition","boxW","offsetWidth","boxH","offsetHeight","pageY","changedTouches","boxY","vertical_","../component.js","../utils/dom.js","global/document","object.assign",92,"FlashRtmpDecorator","Flash","rtmp/mp4","rtmp/flv","streamFromParts","connection","stream","parts","streamBegin","connEnd","substring","isStreamingType","srcType","streamingFormats","isStreamingSrc","rtmpSourceHandler","handleSource","srcParts","_createSetter","attrUpper","toUpperCase","_api","val","_createGetter","vjs_getProperty","_tech2","_tech","_utilsUrlJs","setSource","_Tech","objId","flashVars","readyFunction","errorEventProxyFunction","autoplay","params","wmode","bgcolor","Url","getAbsoluteURL","vjs_src","setCurrentTime","seekable","enterFullScreen","_readWrite","_readOnly","nativeSourceHandler","canHandleSource","guessMimeType","ext","getFileExtension","formats","video/flv","onReady","currSwf","getEl","checkReady","eventName","swfID","version","ActiveXObject","GetVariable","match","navigator","description","getEmbedCode","swf","objTag","flashVarsString","paramsString","movie","flashvars","allowNetworking","_techJs2","_techJs","Html5","currentSrc","nodes","node","nodesLength","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","tt","handleTextTrackChange_","handleTextTrackAdd_","emulatedTt","clone","cloneNode","insertBefore","tagAttributes","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","overwriteAttrs","handleTextTrackChange","srcElement","webkitEnterFullScreen","video","HAVE_METADATA","addRemoteTextTrack","removeTrack_","querySelectorAll","canPlayType","TEST_VID","supportsNativeTextTracks","supportsTextTracks","IS_FIREFOX","canControlPlaybackRate","patchCanPlayType","ANDROID_VERSION","mpegurlRE","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","removeAttribute","MediaLoader","playerOptions","_tracksTextTrack2","_tracksTextTrack","Tech","manualProgressOn","featuresTimeupdateEvents","initControlsListeners","nativeCaptions","nativeTextTracks","trackProgress","stopTrackingProgress","numBufferedPercent","bufferedPercent","bufferedPercent_","manualProgress","manualProgressOff","_mediaErrorJs2","textTrackListChanges","emulateTextTracks","script","updateDisplay","mode","setPoster","createTrackHelper","featuresVolumeControl","featuresFullscreenResize","handlers","sourceHandlers","selectSourceHandler","can","srcObj","originalSeekable","sh","disposeSourceHandler","sourceHandler_","TextTrackCueList","list","IS_IE8","prop","setCues_","get","oldLength","length_","defineProp","getCueById","rule","darkGray","lightGray","fontMap","monospace","sansSerif","serif","TextTrackDisplay","toggleDisplay","clearDisplay","updateForTrack","_i","cueDiv","displayState","overrides","color","firstChild","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","height","top","bottom","fontFamily","fontVariant","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","trackEl","addedTrack","addCue","_eventTarget2","_eventTarget","TextTrackList","tracks_","change","removetrack","_event","rtrack","getTrackById","selectedOption","selectedOptions","selectedIndex","setSelectedOption","option","TextTrackSettings","persistTextTrackSettings","saveSettings","getValues","textEdge","getSelectedOptionValue","fgColor","bgColor","bgOpacity","setValues","values","restoreSettings","ttDisplay","registerComponent","_textTrackCueList2","_textTrackCueList","_utilsGuidJs","TextTrack","tech_","TextTrackEnum","TextTrackMode","cues_","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","loadTrack","cuechange","removeCue","removed","parseCues","srcContent","parser","_xhrJs2","response","responseBody","O","len","fromIndex","abs","searchElement","IS_IPHONE","IS_IPAD","USER_AGENT","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","major","IS_NATIVE_ANDROID","bufferedDuration","_timeRangesJs","createTimeRange","_logJs2","_logJs","defaultBehaviors","messages","Proxy","_ret","handler","propName","indexOf","getElData","elIdAttr","hasElData","removeElData","elData","element","classToRemove","hasElClass","attrName","attrValue","attrVal","knownBooleans","getBoundingClientRect","docEl","body","scrollLeft","pageXOffset","clientLeft","clientTop","scrollTop","pageYOffset","elem","_handleMultipleEvents","dispatcher","fixEvent","handlersCopy","m","isImmediatePropagationStopped","hash","removeType","_cleanUpEvents","elemData","parent","isPropagationStopped","defaultPrevented","targetData","disabled","old","relatedTarget","fromElement","toElement","returnValue","cancelBubble","returnTrue","returnFalse","stopImmediatePropagation","doc","clientY","detachEvent","global/window",109,"context","uid","h","floor","gm","guide","argsArray","noop","console","log","history","unshift","_logType","mergeOptions","_start","_end","href","addToBody","host","protocol","div","details","path","splitPathRe","pathParts","exec","_pluginsJs2","_pluginsJs","_xhrJs","_lodashCompatObjectMerge","_utilsCreateDeprecationProxyJs","_techFlashJs","_techHtml5Js","getPlayers","_lodashCompatObjectMerge2","_merge","xhr","callback","uri","XHR","XMLHttpRequest","request","urlInfo","parseUrl","winLoc","location","successHandler","abortTimeout","responseText","errorHandler","crossOrigin","fileUrl","onreadystatechange","timedout","abort","onload","onprogress","ontimeout","open","withCredentials","responseType"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","sourcesContent":["(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 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar toObject = Object;\nvar push = Array.prototype.push;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tif (propIsEnumerable.call(source, syms[i])) {\n\t\t\t\t\tpush.call(props, syms[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\ndefineProperties(assignShim, {\n\tshim: function shimObjectAssign() {\n\t\tvar assignHasPendingExceptions = function () {\n\t\t\tif (!Object.assign || !Object.preventExtensions) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t};\n\t\tdefineProperties(\n\t\t\tObject,\n\t\t\t{ assign: assignShim },\n\t\t\t{ assign: assignHasPendingExceptions }\n\t\t);\n\t\treturn Object.assign || assignShim;\n\t}\n});\n\nmodule.exports = assignShim;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj, enumerable: false });\n /* eslint-disable no-unused-vars */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$window: true,\n\t$console: true,\n\t$parent: true,\n\t$self: true,\n\t$frames: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\ttry {\n\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' && !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t} else {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}) {\n // Add standard Aria and Tabindex info\n props = assign({\n className: this.buildCSSClass(),\n 'role': 'button',\n 'type': 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite', // let the screen reader user know that the text of the button may change\n tabIndex: 0\n }, props);\n\n let el = super.createEl(tag, props);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick();\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n * This is used for merging options for child components. We\n * want it to be easy to override individual options on a child\n * component without having to rewrite all the other default options.\n * ```js\n * Parent.prototype.options_ = {\n * children: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * children: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * children: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} attributes An object of element attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, attributes) {\n return Dom.createEl(tagName, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComonent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * children: {\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_.children = {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * ```\n * // Or when creating the component\n * ```js\n * var myComp = new MyComponent(player, {\n * children: {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * });\n * ```\n * The children option can also be an Array of child names or\n * child options objects (that also include a 'name' key).\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'muteToggle',\n 'volumeControl',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n * \n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`,\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech\n && this.player().tech['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: {\n 'seekBar': {}\n }\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder',\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: {\n 'loadProgressBar': {},\n 'playProgressBar': {}\n },\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl({\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {Object} props An object of properties \n * @return {Element}\n * @method createEl\n */\n createEl(props) {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech && this.player().tech['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n innerHTML: 'Current Time ' + '0:00', // label the current time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n innerHTML: `${this.localize('Duration Time')} 0:00`, // label the duration time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display \n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n innerHTML: `${this.localize('Remaining Time')} -0:00`, // label the remaining time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar',\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: {\n 'volumeLevel': {}\n },\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: {\n 'volumeBar': {}\n }\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using a horizontal\n // slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well, since that will\n // need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n this.addClass('vjs-menu-button');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vc = new VolumeBar(this.player_, this.options_.volumeBar);\n\n vc.on('focus', function() {\n menu.lockShowing();\n });\n vc.on('blur', function() {\n menu.unlockShowing();\n });\n menu.addChild(vc);\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extends.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extends(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendsFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendsFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc \n * @return {Element}\n * @method createEl\n */\n createEl(type, props) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props));\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n this.usingNativeControls(this.techGet('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n let error = this.tech.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let textTracks = this.textTracks();\n\n if (textTracks) {\n let i = textTracks.length;\n while(i--) {\n this.removeRemoteTextTrack(textTracks[i]);\n }\n }\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * When invoked without an argument, returns a MediaError object\n * representing the current error state of the player or null if\n * there is no error. When invoked with an argument, set the current\n * error state of the player.\n * @param {MediaError=} err Optional an error object\n * @return {MediaError} the current error object or null\n * @method error\n */\n error(err) {\n if (err !== undefined) {\n if (err instanceof MediaError) {\n this.error_ = err;\n } else {\n this.error_ = new MediaError(err);\n }\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech && player.tech['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks \n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks \n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks \n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list \n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n // \n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // Not remembering why we were checking for dash\n // but using setAttribute means you have to use getAttribute\n\n // The check for dash checks for the aria- * attributes, like aria-label, aria-valuemin.\n // The additional check for \"role\" is because the default method for adding attributes does not\n // add the attribute \"role\". My guess is because it's not a valid attribute in some namespaces, although\n // browsers handle the attribute just fine. The W3C allows for aria- * attributes to be used in pre-HTML5 docs.\n // http://www.w3.org/TR/wai-aria-primer/#ariahtml. Using setAttribute gets around this problem.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @private\n * @method createTimeRange\n */\nexport function createTimeRange(start, end){\n if (start === undefined && end === undefined) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: 1,\n start: function() { return start; },\n end: function() { return end; }\n };\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\n\nimport assign from 'object.assign';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport xhr from './xhr.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendsFn from './extends.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = stylesheet.createStyleElement('vjs-styles-defaults');\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);\nstylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n`);\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extends' doc for more info)\n * var MySpecialButton = videojs.extends(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extends` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extends(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extends\n */\nvideojs.extends = extendsFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = createTimeRange;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Simple http request for retrieving external files (e.g. text tracks)\n *\n * ##### Example\n *\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n *\n *\n * API is modeled after the Raynos/xhr.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @returns {Object} The request\n */\nvideojs.xhr = xhr;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n","/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err || 'XHR Failed with a response of: '+(request && (request.response || request.responseText)));\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n"]} \ No newline at end of file diff --git a/node_modules/video.js/dist/video-js-5.0.0-rc.59.zip b/node_modules/video.js/dist/video-js-5.0.0-rc.72.zip similarity index 51% rename from node_modules/video.js/dist/video-js-5.0.0-rc.59.zip rename to node_modules/video.js/dist/video-js-5.0.0-rc.72.zip index 8c315bb8b15e3b5f3ba72ed5da100abef749882a..016f57937a7ddb303904fc5bf5a8f7125bd44718 100644 GIT binary patch delta 496514 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 YR86@%$koRSkZ&L9|4pg{fQpH2tVA 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 E00=F+`2YX_ delta 420461 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:5px;min-height:20px}.vjs-caption-settings .vjs-tracksetting>div:last-child{margin-bottom:0;padding-bottom:0;min-height:0}.vjs-caption-settings label>input{margin-right:10px}.vjs-caption-settings input[type=button]{width:40px;height:40px} +.video-js .vjs-big-play-button:before,.video-js .vjs-control:before{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}@font-face{font-family:VideoJS;src:url(font/VideoJS.eot?) format('eot')}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAi0AAoAAAAADnwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAD0AAABWQLpNY2NtYXAAAAE0AAAAOgAAAUriJhC2Z2x5ZgAAAXAAAATAAAAH/CNovTZoZWFkAAAGMAAAACwAAAA2BEqUO2hoZWEAAAZcAAAAGAAAACQELwIWaG10eAAABnQAAAAPAAAAVCoAAABsb2NhAAAGhAAAACwAAAAsEBQSZm1heHAAAAawAAAAHwAAACABJgBkbmFtZQAABtAAAAElAAACCtXH9aBwb3N0AAAH+AAAALsAAAElJXNJs3icY2BkYmCcwMDKwMHowpjGwMDgDqW/MkgytDAwMDGwMjNgBQFprikMDh8ZP4owgbh6TBBhRhABAFl1B6YAAAB4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGD6K/P8PUvCREUTzM0DVAwEjG8OIBwCEVQbLAAB4nIVVzW/jRBSf5zieJE2bOPVH0jRpEidxsZumW8f20orWi6C7rKoKqSQUVUjdQ6RVAkekHi047AEOvbSqxIFed8OBO3voDSE4gRohLmi1N/Z/SHljp90uJSLRvJn5vZn3Pc8ECP7gBE4IR8is6A7+huPR8JhEAnwIQ8RnyBwhm6C7M0CLoG6AuwyRZdBxgdsZuPB9c/+Q4w73Q/rgEcc9ehDQs4ODL67x/cPRl1cMpEwj6vBRd4RQQlxL1CzREv12e9DugzEagkH44Mw5nBOBZEiF1HDXquuy6rgSRYJmyEWoUVWTLdVWBSo7rupGqAoHhWwL7KmSDLB7r7k2+inf7bb7+8rcUmUpf95oACk0kk2b0uJc+a2VrW56KbX9Tb7r94/2xdhSYt7Mw4eNRqA+IB0YkCjGCPWI9LjT64Hn96HTJ2M/vka+QJK4YjZtQC04iHAhmy2MXrT7/UDj98nGp+N7kbFvz1FukuSuZKvMv43ALwn9CcLt4fVfmCC7ubbWvLeLPo3Ve6HMP9D6x9uppXR3a6uLYvnrvEbJFBGJivHFENmabtlIIVzLFk7HRs8zDK8HxOsZnmdc9IwTz7gkRu8c0Qmy2EUtlDgbSHRttul7KAzF+HjTMHoDr+cbvdHQM3zcMzFhrAYYqxSZxVUZa0rEKiqjmyKWVVksg39JMlmAbAbG8yWmAO+wxWsGlgeKEq7rlGIMZ0melMgiRtKtaxWBqjXMBdYG1qzdiuozIEuqxWrYtahirTqu/nNXyervze9ANP3u8s7vZ5/NFUcvdueK/Nm3DNB2x+zSD9Gc+qTSvC8+kX8sfGAoyhGjssyQI8YjrDoCW0LfVLRlIfRQFiWFeWiLrXrUkjVVsy02bBwwGD3LZNGlDtLRaaczHA59Rm85/Mxsm6ZpmNd1w/ToZPO2DqoFybDkGTChUn8HWs46rCoLcIVLAsN1ewMYLrMnn8nlMmAgfV4yzRIk4148GRA4ZkC4DOFblh1PeVMKO95hRHljd52jc+gH73xqHB2socCaIA5q2S7LOGwknhn82mCOLsLxyvBN/CMdmObVezzHnFcIqQlUd1q6q6w6rTqmXFIpTpKy6qqCLAUo+DnxlONOMna16lQhXNiZU67aqlafQvoTmqZ7YtWtVucp3UvjmfQepXkNozWu199Ql0s81MZUOU2op6COFKOYAjQAt8ICCKgbJ2UTMNQKRnYTsBnh1tHpMuZgVZEE+A6gIfBGNOakpRgX6+CQ0nacN3mhEbBMPm7fYv1awhdqGK8SSkITYg9pRJ6O3Y3H78am5Qh9GBO0SYxZYPc843UfY29lCl/IVSfHV2HeaNFAbrTyq/ca3sGcwYRPwBu3bn4A4GJi+7/xjWGyS5Olo4mVOovfRDUxwKyx5E5U9zTP+FWmkoaNCA7INFGwW6yRbfIR+Rgr0naKHEUjBE1fcbE9OHUqK6riuKx/1HVNUdEeSRgjaKEmISL/FxK1NoFVtyprL+vrxhzH36lJufxKthjhSgX4PJ7gE0llOg6RRAoy84k4n5gGeSbGJ1L/2o1q72e8O+vJxa/+BL7gVBddHuDtrFIow2PO5VIx0cxVWxmBz6zMlx35fwF1Hgp/7dwn/wCHsUmOeJxjYGRgYADi2RquW+L5bb4ycDMxgMDFaZpbkGkmBsZrQIqDASwNAAmYCNZ4nGNgZGBgYgACPTAJYjMyoAJRAAXjAEx4nGNiYGBgojIGAAeMACsAAAAAAAAMAD4AUACSAKIAvgDsARIBOAFgAaYB2gIyAloCkAL2AxADPgN6A/54nGNgZGBgEGWIYGBnAAEmIOYCQgaG/2A+AwATugGLAHicXZBNaoNAGIZfE5PQCKFQ2lUps2oXBfOzzAESyDKBQJdGR2NQR3QSSE/QE/QEPUUPUHqsvsrXjTMw83zPvPMNCuAWP3DQDAejdm1GjzwS7pMmwi75XngAD4/CQ/oX4TFe4Qt7uMMbOzjuDc0EmXCP/C7cJ38Iu+RP4QEe8CU8pP8WHmOPX2EPz87TPo202ey2OjlnQSXV/6arOjWFmvszMWtd6CqwOlKHq6ovycLaWMWVydXKFFZnmVFlZU46tP7R2nI5ncbi/dDkfDtFBA2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/EezTmZNKtpcAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtjlkOwjAMRDNAy1KgrMfIoUJqqKU0KVlYbk+hReKD+bCfrdHYYiR6ZeK/jkJghDEmyJBjihnmWKDAEiusUWKDLXbY44DjpDXqWbyL1Oy1oaxVKVBxcyY1JJsUaTGwcfcvNlx9HTVf6s05GRO0J7KSbCRf/i4eHPNwTcrTNLRsLfl5SKfI0VCYadVGdraDuiPyIQt15xxrd8n7h9Z9ky5Fw5b2w/gJGn7eqlSxkxV1J/mTJ8QLQRVRWgA=) format('woff'),url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype');font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-big-play-button,.video-js .vjs-play-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-big-play-button:before,.video-js .vjs-play-control:before{content:'\f101'}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:'\f102'}.vjs-icon-pause,.video-js.vjs-playing .vjs-play-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js.vjs-playing .vjs-play-control:before{content:'\f103'}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0,.video-js .vjs-volume-menu-button.vjs-vol-0{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0:before,.video-js .vjs-volume-menu-button.vjs-vol-0:before{content:'\f104'}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1,.video-js .vjs-volume-menu-button.vjs-vol-1{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1:before,.video-js .vjs-volume-menu-button.vjs-vol-1:before{content:'\f105'}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2,.video-js .vjs-volume-menu-button.vjs-vol-2{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2:before,.video-js .vjs-volume-menu-button.vjs-vol-2:before{content:'\f106'}.vjs-icon-volume-high,.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control:before,.video-js .vjs-volume-menu-button:before{content:'\f107'}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control:before{content:'\f108'}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control:before{content:'\f109'}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:'\f10a'}.vjs-icon-spinner,.vjs-loading-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before,.vjs-loading-spinner:before{content:'\f10b'}.vjs-icon-subtitles,.video-js .vjs-subtitles-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subtitles-button:before{content:'\f10c'}.vjs-icon-captions,.video-js .vjs-captions-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js .vjs-captions-button:before{content:'\f10d'}.vjs-icon-chapters,.video-js .vjs-chapters-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button:before{content:'\f10e'}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:'\f10f'}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:'\f110'}.vjs-icon-circle,.video-js .vjs-play-progress,.video-js .vjs-volume-level{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before{content:'\f111'}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:'\f112'}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:'\f113'}.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before{content:'\f114'}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js *,.video-js :before,.video-js :after{box-sizing:inherit}.video-js.vjs-fluid,.video-js.vjs-16-9{width:100%;max-width:100%;height:0;padding-top:56.25%}.video-js.vjs-4-3{width:100%;max-width:100%;height:0;padding-top:75%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen{width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#F4A460}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.5em;width:3em;display:block;z-index:2;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:2px solid #fff;background-color:#000;background-color:rgba(0,0,0,.8);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.video-js.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.75em;margin-left:-1.5em}.video-js.vjs-controls-disabled .vjs-big-play-button,.video-js.vjs-has-started .vjs-big-play-button,.video-js.vjs-using-native-controls .vjs-big-play-button{display:none}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{outline:0;border-color:#fff;background-color:#595959;background-color:rgba(89,89,89,.75);-webkit-transition:all 0s;-moz-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-error .vjs-big-play-button{display:none}.video-js button{background:0 0;border:0;color:#fff;display:inline-block;overflow:visible;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2B333F;background-color:rgba(43,51,63,.5)}.video-js.vjs-has-started .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s}.video-js.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.video-js.video-js.video-js.vjs-controls-disabled .vjs-control-bar,.video-js.video-js.video-js.vjs-using-native-controls .vjs-control-bar,.video-js.video-js.video-js.vjs-error .vjs-control-bar{display:none}.video-js.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}@media \0screen{.video-js.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}}.video-js.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{outline:0;position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-control:before{font-size:1.8em;line-height:1.67}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0 0 1em #fff}.video-js .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.video-js .vjs-progress-holder{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s;height:.3em}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-play-progress:after{display:block;font-size:.6em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:.3em;margin:0;padding:0;width:0;left:0;top:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{position:absolute;top:-.3333333333em;right:-.5em;font-size:.9em;height:1em;line-height:1em}.video-js .vjs-play-progress:after{display:none;position:absolute;top:-2.4em;right:-1.5em;font-size:.9em;color:#000;content:attr(data-current-time);padding:.2em .5em;background-color:#fff;background-color:rgba(255,255,255,.8);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em}.video-js .vjs-load-progress{background:#646464;background:rgba(255,255,255,.2)}.video-js .vjs-load-progress div{background:rgba(89,89,89,.1)}.video-js.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-slider{outline:0;position:relative;cursor:pointer;padding:0;margin:0 .45em;background-color:#595959;background-color:rgba(89,89,89,.9)}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-volume-control{width:5em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.video-js .vjs-volume-bar{margin:1.35em}.video-js .vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.video-js .vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em}.video-js .vjs-slider-vertical .vjs-volume-level{width:.3em}.video-js .vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em}.video-js .vjs-slider-horizontal .vjs-volume-level{height:.3em}.video-js .vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.video-js .vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.video-js .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu{display:block;width:0;height:0;border-top-color:transparent}.video-js .vjs-volume-menu-button.vjs-volume-menu-button-vertical .vjs-menu{left:.5em}.video-js .vjs-volume-menu-button-popup.vjs-volume-menu-button-horizontal .vjs-menu{left:-2em}.video-js .vjs-menu-button.vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu .vjs-menu-content{height:0;width:0;overflow-x:hidden;overflow-y:hidden}.video-js .vjs-volume-menu-button.vjs-volume-menu-button-vertical:hover .vjs-menu .vjs-menu-content,.video-js .vjs-volume-menu-button.vjs-volume-menu-button-vertical .vjs-menu.vjs-lock-showing .vjs-menu-content{height:8em;width:2.9em}.video-js .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:hover .vjs-menu .vjs-menu-content,.video-js .vjs-volume-menu-button.vjs-volume-menu-button-horizontal .vjs-menu.vjs-lock-showing .vjs-menu-content{height:2.9em;width:8em}.video-js .vjs-mute-control,.video-js .vjs-volume-control{display:none}.video-js .vjs-menu-button{cursor:pointer}.video-js .vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;overflow:auto}.video-js.vjs-scrubbing .vjs-menu-button:hover .vjs-menu{display:none}.video-js .vjs-menu ul li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.video-js .vjs-menu ul li.vjs-selected{background-color:#000}.video-js .vjs-menu ul li:focus,.video-js .vjs-menu ul li:hover,.video-js .vjs-menu ul li.vjs-selected:focus,.video-js .vjs-menu ul li.vjs-selected:hover{outline:0;color:#000;background-color:#fff;background-color:rgba(255,255,255,.75)}.video-js .vjs-menu ul li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.video-js .vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;left:-3em;width:0;height:0;margin-bottom:1.5em;border-top-color:rgba(7,40,50,.5)}.video-js .vjs-menu-button-popup .vjs-menu-content{background-color:#000;background-color:rgba(0,0,0,.7)}.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content{position:absolute;width:10em;bottom:1.5em;max-height:15em}.video-js .vjs-menu-button.vjs-menu-button-popup:hover .vjs-menu,.video-js .vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s;overflow:hidden}.video-js .vjs-menu-button.vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:2.2222222em;top:0;padding:0;margin:0;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s}.video-js.vjs-no-flex .vjs-menu-button-inline .vjs-menu{position:relative;width:0}.video-js.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.video-js .vjs-menu-button-inline .vjs-menu .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-menu-button-inline:hover{width:10em}.video-js .vjs-menu-button.vjs-menu-button-inline:hover .vjs-menu,.video-js .vjs-menu-button-inline .vjs-menu.vjs-lock-showing{display:block;opacity:1}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-poster img{display:block;vertical-align:middle;margin:0 auto;max-height:100%;padding:0;width:100%}.video-js.vjs-has-started .vjs-poster{display:none}.video-js.vjs-audio.vjs-has-started .vjs-poster{display:block}.video-js.vjs-controls-disabled .vjs-poster{display:none}.video-js.vjs-using-native-controls .vjs-poster{display:none}.video-js.vjs-live .vjs-time-control,.video-js.vjs-live .vjs-time-divider,.video-js.vjs-live .vjs-progress-control{display:none}.video-js .vjs-live-control{display:none;font-size:1em;line-height:3em}.video-js .vjs-time-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;font-size:1em;line-height:3em}.video-js .vjs-current-time,.video-js.vjs-no-flex .vjs-current-time{display:none}.video-js .vjs-duration,.video-js.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.video-js .vjs-play-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em;background-color:#000;background-color:rgba(0,0,0,.5)}.video-js .vjs-subtitles{color:#fff}.video-js .vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.video-js .vjs-fullscreen-control{width:3.8em;cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-playback-rate .vjs-playback-rate-value{font-size:1.5em;line-height:2;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.video-js .vjs-playback-rate .vjs-menu{left:0}.video-js .vjs-playback-rate.vjs-menu-button .vjs-menu .vjs-menu-content{width:4em;left:0;list-style:none}.vjs-error-display{display:none}.vjs-error .vjs-error-display{display:block;position:absolute;left:0;top:0;width:100%;height:100%}.vjs-error .vjs-error-display:before{content:'X';font-family:Arial,Helvetica,sans-serif;font-size:4em;color:#595959;line-height:1;text-shadow:.05em .05em .1em #000;text-align:center;vertical-align:middle;position:absolute;left:0;top:50%;margin-top:-.5em;width:100%}.vjs-error-display div{position:absolute;bottom:1em;right:0;left:0;font-size:1.4em;text-align:center;padding:3px;background-color:#000;background-color:rgba(0,0,0,.5)}.vjs-error-display a,.vjs-error-display a:visited{color:#F4A460}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;font-size:4em;line-height:1;width:1em;height:1em;margin-left:-.5em;margin-top:-.5em;opacity:.75}.vjs-waiting .vjs-loading-spinner,.vjs-seeking .vjs-loading-spinner{display:block;-webkit-animation:spin 1.5s infinite linear;-moz-animation:spin 1.5s infinite linear;-o-animation:spin 1.5s infinite linear;animation:spin 1.5s infinite linear}.vjs-error .vjs-loading-spinner{display:none;-webkit-animation:none;-moz-animation:none;-o-animation:none;animation:none}.video-js .vjs-loading-spinner:before{position:absolute;top:0;left:0;width:1em;height:1em;text-align:center;text-shadow:0 0 .1em #000}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.video-js .vjs-chapters-button.vjs-menu-button .vjs-menu{left:2em}.video-js .vjs-chapters-button.vjs-menu-button .vjs-menu .vjs-menu-content{width:24em;left:-12em}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-custom-control-spacer{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button{display:none}.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-fullscreen-control{display:none}.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button{display:none}.vjs-caption-settings{position:relative;top:1em;background-color:#000;opacity:.75;color:#fff;margin:0 auto;padding:.5em;height:15em;font-family:Arial,Helvetica,sans-serif;font-size:12px;width:40em}.vjs-caption-settings .vjs-tracksettings{top:0;bottom:2em;left:0;right:0;position:absolute;overflow:auto}.vjs-caption-settings .vjs-tracksettings-colors,.vjs-caption-settings .vjs-tracksettings-font{float:left}.vjs-caption-settings .vjs-tracksettings-colors:after,.vjs-caption-settings .vjs-tracksettings-font:after,.vjs-caption-settings .vjs-tracksettings-controls:after{clear:both}.vjs-caption-settings .vjs-tracksettings-controls{position:absolute;bottom:1em;right:1em}.vjs-caption-settings .vjs-tracksetting{margin:5px;padding:3px;min-height:40px}.vjs-caption-settings .vjs-tracksetting label{display:block;width:100px;margin-bottom:5px}.vjs-caption-settings .vjs-tracksetting span{display:inline;margin-left:5px}.vjs-caption-settings .vjs-tracksetting>div{margin-bottom:5px;min-height:20px}.vjs-caption-settings .vjs-tracksetting>div:last-child{margin-bottom:0;padding-bottom:0;min-height:0}.vjs-caption-settings label>input{margin-right:10px}.vjs-caption-settings input[type=button]{width:40px;height:40px} diff --git a/node_modules/video.js/dist/video-js.swf b/node_modules/video.js/dist/video-js.swf index 45a0ceb77f37e3361e25aa329863960b07cca0d5..6872b3b3dace362acbd255850e8d43b6fa83f5c9 100644 GIT binary patch literal 16786 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 z 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 F+?fgaClmkx literal 17500 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 diff --git a/node_modules/video.js/dist/video.js b/node_modules/video.js/dist/video.js index 03d029b..6d70be5 100644 --- a/node_modules/video.js/dist/video.js +++ b/node_modules/video.js/dist/video.js @@ -1,6 +1,6 @@ /** * @license - * Video.js 5.0.0-rc.59 + * Video.js 5.0.0-rc.72 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * @@ -29,7 +29,7 @@ if (typeof document !== 'undefined') { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvZG9jdW1lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuIl19 },{"min-document":3}],2:[function(_dereq_,module,exports){ (function (global){ if (typeof window !== "undefined") { @@ -43,7 +43,7 @@ if (typeof window !== "undefined") { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzZWxmO1xufSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHt9O1xufVxuIl19 },{}],3:[function(_dereq_,module,exports){ },{}],4:[function(_dereq_,module,exports){ @@ -57,7 +57,7 @@ var nativeMax = Math.max; * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ @@ -196,7 +196,7 @@ var baseFor = createBaseFor(); module.exports = baseFor; -},{"./createBaseFor":17}],9:[function(_dereq_,module,exports){ +},{"./createBaseFor":15}],9:[function(_dereq_,module,exports){ var baseFor = _dereq_('./baseFor'), keysIn = _dereq_('../object/keysIn'); @@ -215,24 +215,7 @@ function baseForIn(object, iteratee) { module.exports = baseForIn; -},{"../object/keysIn":39,"./baseFor":8}],10:[function(_dereq_,module,exports){ -/** - * The base implementation of `_.isFunction` without support for environments - * with incorrect `typeof` results. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - */ -function baseIsFunction(value) { - // Avoid a Chakra JIT bug in compatibility modes of IE 11. - // See https://github.com/jashkenas/underscore/issues/1621 for more details. - return typeof value == 'function' || false; -} - -module.exports = baseIsFunction; - -},{}],11:[function(_dereq_,module,exports){ +},{"../object/keysIn":36,"./baseFor":8}],10:[function(_dereq_,module,exports){ var arrayEach = _dereq_('./arrayEach'), baseMergeDeep = _dereq_('./baseMergeDeep'), isArray = _dereq_('../lang/isArray'), @@ -249,7 +232,7 @@ var arrayEach = _dereq_('./arrayEach'), * @private * @param {Object} object The destination object. * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {Object} Returns `object`. @@ -259,7 +242,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { return object; } var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), - props = isSrcArr ? null : keys(source); + props = isSrcArr ? undefined : keys(source); arrayEach(props || source, function(srcValue, key) { if (props) { @@ -290,7 +273,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { module.exports = baseMerge; -},{"../lang/isArray":30,"../lang/isObject":33,"../lang/isTypedArray":36,"../object/keys":38,"./arrayEach":6,"./baseMergeDeep":12,"./isArrayLike":20,"./isObjectLike":25}],12:[function(_dereq_,module,exports){ +},{"../lang/isArray":27,"../lang/isObject":30,"../lang/isTypedArray":33,"../object/keys":35,"./arrayEach":6,"./baseMergeDeep":11,"./isArrayLike":18,"./isObjectLike":23}],11:[function(_dereq_,module,exports){ var arrayCopy = _dereq_('./arrayCopy'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -309,7 +292,7 @@ var arrayCopy = _dereq_('./arrayCopy'), * @param {Object} source The source object. * @param {string} key The key of the value to merge. * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. @@ -359,7 +342,7 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stack module.exports = baseMergeDeep; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isPlainObject":34,"../lang/isTypedArray":36,"../lang/toPlainObject":37,"./arrayCopy":5,"./isArrayLike":20}],13:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isPlainObject":31,"../lang/isTypedArray":33,"../lang/toPlainObject":34,"./arrayCopy":5,"./isArrayLike":18}],12:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -377,25 +360,7 @@ function baseProperty(key) { module.exports = baseProperty; -},{"./toObject":28}],14:[function(_dereq_,module,exports){ -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); -} - -module.exports = baseToString; - -},{}],15:[function(_dereq_,module,exports){ +},{"./toObject":25}],13:[function(_dereq_,module,exports){ var identity = _dereq_('../utility/identity'); /** @@ -436,16 +401,13 @@ function bindCallback(func, thisArg, argCount) { module.exports = bindCallback; -},{"../utility/identity":43}],16:[function(_dereq_,module,exports){ +},{"../utility/identity":39}],14:[function(_dereq_,module,exports){ var bindCallback = _dereq_('./bindCallback'), isIterateeCall = _dereq_('./isIterateeCall'), restParam = _dereq_('../function/restParam'); /** - * Creates a function that assigns properties of source object(s) to a given - * destination object. - * - * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`. + * Creates a `_.assign`, `_.defaults`, or `_.merge` function. * * @private * @param {Function} assigner The function to assign values. @@ -482,7 +444,7 @@ function createAssigner(assigner) { module.exports = createAssigner; -},{"../function/restParam":4,"./bindCallback":15,"./isIterateeCall":23}],17:[function(_dereq_,module,exports){ +},{"../function/restParam":4,"./bindCallback":13,"./isIterateeCall":21}],15:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -511,7 +473,7 @@ function createBaseFor(fromRight) { module.exports = createBaseFor; -},{"./toObject":28}],18:[function(_dereq_,module,exports){ +},{"./toObject":25}],16:[function(_dereq_,module,exports){ var baseProperty = _dereq_('./baseProperty'); /** @@ -528,7 +490,7 @@ var getLength = baseProperty('length'); module.exports = getLength; -},{"./baseProperty":13}],19:[function(_dereq_,module,exports){ +},{"./baseProperty":12}],17:[function(_dereq_,module,exports){ var isNative = _dereq_('../lang/isNative'); /** @@ -546,7 +508,7 @@ function getNative(object, key) { module.exports = getNative; -},{"../lang/isNative":32}],20:[function(_dereq_,module,exports){ +},{"../lang/isNative":29}],18:[function(_dereq_,module,exports){ var getLength = _dereq_('./getLength'), isLength = _dereq_('./isLength'); @@ -563,7 +525,7 @@ function isArrayLike(value) { module.exports = isArrayLike; -},{"./getLength":18,"./isLength":24}],21:[function(_dereq_,module,exports){ +},{"./getLength":16,"./isLength":22}],19:[function(_dereq_,module,exports){ /** * Checks if `value` is a host object in IE < 9. * @@ -586,12 +548,12 @@ var isHostObject = (function() { module.exports = isHostObject; -},{}],22:[function(_dereq_,module,exports){ +},{}],20:[function(_dereq_,module,exports){ /** Used to detect unsigned integer values. */ var reIsUint = /^\d+$/; /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -612,7 +574,7 @@ function isIndex(value, length) { module.exports = isIndex; -},{}],23:[function(_dereq_,module,exports){ +},{}],21:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('./isArrayLike'), isIndex = _dereq_('./isIndex'), isObject = _dereq_('../lang/isObject'); @@ -642,9 +604,9 @@ function isIterateeCall(value, index, object) { module.exports = isIterateeCall; -},{"../lang/isObject":33,"./isArrayLike":20,"./isIndex":22}],24:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"./isArrayLike":18,"./isIndex":20}],22:[function(_dereq_,module,exports){ /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -652,7 +614,7 @@ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @private * @param {*} value The value to check. @@ -664,7 +626,7 @@ function isLength(value) { module.exports = isLength; -},{}],25:[function(_dereq_,module,exports){ +},{}],23:[function(_dereq_,module,exports){ /** * Checks if `value` is object-like. * @@ -678,70 +640,7 @@ function isObjectLike(value) { module.exports = isObjectLike; -},{}],26:[function(_dereq_,module,exports){ -var baseForIn = _dereq_('./baseForIn'), - isArguments = _dereq_('../lang/isArguments'), - isHostObject = _dereq_('./isHostObject'), - isObjectLike = _dereq_('./isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** - * A fallback implementation of `_.isPlainObject` which checks if `value` - * is an object created by the `Object` constructor or has a `[[Prototype]]` - * of `null`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ -function shimIsPlainObject(value) { - var Ctor; - - // Exit early for non `Object` objects. - if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) || - (!hasOwnProperty.call(value, 'constructor') && - (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) || - (!support.argsTag && isArguments(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - var result; - if (support.ownLast) { - baseForIn(value, function(subValue, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - baseForIn(value, function(subValue, key) { - result = key; - }); - return result === undefined || hasOwnProperty.call(value, result); -} - -module.exports = shimIsPlainObject; - -},{"../lang/isArguments":29,"../support":42,"./baseForIn":9,"./isHostObject":21,"./isObjectLike":25}],27:[function(_dereq_,module,exports){ +},{}],24:[function(_dereq_,module,exports){ var isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), isIndex = _dereq_('./isIndex'), @@ -785,7 +684,7 @@ function shimKeys(object) { module.exports = shimKeys; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isString":35,"../object/keysIn":39,"./isIndex":22,"./isLength":24}],28:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isString":32,"../object/keysIn":36,"./isIndex":20,"./isLength":22}],25:[function(_dereq_,module,exports){ var isObject = _dereq_('../lang/isObject'), isString = _dereq_('../lang/isString'), support = _dereq_('../support'); @@ -813,13 +712,9 @@ function toObject(value) { module.exports = toObject; -},{"../lang/isObject":33,"../lang/isString":35,"../support":42}],29:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"../lang/isString":32,"../support":38}],26:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('../internal/isArrayLike'), - isObjectLike = _dereq_('../internal/isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; + isObjectLike = _dereq_('../internal/isObjectLike'); /** Used for native method references. */ var objectProto = Object.prototype; @@ -827,12 +722,6 @@ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; @@ -853,19 +742,13 @@ var propertyIsEnumerable = objectProto.propertyIsEnumerable; * // => false */ function isArguments(value) { - return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag; -} -// Fallback for environments without a `toStringTag` for `arguments` objects. -if (!support.argsTag) { - isArguments = function(value) { - return isObjectLike(value) && isArrayLike(value) && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); - }; + return isObjectLike(value) && isArrayLike(value) && + hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); } module.exports = isArguments; -},{"../internal/isArrayLike":20,"../internal/isObjectLike":25,"../support":42}],30:[function(_dereq_,module,exports){ +},{"../internal/isArrayLike":18,"../internal/isObjectLike":23}],27:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -877,7 +760,7 @@ var arrayTag = '[object Array]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -907,10 +790,8 @@ var isArray = nativeIsArray || function(value) { module.exports = isArray; -},{"../internal/getNative":19,"../internal/isLength":24,"../internal/isObjectLike":25}],31:[function(_dereq_,module,exports){ -(function (global){ -var baseIsFunction = _dereq_('../internal/baseIsFunction'), - getNative = _dereq_('../internal/getNative'); +},{"../internal/getNative":17,"../internal/isLength":22,"../internal/isObjectLike":23}],28:[function(_dereq_,module,exports){ +var isObject = _dereq_('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]'; @@ -919,14 +800,11 @@ var funcTag = '[object Function]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var Uint8Array = getNative(global, 'Uint8Array'); - /** * Checks if `value` is classified as a `Function` object. * @@ -943,25 +821,20 @@ var Uint8Array = getNative(global, 'Uint8Array'); * _.isFunction(/abc/); * // => false */ -var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { +function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return objToString.call(value) == funcTag; -}; + // and Safari 8 which returns 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; +} module.exports = isFunction; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"../internal/baseIsFunction":10,"../internal/getNative":19}],32:[function(_dereq_,module,exports){ -var escapeRegExp = _dereq_('../string/escapeRegExp'), +},{"./isObject":30}],29:[function(_dereq_,module,exports){ +var isFunction = _dereq_('./isFunction'), isHostObject = _dereq_('../internal/isHostObject'), isObjectLike = _dereq_('../internal/isObjectLike'); -/** `Object#toString` result references. */ -var funcTag = '[object Function]'; - /** Used to detect host constructors (Safari > 5). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; @@ -974,15 +847,9 @@ var fnToString = Function.prototype.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + - escapeRegExp(fnToString.call(hasOwnProperty)) + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); @@ -1006,7 +873,7 @@ function isNative(value) { if (value == null) { return false; } - if (objToString.call(value) == funcTag) { + if (isFunction(value)) { return reIsNative.test(fnToString.call(value)); } return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); @@ -1014,7 +881,7 @@ function isNative(value) { module.exports = isNative; -},{"../internal/isHostObject":21,"../internal/isObjectLike":25,"../string/escapeRegExp":41}],33:[function(_dereq_,module,exports){ +},{"../internal/isHostObject":19,"../internal/isObjectLike":23,"./isFunction":28}],30:[function(_dereq_,module,exports){ /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) @@ -1044,10 +911,11 @@ function isObject(value) { module.exports = isObject; -},{}],34:[function(_dereq_,module,exports){ -var getNative = _dereq_('../internal/getNative'), +},{}],31:[function(_dereq_,module,exports){ +var baseForIn = _dereq_('../internal/baseForIn'), isArguments = _dereq_('./isArguments'), - shimIsPlainObject = _dereq_('../internal/shimIsPlainObject'), + isHostObject = _dereq_('../internal/isHostObject'), + isObjectLike = _dereq_('../internal/isObjectLike'), support = _dereq_('../support'); /** `Object#toString` result references. */ @@ -1056,15 +924,15 @@ var objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var getPrototypeOf = getNative(Object, 'getPrototypeOf'); - /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -1095,21 +963,37 @@ var getPrototypeOf = getNative(Object, 'getPrototypeOf'); * _.isPlainObject(Object.create(null)); * // => true */ -var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) { +function isPlainObject(value) { + var Ctor; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) || + (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { return false; } - var valueOf = getNative(value, 'valueOf'), - objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); -}; + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + if (support.ownLast) { + baseForIn(value, function(subValue, key, object) { + result = hasOwnProperty.call(object, key); + return false; + }); + return result !== false; + } + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); +} module.exports = isPlainObject; -},{"../internal/getNative":19,"../internal/shimIsPlainObject":26,"../support":42,"./isArguments":29}],35:[function(_dereq_,module,exports){ +},{"../internal/baseForIn":9,"../internal/isHostObject":19,"../internal/isObjectLike":23,"../support":38,"./isArguments":26}],32:[function(_dereq_,module,exports){ var isObjectLike = _dereq_('../internal/isObjectLike'); /** `Object#toString` result references. */ @@ -1119,7 +1003,7 @@ var stringTag = '[object String]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1146,7 +1030,7 @@ function isString(value) { module.exports = isString; -},{"../internal/isObjectLike":25}],36:[function(_dereq_,module,exports){ +},{"../internal/isObjectLike":23}],33:[function(_dereq_,module,exports){ var isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -1195,7 +1079,7 @@ typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1222,7 +1106,7 @@ function isTypedArray(value) { module.exports = isTypedArray; -},{"../internal/isLength":24,"../internal/isObjectLike":25}],37:[function(_dereq_,module,exports){ +},{"../internal/isLength":22,"../internal/isObjectLike":23}],34:[function(_dereq_,module,exports){ var baseCopy = _dereq_('../internal/baseCopy'), keysIn = _dereq_('../object/keysIn'); @@ -1255,7 +1139,7 @@ function toPlainObject(value) { module.exports = toPlainObject; -},{"../internal/baseCopy":7,"../object/keysIn":39}],38:[function(_dereq_,module,exports){ +},{"../internal/baseCopy":7,"../object/keysIn":36}],35:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isArrayLike = _dereq_('../internal/isArrayLike'), isObject = _dereq_('../lang/isObject'), @@ -1269,7 +1153,7 @@ var nativeKeys = getNative(Object, 'keys'); * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) * for more details. * * @static @@ -1293,7 +1177,7 @@ var nativeKeys = getNative(Object, 'keys'); * // => ['0', '1'] */ var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? null : object.constructor; + var Ctor = object == null ? undefined : object.constructor; if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) { return shimKeys(object); @@ -1303,7 +1187,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"../internal/getNative":19,"../internal/isArrayLike":20,"../internal/shimKeys":27,"../lang/isObject":33,"../support":42}],39:[function(_dereq_,module,exports){ +},{"../internal/getNative":17,"../internal/isArrayLike":18,"../internal/shimKeys":24,"../lang/isObject":30,"../support":38}],36:[function(_dereq_,module,exports){ var arrayEach = _dereq_('../internal/arrayEach'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -1340,7 +1224,7 @@ var errorProto = Error.prototype, var hasOwnProperty = objectProto.hasOwnProperty; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1407,7 +1291,7 @@ function keysIn(object) { while (++index < length) { result[index] = (index + ''); } - // lodash skips the `constructor` property when it infers it is iterating + // lodash skips the `constructor` property when it infers it's iterating // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]` // attribute of an existing property and the `constructor` property of a // prototype defaults to non-enumerable. @@ -1441,7 +1325,7 @@ function keysIn(object) { module.exports = keysIn; -},{"../internal/arrayEach":6,"../internal/isIndex":22,"../internal/isLength":24,"../lang/isArguments":29,"../lang/isArray":30,"../lang/isFunction":31,"../lang/isObject":33,"../lang/isString":35,"../support":42}],40:[function(_dereq_,module,exports){ +},{"../internal/arrayEach":6,"../internal/isIndex":20,"../internal/isLength":22,"../lang/isArguments":26,"../lang/isArray":27,"../lang/isFunction":28,"../lang/isObject":30,"../lang/isString":32,"../support":38}],37:[function(_dereq_,module,exports){ var baseMerge = _dereq_('../internal/baseMerge'), createAssigner = _dereq_('../internal/createAssigner'); @@ -1449,7 +1333,7 @@ var baseMerge = _dereq_('../internal/baseMerge'), * Recursively merges own enumerable properties of the source object(s), that * don't resolve to `undefined` into the destination object. Subsequent sources * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and + * provided it's invoked to produce the merged values of the destination and * source properties. If `customizer` returns `undefined` merging is handled * by the method instead. The `customizer` is bound to `thisArg` and invoked * with five arguments: (objectValue, sourceValue, key, object, source). @@ -1497,60 +1381,12 @@ var merge = createAssigner(baseMerge); module.exports = merge; -},{"../internal/baseMerge":11,"../internal/createAssigner":16}],41:[function(_dereq_,module,exports){ -var baseToString = _dereq_('../internal/baseToString'); - -/** - * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special). - * In addition to special characters the forward slash is escaped to allow for - * easier `eval` use and `Function` compilation. - */ -var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, - reHasRegExpChars = RegExp(reRegExpChars.source); - -/** - * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", - * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' - */ -function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, '\\$&') - : string; -} - -module.exports = escapeRegExp; - -},{"../internal/baseToString":14}],42:[function(_dereq_,module,exports){ -(function (global){ -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - objectTag = '[object Object]'; - +},{"../internal/baseMerge":10,"../internal/createAssigner":14}],38:[function(_dereq_,module,exports){ /** Used for native method references. */ var arrayProto = Array.prototype, errorProto = Error.prototype, objectProto = Object.prototype; -/** Used to detect DOM support. */ -var document = (document = global.window) ? document.document : null; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice; @@ -1572,15 +1408,6 @@ var support = {}; Ctor.prototype = { 'valueOf': x, 'y': x }; for (var key in new Ctor) { props.push(key); } - /** - * Detect if the `toStringTag` of `arguments` objects is resolvable - * (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsTag = objToString.call(arguments) == argsTag; - /** * Detect if `name` or `message` properties of `Error.prototype` are * enumerable by default (IE < 9, Safari < 5.1). @@ -1604,14 +1431,6 @@ var support = {}; */ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype'); - /** - * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.nodeTag = objToString.call(document) != objectTag; - /** * Detect if properties shadowing those on `Object.prototype` are non-enumerable. * @@ -1656,25 +1475,11 @@ var support = {}; * @type boolean */ support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if the DOM is supported. - * - * @memberOf _.support - * @type boolean - */ - try { - support.dom = document.createDocumentFragment().nodeType === 11; - } catch(e) { - support.dom = false; - } }(1, 0)); module.exports = support; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{}],43:[function(_dereq_,module,exports){ +},{}],39:[function(_dereq_,module,exports){ /** * This method returns the first argument provided to it. * @@ -1696,7 +1501,7 @@ function identity(value) { module.exports = identity; -},{}],44:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es6-shim @@ -1706,22 +1511,24 @@ var canBeObject = function (obj) { }; var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var defineProperties = _dereq_('define-properties'); +var toObject = Object; +var push = Array.prototype.push; var propIsEnumerable = Object.prototype.propertyIsEnumerable; -var isEnumerableOn = function (obj) { - return function isEnumerable(prop) { - return propIsEnumerable.call(obj, prop); - }; -}; var assignShim = function assign(target, source1) { if (!canBeObject(target)) { throw new TypeError('target must be an object'); } - var objTarget = Object(target); - var s, source, i, props; + var objTarget = toObject(target); + var s, source, i, props, syms; for (s = 1; s < arguments.length; ++s) { - source = Object(arguments[s]); + source = toObject(arguments[s]); props = keys(source); if (hasSymbols && Object.getOwnPropertySymbols) { - props.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source))); + syms = Object.getOwnPropertySymbols(source); + for (i = 0; i < syms.length; ++i) { + if (propIsEnumerable.call(source, syms[i])) { + push.call(props, syms[i]); + } + } } for (i = 0; i < props.length; ++i) { objTarget[props[i]] = source[props[i]]; @@ -1730,9 +1537,12 @@ var assignShim = function assign(target, source1) { return objTarget; }; -assignShim.shim = function shimObjectAssign() { - if (Object.assign && Object.preventExtensions) { - var assignHasPendingExceptions = (function () { +defineProperties(assignShim, { + shim: function shimObjectAssign() { + var assignHasPendingExceptions = function () { + if (!Object.assign || !Object.preventExtensions) { + return false; + } // Firefox 37 still has "pending exception" logic in its Object.assign implementation, // which is 72% slower than our shim, and Firefox 40's native implementation. var thrower = Object.preventExtensions({ 1: 2 }); @@ -1741,27 +1551,24 @@ assignShim.shim = function shimObjectAssign() { } catch (e) { return thrower[1] === 'y'; } - }()); - if (assignHasPendingExceptions) { - delete Object.assign; - } + }; + defineProperties( + Object, + { assign: assignShim }, + { assign: assignHasPendingExceptions } + ); + return Object.assign || assignShim; } - if (!Object.assign) { - defineProperties(Object, { - assign: assignShim - }); - } - return Object.assign || assignShim; -}; +}); module.exports = assignShim; - -},{"define-properties":45,"object-keys":47}],45:[function(_dereq_,module,exports){ +},{"define-properties":41,"object-keys":43}],41:[function(_dereq_,module,exports){ 'use strict'; var keys = _dereq_('object-keys'); var foreach = _dereq_('foreach'); +var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var toStr = Object.prototype.toString; @@ -1772,7 +1579,10 @@ var isFunction = function (fn) { var arePropertyDescriptorsSupported = function () { var obj = {}; try { - Object.defineProperty(obj, 'x', { value: obj }); + Object.defineProperty(obj, 'x', { value: obj, enumerable: false }); + /* eslint-disable no-unused-vars */ + for (var _ in obj) { return false; } + /* eslint-enable no-unused-vars */ return obj.x === obj; } catch (e) { /* this is IE 8. */ return false; @@ -1798,7 +1608,11 @@ var defineProperty = function (object, name, value, predicate) { var defineProperties = function (object, map) { var predicates = arguments.length > 2 ? arguments[2] : {}; - foreach(keys(map), function (name) { + var props = keys(map); + if (hasSymbols) { + props = props.concat(Object.getOwnPropertySymbols(map)); + } + foreach(props, function (name) { defineProperty(object, name, map[name], predicates[name]); }); }; @@ -1807,7 +1621,7 @@ defineProperties.supportsDescriptors = !!supportsDescriptors; module.exports = defineProperties; -},{"foreach":46,"object-keys":47}],46:[function(_dereq_,module,exports){ +},{"foreach":42,"object-keys":43}],42:[function(_dereq_,module,exports){ var hasOwn = Object.prototype.hasOwnProperty; var toString = Object.prototype.toString; @@ -1831,12 +1645,13 @@ module.exports = function forEach (obj, fn, ctx) { }; -},{}],47:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es5-shim var has = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; +var slice = Array.prototype.slice; var isArgs = _dereq_('./isArguments'); var hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString'); var hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype'); @@ -1849,6 +1664,44 @@ var dontEnums = [ 'propertyIsEnumerable', 'constructor' ]; +var equalsConstructorPrototype = function (o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; +}; +var blacklistedKeys = { + $window: true, + $console: true, + $parent: true, + $self: true, + $frames: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true +}; +var hasAutomationEqualityBug = (function () { + /* global window */ + if (typeof window === 'undefined') { return false; } + for (var k in window) { + if (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } + return false; +}()); +var equalsConstructorPrototypeIfNotBuggy = function (o) { + /* global window */ + if (typeof window === 'undefined' && !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { + return false; + } +}; var keysShim = function keys(object) { var isObject = object !== null && typeof object === 'object'; @@ -1881,8 +1734,7 @@ var keysShim = function keys(object) { } if (hasDontEnumBug) { - var ctor = object.constructor; - var skipConstructor = ctor && ctor.prototype === object; + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); for (var k = 0; k < dontEnums.length; ++k) { if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { @@ -1896,13 +1748,28 @@ var keysShim = function keys(object) { keysShim.shim = function shimObjectKeys() { if (!Object.keys) { Object.keys = keysShim; + } else { + var keysWorksWithArguments = (function () { + // Safari 5.0 bug + return (Object.keys(arguments) || '').length === 2; + }(1, 2)); + if (!keysWorksWithArguments) { + var originalKeys = Object.keys; + Object.keys = function keys(object) { + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } else { + return originalKeys(object); + } + }; + } } return Object.keys || keysShim; }; module.exports = keysShim; -},{"./isArguments":48}],48:[function(_dereq_,module,exports){ +},{"./isArguments":44}],44:[function(_dereq_,module,exports){ 'use strict'; var toStr = Object.prototype.toString; @@ -1911,17 +1778,17 @@ module.exports = function isArguments(value) { var str = toStr.call(value); var isArgs = str === '[object Arguments]'; if (!isArgs) { - isArgs = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toStr.call(value.callee) === '[object Function]'; + isArgs = str !== '[object Array]' && + value !== null && + typeof value === 'object' && + typeof value.length === 'number' && + value.length >= 0 && + toStr.call(value.callee) === '[object Function]'; } return isArgs; }; -},{}],49:[function(_dereq_,module,exports){ +},{}],45:[function(_dereq_,module,exports){ module.exports = SafeParseTuple function SafeParseTuple(obj, reviver) { @@ -1937,27 +1804,27 @@ function SafeParseTuple(obj, reviver) { return [error, json] } -},{}],50:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],46:[function(_dereq_,module,exports){ /** * @file big-play-button.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('./component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('./button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('./component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Initial play button. Shows before the video has played. The hiding of the @@ -1970,14 +1837,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var BigPlayButton = (function (_Button) { + _inherits(BigPlayButton, _Button); + function BigPlayButton(player, options) { _classCallCheck(this, BigPlayButton); _Button.call(this, player, options); } - _inherits(BigPlayButton, _Button); - /** * Allow sub components to stack CSS class names * @@ -2000,51 +1867,53 @@ var BigPlayButton = (function (_Button) { }; return BigPlayButton; -})(_Button3['default']); +})(_buttonJs2['default']); BigPlayButton.prototype.controlText_ = 'Play Video'; -_Component2['default'].registerComponent('BigPlayButton', BigPlayButton); +_componentJs2['default'].registerComponent('BigPlayButton', BigPlayButton); exports['default'] = BigPlayButton; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52}],51:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48}],47:[function(_dereq_,module,exports){ /** * @file button.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('./utils/events.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Events = _interopRequireWildcard(_import2); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/fn.js'); +var _component2 = _interopRequireDefault(_component); -var Fn = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _document = _dereq_('global/document'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * Base class for all buttons @@ -2056,6 +1925,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Button = (function (_Component) { + _inherits(Button, _Component); + function Button(player, options) { _classCallCheck(this, Button); @@ -2069,8 +1940,6 @@ var Button = (function (_Component) { this.on('blur', this.handleBlur); } - _inherits(Button, _Component); - /** * Create the component's DOM element * @@ -2081,14 +1950,14 @@ var Button = (function (_Component) { */ Button.prototype.createEl = function createEl() { - var tag = arguments[0] === undefined ? 'button' : arguments[0]; - var props = arguments[1] === undefined ? {} : arguments[1]; + var tag = arguments.length <= 0 || arguments[0] === undefined ? 'button' : arguments[0]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add standard Aria and Tabindex info - props = _assign2['default']({ + props = _objectAssign2['default']({ className: this.buildCSSClass(), - role: 'button', - type: 'button', // Necessary since the default button type is "submit" + 'role': 'button', + 'type': 'button', // Necessary since the default button type is "submit" 'aria-live': 'polite', // let the screen reader user know that the text of the button may change tabIndex: 0 }, props); @@ -2115,9 +1984,9 @@ var Button = (function (_Component) { */ Button.prototype.controlText = function controlText(text) { - if (!text) { - return this.controlText_ || 'Need Text'; - }this.controlText_ = text; + if (!text) return this.controlText_ || 'Need Text'; + + this.controlText_ = text; this.controlTextEl_.innerHTML = this.localize(this.controlText_); return this; @@ -2149,7 +2018,7 @@ var Button = (function (_Component) { */ Button.prototype.handleFocus = function handleFocus() { - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; /** @@ -2173,65 +2042,68 @@ var Button = (function (_Component) { */ Button.prototype.handleBlur = function handleBlur() { - Events.off(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.off(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; return Button; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('Button', Button); +_component2['default'].registerComponent('Button', Button); exports['default'] = Button; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"global/document":1,"object.assign":44}],52:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"global/document":1,"object.assign":40}],48:[function(_dereq_,module,exports){ /** * @file component.js * * Player Component - Base class for all UI objects */ -var _window = _dereq_('global/window'); +'use strict'; -var _window2 = _interopRequireWildcard(_window); +exports.__esModule = true; -var _import = _dereq_('./utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('./utils/fn.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Fn = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/guid.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Guid = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import4 = _dereq_('./utils/events.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Events = _interopRequireWildcard(_import4); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * Base UI Component class @@ -2270,14 +2142,14 @@ var Component = (function () { if (!player && this.play) { this.player_ = player = this; // eslint-disable-line } else { - this.player_ = player; - } + this.player_ = player; + } // Make a copy of prototype.options_ to protect against overriding defaults - this.options_ = _mergeOptions2['default']({}, this.options_); + this.options_ = _utilsMergeOptionsJs2['default']({}, this.options_); // Updated options with supplied options - options = this.options_ = _mergeOptions2['default'](this.options_, options); + options = this.options_ = _utilsMergeOptionsJs2['default'](this.options_, options); // Get ID from options or options element if one is supplied this.id_ = options.id || options.el && options.el.id; @@ -2287,7 +2159,7 @@ var Component = (function () { // Don't require the player ID function in the case of mock players var id = player && player.id && player.id() || 'no_player'; - this.id_ = '' + id + '_component_' + Guid.newGUID(); + this.id_ = id + '_component_' + Guid.newGUID(); } this.name_ = options.name || null; @@ -2406,13 +2278,13 @@ var Component = (function () { */ Component.prototype.options = function options(obj) { - _log2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); + _utilsLogJs2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); if (!obj) { return this.options_; } - this.options_ = _mergeOptions2['default'](this.options_, obj); + this.options_ = _utilsMergeOptionsJs2['default'](this.options_, obj); return this.options_; }; @@ -2574,7 +2446,7 @@ var Component = (function () { */ Component.prototype.addChild = function addChild(child) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var component = undefined; var componentName = undefined; @@ -2590,13 +2462,13 @@ var Component = (function () { // Same as above, but true is deprecated so show a warning. if (options === true) { - _log2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); + _utilsLogJs2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); options = {}; } // If no componentClass in options, assume componentClass is the name lowercased // (e.g. playButton) - var componentClassName = options.componentClass || _toTitleCase2['default'](componentName); + var componentClassName = options.componentClass || _utilsToTitleCaseJs2['default'](componentName); // Set name through options options.name = componentName; @@ -2609,8 +2481,8 @@ var Component = (function () { // child is a component instance } else { - component = child; - } + component = child; + } this.children_.push(component); @@ -2837,46 +2709,46 @@ var Component = (function () { // Targeting another component or element } else { - (function () { - var target = first; - var type = second; - var fn = Fn.bind(_this2, third); + (function () { + var target = first; + var type = second; + var fn = Fn.bind(_this2, third); - // When this component is disposed, remove the listener from the other component - var removeOnDispose = function removeOnDispose() { - return _this2.off(target, type, fn); - }; + // When this component is disposed, remove the listener from the other component + var removeOnDispose = function removeOnDispose() { + return _this2.off(target, type, fn); + }; - // Use the same function ID so we can remove it later it using the ID - // of the original listener - removeOnDispose.guid = fn.guid; - _this2.on('dispose', removeOnDispose); + // Use the same function ID so we can remove it later it using the ID + // of the original listener + removeOnDispose.guid = fn.guid; + _this2.on('dispose', removeOnDispose); - // If the other component is disposed first we need to clean the reference - // to the other component in this component's removeOnDispose listener - // Otherwise we create a memory leak. - var cleanRemover = function cleanRemover() { - return _this2.off('dispose', removeOnDispose); - }; + // If the other component is disposed first we need to clean the reference + // to the other component in this component's removeOnDispose listener + // Otherwise we create a memory leak. + var cleanRemover = function cleanRemover() { + return _this2.off('dispose', removeOnDispose); + }; - // Add the same function ID so we can easily remove it later - cleanRemover.guid = fn.guid; + // Add the same function ID so we can easily remove it later + cleanRemover.guid = fn.guid; - // Check if this is a DOM node - if (first.nodeName) { - // Add the listener to the other element - Events.on(target, type, fn); - Events.on(target, 'dispose', cleanRemover); + // Check if this is a DOM node + if (first.nodeName) { + // Add the listener to the other element + Events.on(target, type, fn); + Events.on(target, 'dispose', cleanRemover); - // Should be a component - // Not using `instanceof Component` because it makes mock players difficult - } else if (typeof first.on === 'function') { - // Add the listener to the other component - target.on(type, fn); - target.on('dispose', cleanRemover); - } - })(); - } + // Should be a component + // Not using `instanceof Component` because it makes mock players difficult + } else if (typeof first.on === 'function') { + // Add the listener to the other component + target.on(type, fn); + target.on('dispose', cleanRemover); + } + })(); + } return this; }; @@ -2950,9 +2822,8 @@ var Component = (function () { */ Component.prototype.one = function one(first, second, third) { - var _this3 = this; - - var _arguments = arguments; + var _this3 = this, + _arguments = arguments; if (typeof first === 'string' || Array.isArray(first)) { Events.one(this.el_, first, Fn.bind(this, second)); @@ -2962,20 +2833,10 @@ var Component = (function () { var type = second; var fn = Fn.bind(_this3, third); - var newFunc = (function (_newFunc) { - function newFunc() { - return _newFunc.apply(this, arguments); - } - - newFunc.toString = function () { - return _newFunc.toString(); - }; - - return newFunc; - })(function () { + var newFunc = function newFunc() { _this3.off(target, type, newFunc); fn.apply(null, _arguments); - }); + }; // Keep the same function ID so we can remove it later newFunc.guid = fn.guid; @@ -3019,7 +2880,7 @@ var Component = (function () { */ Component.prototype.ready = function ready(fn) { - var sync = arguments[1] === undefined ? false : arguments[1]; + var sync = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; if (fn) { if (this.isReady_) { @@ -3266,7 +3127,7 @@ var Component = (function () { // No px so using % or no style was set, so falling back to offsetWidth/height // If component has display:none, offset will return 0 // TODO: handle display:none and no dimension style using px - return parseInt(this.el_['offset' + _toTitleCase2['default'](widthOrHeight)], 10); + return parseInt(this.el_['offset' + _utilsToTitleCaseJs2['default'](widthOrHeight)], 10); }; /** @@ -3298,7 +3159,7 @@ var Component = (function () { // If more than one finger, don't consider treating this as a click if (event.touches.length === 1) { // Copy the touches object to prevent modifying the original - firstTouch = _assign2['default']({}, event.touches[0]); + firstTouch = _objectAssign2['default']({}, event.touches[0]); // Record start time so we can detect a tap vs. "touch and hold" touchStart = new Date().getTime(); // Reset couldBeTap tracking @@ -3420,7 +3281,7 @@ var Component = (function () { fn = Fn.bind(this, fn); // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't. - var timeoutId = _window2['default'].setTimeout(fn, timeout); + var timeoutId = _globalWindow2['default'].setTimeout(fn, timeout); var disposeFn = function disposeFn() { this.clearTimeout(timeoutId); @@ -3442,7 +3303,7 @@ var Component = (function () { */ Component.prototype.clearTimeout = function clearTimeout(timeoutId) { - _window2['default'].clearTimeout(timeoutId); + _globalWindow2['default'].clearTimeout(timeoutId); var disposeFn = function disposeFn() {}; @@ -3465,7 +3326,7 @@ var Component = (function () { Component.prototype.setInterval = function setInterval(fn, interval) { fn = Fn.bind(this, fn); - var intervalId = _window2['default'].setInterval(fn, interval); + var intervalId = _globalWindow2['default'].setInterval(fn, interval); var disposeFn = function disposeFn() { this.clearInterval(intervalId); @@ -3487,7 +3348,7 @@ var Component = (function () { */ Component.prototype.clearInterval = function clearInterval(intervalId) { - _window2['default'].clearInterval(intervalId); + _globalWindow2['default'].clearInterval(intervalId); var disposeFn = function disposeFn() {}; @@ -3530,9 +3391,9 @@ var Component = (function () { return Component.components_[name]; } - if (_window2['default'] && _window2['default'].videojs && _window2['default'].videojs[name]) { - _log2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); - return _window2['default'].videojs[name]; + if (_globalWindow2['default'] && _globalWindow2['default'].videojs && _globalWindow2['default'].videojs[name]) { + _utilsLogJs2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); + return _globalWindow2['default'].videojs[name]; } }; @@ -3549,7 +3410,7 @@ var Component = (function () { Component.extend = function extend(props) { props = props || {}; - _log2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); + _utilsLogJs2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); // Set up the constructor using the supplied init method // or using the init of the parent object @@ -3594,89 +3455,89 @@ Component.registerComponent('Component', Component); exports['default'] = Component; module.exports = exports['default']; -},{"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/to-title-case.js":120,"global/window":2,"object.assign":44}],53:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/to-title-case.js":116,"global/window":2,"object.assign":40}],49:[function(_dereq_,module,exports){ /** * @file control-bar.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _PlayToggle = _dereq_('./play-toggle.js'); +var _playToggleJs = _dereq_('./play-toggle.js'); -var _PlayToggle2 = _interopRequireWildcard(_PlayToggle); +var _playToggleJs2 = _interopRequireDefault(_playToggleJs); -var _CurrentTimeDisplay = _dereq_('./time-controls/current-time-display.js'); +var _timeControlsCurrentTimeDisplayJs = _dereq_('./time-controls/current-time-display.js'); -var _CurrentTimeDisplay2 = _interopRequireWildcard(_CurrentTimeDisplay); +var _timeControlsCurrentTimeDisplayJs2 = _interopRequireDefault(_timeControlsCurrentTimeDisplayJs); -var _DurationDisplay = _dereq_('./time-controls/duration-display.js'); +var _timeControlsDurationDisplayJs = _dereq_('./time-controls/duration-display.js'); -var _DurationDisplay2 = _interopRequireWildcard(_DurationDisplay); +var _timeControlsDurationDisplayJs2 = _interopRequireDefault(_timeControlsDurationDisplayJs); -var _TimeDivider = _dereq_('./time-controls/time-divider.js'); +var _timeControlsTimeDividerJs = _dereq_('./time-controls/time-divider.js'); -var _TimeDivider2 = _interopRequireWildcard(_TimeDivider); +var _timeControlsTimeDividerJs2 = _interopRequireDefault(_timeControlsTimeDividerJs); -var _RemainingTimeDisplay = _dereq_('./time-controls/remaining-time-display.js'); +var _timeControlsRemainingTimeDisplayJs = _dereq_('./time-controls/remaining-time-display.js'); -var _RemainingTimeDisplay2 = _interopRequireWildcard(_RemainingTimeDisplay); +var _timeControlsRemainingTimeDisplayJs2 = _interopRequireDefault(_timeControlsRemainingTimeDisplayJs); -var _LiveDisplay = _dereq_('./live-display.js'); +var _liveDisplayJs = _dereq_('./live-display.js'); -var _LiveDisplay2 = _interopRequireWildcard(_LiveDisplay); +var _liveDisplayJs2 = _interopRequireDefault(_liveDisplayJs); -var _ProgressControl = _dereq_('./progress-control/progress-control.js'); +var _progressControlProgressControlJs = _dereq_('./progress-control/progress-control.js'); -var _ProgressControl2 = _interopRequireWildcard(_ProgressControl); +var _progressControlProgressControlJs2 = _interopRequireDefault(_progressControlProgressControlJs); -var _FullscreenToggle = _dereq_('./fullscreen-toggle.js'); +var _fullscreenToggleJs = _dereq_('./fullscreen-toggle.js'); -var _FullscreenToggle2 = _interopRequireWildcard(_FullscreenToggle); +var _fullscreenToggleJs2 = _interopRequireDefault(_fullscreenToggleJs); -var _VolumeControl = _dereq_('./volume-control/volume-control.js'); +var _volumeControlVolumeControlJs = _dereq_('./volume-control/volume-control.js'); -var _VolumeControl2 = _interopRequireWildcard(_VolumeControl); +var _volumeControlVolumeControlJs2 = _interopRequireDefault(_volumeControlVolumeControlJs); -var _VolumeMenuButton = _dereq_('./volume-menu-button.js'); +var _volumeMenuButtonJs = _dereq_('./volume-menu-button.js'); -var _VolumeMenuButton2 = _interopRequireWildcard(_VolumeMenuButton); +var _volumeMenuButtonJs2 = _interopRequireDefault(_volumeMenuButtonJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _muteToggleJs = _dereq_('./mute-toggle.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); -var _ChaptersButton = _dereq_('./text-track-controls/chapters-button.js'); +var _textTrackControlsChaptersButtonJs = _dereq_('./text-track-controls/chapters-button.js'); -var _ChaptersButton2 = _interopRequireWildcard(_ChaptersButton); +var _textTrackControlsChaptersButtonJs2 = _interopRequireDefault(_textTrackControlsChaptersButtonJs); -var _SubtitlesButton = _dereq_('./text-track-controls/subtitles-button.js'); +var _textTrackControlsSubtitlesButtonJs = _dereq_('./text-track-controls/subtitles-button.js'); -var _SubtitlesButton2 = _interopRequireWildcard(_SubtitlesButton); +var _textTrackControlsSubtitlesButtonJs2 = _interopRequireDefault(_textTrackControlsSubtitlesButtonJs); -var _CaptionsButton = _dereq_('./text-track-controls/captions-button.js'); +var _textTrackControlsCaptionsButtonJs = _dereq_('./text-track-controls/captions-button.js'); -var _CaptionsButton2 = _interopRequireWildcard(_CaptionsButton); +var _textTrackControlsCaptionsButtonJs2 = _interopRequireDefault(_textTrackControlsCaptionsButtonJs); -var _PlaybackRateMenuButton = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); +var _playbackRateMenuPlaybackRateMenuButtonJs = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); -var _PlaybackRateMenuButton2 = _interopRequireWildcard(_PlaybackRateMenuButton); +var _playbackRateMenuPlaybackRateMenuButtonJs2 = _interopRequireDefault(_playbackRateMenuPlaybackRateMenuButtonJs); -var _CustomControlSpacer = _dereq_('./spacer-controls/custom-control-spacer.js'); +var _spacerControlsCustomControlSpacerJs = _dereq_('./spacer-controls/custom-control-spacer.js'); -var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); +var _spacerControlsCustomControlSpacerJs2 = _interopRequireDefault(_spacerControlsCustomControlSpacerJs); /** * Container of main controls @@ -3686,16 +3547,14 @@ var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); */ var ControlBar = (function (_Component) { + _inherits(ControlBar, _Component); + function ControlBar() { _classCallCheck(this, ControlBar); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ControlBar, _Component); - /** * Create the component's DOM element * @@ -3710,38 +3569,38 @@ var ControlBar = (function (_Component) { }; return ControlBar; -})(_Component3['default']); +})(_componentJs2['default']); ControlBar.prototype.options_ = { loadEvent: 'play', children: ['playToggle', 'volumeMenuButton', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'muteToggle', 'volumeControl', 'chaptersButton', 'subtitlesButton', 'captionsButton', 'fullscreenToggle'] }; -_Component3['default'].registerComponent('ControlBar', ControlBar); +_componentJs2['default'].registerComponent('ControlBar', ControlBar); exports['default'] = ControlBar; module.exports = exports['default']; -},{"../component.js":52,"./fullscreen-toggle.js":54,"./live-display.js":55,"./mute-toggle.js":56,"./play-toggle.js":57,"./playback-rate-menu/playback-rate-menu-button.js":58,"./progress-control/progress-control.js":62,"./spacer-controls/custom-control-spacer.js":64,"./text-track-controls/captions-button.js":67,"./text-track-controls/chapters-button.js":68,"./text-track-controls/subtitles-button.js":71,"./time-controls/current-time-display.js":74,"./time-controls/duration-display.js":75,"./time-controls/remaining-time-display.js":76,"./time-controls/time-divider.js":77,"./volume-control/volume-control.js":79,"./volume-menu-button.js":81}],54:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"./fullscreen-toggle.js":50,"./live-display.js":51,"./mute-toggle.js":52,"./play-toggle.js":53,"./playback-rate-menu/playback-rate-menu-button.js":54,"./progress-control/progress-control.js":58,"./spacer-controls/custom-control-spacer.js":60,"./text-track-controls/captions-button.js":63,"./text-track-controls/chapters-button.js":64,"./text-track-controls/subtitles-button.js":67,"./time-controls/current-time-display.js":70,"./time-controls/duration-display.js":71,"./time-controls/remaining-time-display.js":72,"./time-controls/time-divider.js":73,"./volume-control/volume-control.js":75,"./volume-menu-button.js":77}],50:[function(_dereq_,module,exports){ /** * @file fullscreen-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Toggle fullscreen video @@ -3751,16 +3610,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var FullscreenToggle = (function (_Button) { + _inherits(FullscreenToggle, _Button); + function FullscreenToggle() { _classCallCheck(this, FullscreenToggle); - if (_Button != null) { - _Button.apply(this, arguments); - } + _Button.apply(this, arguments); } - _inherits(FullscreenToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3789,35 +3646,37 @@ var FullscreenToggle = (function (_Button) { }; return FullscreenToggle; -})(_Button3['default']); +})(_buttonJs2['default']); FullscreenToggle.prototype.controlText_ = 'Fullscreen'; -_Component2['default'].registerComponent('FullscreenToggle', FullscreenToggle); +_componentJs2['default'].registerComponent('FullscreenToggle', FullscreenToggle); exports['default'] = FullscreenToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],55:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],51:[function(_dereq_,module,exports){ /** * @file live-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Displays the live indicator @@ -3828,16 +3687,14 @@ var Dom = _interopRequireWildcard(_import); */ var LiveDisplay = (function (_Component) { + _inherits(LiveDisplay, _Component); + function LiveDisplay() { _classCallCheck(this, LiveDisplay); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LiveDisplay, _Component); - /** * Create the component's DOM element * @@ -3862,37 +3719,39 @@ var LiveDisplay = (function (_Component) { }; return LiveDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LiveDisplay', LiveDisplay); +_component2['default'].registerComponent('LiveDisplay', LiveDisplay); exports['default'] = LiveDisplay; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111}],56:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107}],52:[function(_dereq_,module,exports){ /** * @file mute-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../utils/dom.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Dom = _interopRequireWildcard(_import); +var _button = _dereq_('../button'); + +var _button2 = _interopRequireDefault(_button); + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * A button component for muting the audio @@ -3904,6 +3763,8 @@ var Dom = _interopRequireWildcard(_import); */ var MuteToggle = (function (_Button) { + _inherits(MuteToggle, _Button); + function MuteToggle(player, options) { _classCallCheck(this, MuteToggle); @@ -3912,14 +3773,14 @@ var MuteToggle = (function (_Button) { this.on(player, 'volumechange', this.update); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { this.update(); // We need to update the button to account for a default muted state. - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -3927,8 +3788,6 @@ var MuteToggle = (function (_Button) { }); } - _inherits(MuteToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3985,35 +3844,35 @@ var MuteToggle = (function (_Button) { }; return MuteToggle; -})(_Button3['default']); +})(_button2['default']); MuteToggle.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('MuteToggle', MuteToggle); +_component2['default'].registerComponent('MuteToggle', MuteToggle); exports['default'] = MuteToggle; module.exports = exports['default']; -},{"../button":51,"../component":52,"../utils/dom.js":111}],57:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button":47,"../component":48,"../utils/dom.js":107}],53:[function(_dereq_,module,exports){ /** * @file play-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Button to toggle between play and pause @@ -4025,6 +3884,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlayToggle = (function (_Button) { + _inherits(PlayToggle, _Button); + function PlayToggle(player, options) { _classCallCheck(this, PlayToggle); @@ -4034,8 +3895,6 @@ var PlayToggle = (function (_Button) { this.on(player, 'pause', this.handlePause); } - _inherits(PlayToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -4086,47 +3945,49 @@ var PlayToggle = (function (_Button) { }; return PlayToggle; -})(_Button3['default']); +})(_buttonJs2['default']); PlayToggle.prototype.controlText_ = 'Play'; -_Component2['default'].registerComponent('PlayToggle', PlayToggle); +_componentJs2['default'].registerComponent('PlayToggle', PlayToggle); exports['default'] = PlayToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],58:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],54:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Menu = _dereq_('../../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _PlaybackRateMenuItem = _dereq_('./playback-rate-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _PlaybackRateMenuItem2 = _interopRequireWildcard(_PlaybackRateMenuItem); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _Component = _dereq_('../../component.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _Component2 = _interopRequireWildcard(_Component); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _import = _dereq_('../../utils/dom.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Dom = _interopRequireWildcard(_import); +var _playbackRateMenuItemJs = _dereq_('./playback-rate-menu-item.js'); + +var _playbackRateMenuItemJs2 = _interopRequireDefault(_playbackRateMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * The component for controlling the playback rate @@ -4138,6 +3999,8 @@ var Dom = _interopRequireWildcard(_import); */ var PlaybackRateMenuButton = (function (_MenuButton) { + _inherits(PlaybackRateMenuButton, _MenuButton); + function PlaybackRateMenuButton(player, options) { _classCallCheck(this, PlaybackRateMenuButton); @@ -4150,8 +4013,6 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.on(player, 'ratechange', this.updateLabel); } - _inherits(PlaybackRateMenuButton, _MenuButton); - /** * Create the component's DOM element * @@ -4164,7 +4025,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.labelEl_ = Dom.createEl('div', { className: 'vjs-playback-rate-value', - innerHTML: 1 + innerHTML: 1.0 }); el.appendChild(this.labelEl_); @@ -4191,12 +4052,12 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player()); + var menu = new _menuMenuJs2['default'](this.player()); var rates = this.playbackRates(); if (rates) { for (var i = rates.length - 1; i >= 0; i--) { - menu.addChild(new _PlaybackRateMenuItem2['default'](this.player(), { rate: rates[i] + 'x' })); + menu.addChild(new _playbackRateMenuItemJs2['default'](this.player(), { 'rate': rates[i] + 'x' })); } } @@ -4244,7 +4105,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRates = function playbackRates() { - return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates; + return this.options_['playbackRates'] || this.options_.playerOptions && this.options_.playerOptions['playbackRates']; }; /** @@ -4255,7 +4116,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRateSupported = function playbackRateSupported() { - return this.player().tech && this.player().tech.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0; + return this.player().tech && this.player().tech['featuresPlaybackRate'] && this.playbackRates() && this.playbackRates().length > 0; }; /** @@ -4285,35 +4146,35 @@ var PlaybackRateMenuButton = (function (_MenuButton) { }; return PlaybackRateMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); PlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate'; -_Component2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); +_componentJs2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); exports['default'] = PlaybackRateMenuButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../menu/menu.js":90,"../../utils/dom.js":111,"./playback-rate-menu-item.js":59}],59:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../menu/menu.js":86,"../../utils/dom.js":107,"./playback-rate-menu-item.js":55}],55:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The specific menu item type for selecting a playback rate @@ -4325,15 +4186,17 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlaybackRateMenuItem = (function (_MenuItem) { + _inherits(PlaybackRateMenuItem, _MenuItem); + function PlaybackRateMenuItem(player, options) { _classCallCheck(this, PlaybackRateMenuItem); - var label = options.rate; + var label = options['rate']; var rate = parseFloat(label, 10); // Modify options for parent MenuItem class's init. - options.label = label; - options.selected = rate === 1; + options['label'] = label; + options['selected'] = rate === 1; _MenuItem.call(this, player, options); this.label = label; @@ -4342,8 +4205,6 @@ var PlaybackRateMenuItem = (function (_MenuItem) { this.on(player, 'ratechange', this.update); } - _inherits(PlaybackRateMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -4366,35 +4227,37 @@ var PlaybackRateMenuItem = (function (_MenuItem) { }; return PlaybackRateMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); PlaybackRateMenuItem.prototype.contentElType = 'button'; -_Component2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); +_componentJs2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); exports['default'] = PlaybackRateMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89}],60:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85}],56:[function(_dereq_,module,exports){ /** * @file load-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Shows load progress @@ -4406,6 +4269,8 @@ var Dom = _interopRequireWildcard(_import); */ var LoadProgressBar = (function (_Component) { + _inherits(LoadProgressBar, _Component); + function LoadProgressBar(player, options) { _classCallCheck(this, LoadProgressBar); @@ -4413,8 +4278,6 @@ var LoadProgressBar = (function (_Component) { this.on(player, 'progress', this.update); } - _inherits(LoadProgressBar, _Component); - /** * Create the component's DOM element * @@ -4472,37 +4335,39 @@ var LoadProgressBar = (function (_Component) { }; return LoadProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('LoadProgressBar', LoadProgressBar); +_componentJs2['default'].registerComponent('LoadProgressBar', LoadProgressBar); exports['default'] = LoadProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111}],61:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107}],57:[function(_dereq_,module,exports){ /** * @file play-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Shows play progress @@ -4514,6 +4379,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var PlayProgressBar = (function (_Component) { + _inherits(PlayProgressBar, _Component); + function PlayProgressBar(player, options) { _classCallCheck(this, PlayProgressBar); @@ -4522,8 +4389,6 @@ var PlayProgressBar = (function (_Component) { player.ready(Fn.bind(this, this.updateDataAttr)); } - _inherits(PlayProgressBar, _Component); - /** * Create the component's DOM element * @@ -4540,37 +4405,37 @@ var PlayProgressBar = (function (_Component) { PlayProgressBar.prototype.updateDataAttr = function updateDataAttr() { var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); - this.el_.setAttribute('data-current-time', _formatTime2['default'](time, this.player_.duration())); + this.el_.setAttribute('data-current-time', _utilsFormatTimeJs2['default'](time, this.player_.duration())); }; return PlayProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('PlayProgressBar', PlayProgressBar); +_componentJs2['default'].registerComponent('PlayProgressBar', PlayProgressBar); exports['default'] = PlayProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/fn.js":113,"../../utils/format-time.js":114}],62:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/fn.js":109,"../../utils/format-time.js":110}],58:[function(_dereq_,module,exports){ /** * @file progress-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _SeekBar = _dereq_('./seek-bar.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _SeekBar2 = _interopRequireWildcard(_SeekBar); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _seekBarJs = _dereq_('./seek-bar.js'); + +var _seekBarJs2 = _interopRequireDefault(_seekBarJs); /** * The Progress Control component contains the seek bar, load progress, @@ -4583,16 +4448,14 @@ var _SeekBar2 = _interopRequireWildcard(_SeekBar); */ var ProgressControl = (function (_Component) { + _inherits(ProgressControl, _Component); + function ProgressControl() { _classCallCheck(this, ProgressControl); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ProgressControl, _Component); - /** * Create the component's DOM element * @@ -4607,55 +4470,57 @@ var ProgressControl = (function (_Component) { }; return ProgressControl; -})(_Component3['default']); +})(_componentJs2['default']); ProgressControl.prototype.options_ = { children: { - seekBar: {} + 'seekBar': {} } }; -_Component3['default'].registerComponent('ProgressControl', ProgressControl); +_componentJs2['default'].registerComponent('ProgressControl', ProgressControl); exports['default'] = ProgressControl; module.exports = exports['default']; -},{"../../component.js":52,"./seek-bar.js":63}],63:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./seek-bar.js":59}],59:[function(_dereq_,module,exports){ /** * @file seek-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _LoadProgressBar = _dereq_('./load-progress-bar.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _LoadProgressBar2 = _interopRequireWildcard(_LoadProgressBar); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); -var _PlayProgressBar = _dereq_('./play-progress-bar.js'); +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); -var _PlayProgressBar2 = _interopRequireWildcard(_PlayProgressBar); +var _componentJs = _dereq_('../../component.js'); -var _import = _dereq_('../../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import); +var _loadProgressBarJs = _dereq_('./load-progress-bar.js'); -var _formatTime = _dereq_('../../utils/format-time.js'); +var _loadProgressBarJs2 = _interopRequireDefault(_loadProgressBarJs); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _playProgressBarJs = _dereq_('./play-progress-bar.js'); + +var _playProgressBarJs2 = _interopRequireDefault(_playProgressBarJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Seek Bar and holder for the progress bars @@ -4667,6 +4532,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var SeekBar = (function (_Slider) { + _inherits(SeekBar, _Slider); + function SeekBar(player, options) { _classCallCheck(this, SeekBar); @@ -4675,8 +4542,6 @@ var SeekBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(SeekBar, _Slider); - /** * Create the component's DOM element * @@ -4701,7 +4566,7 @@ var SeekBar = (function (_Slider) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete) - this.el_.setAttribute('aria-valuetext', _formatTime2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) + this.el_.setAttribute('aria-valuetext', _utilsFormatTimeJs2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) }; /** @@ -4785,43 +4650,43 @@ var SeekBar = (function (_Slider) { }; return SeekBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); SeekBar.prototype.options_ = { children: { - loadProgressBar: {}, - playProgressBar: {} + 'loadProgressBar': {}, + 'playProgressBar': {} }, - barName: 'playProgressBar' + 'barName': 'playProgressBar' }; SeekBar.prototype.playerEvent = 'timeupdate'; -_Component2['default'].registerComponent('SeekBar', SeekBar); +_componentJs2['default'].registerComponent('SeekBar', SeekBar); exports['default'] = SeekBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"../../utils/format-time.js":114,"./load-progress-bar.js":60,"./play-progress-bar.js":61}],64:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"../../utils/format-time.js":110,"./load-progress-bar.js":56,"./play-progress-bar.js":57}],60:[function(_dereq_,module,exports){ /** * @file custom-control-spacer.js */ +'use strict'; -var _Spacer2 = _dereq_('./spacer.js'); +exports.__esModule = true; -var _Spacer3 = _interopRequireWildcard(_Spacer2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _spacerJs = _dereq_('./spacer.js'); + +var _spacerJs2 = _interopRequireDefault(_spacerJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Spacer specifically meant to be used as an insertion point for new plugins, etc. @@ -4831,16 +4696,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CustomControlSpacer = (function (_Spacer) { + _inherits(CustomControlSpacer, _Spacer); + function CustomControlSpacer() { _classCallCheck(this, CustomControlSpacer); - if (_Spacer != null) { - _Spacer.apply(this, arguments); - } + _Spacer.apply(this, arguments); } - _inherits(CustomControlSpacer, _Spacer); - /** * Allow sub components to stack CSS class names * @@ -4866,29 +4729,29 @@ var CustomControlSpacer = (function (_Spacer) { }; return CustomControlSpacer; -})(_Spacer3['default']); +})(_spacerJs2['default']); -_Component2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); +_componentJs2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); exports['default'] = CustomControlSpacer; module.exports = exports['default']; -},{"../../component.js":52,"./spacer.js":65}],65:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./spacer.js":61}],61:[function(_dereq_,module,exports){ /** * @file spacer.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Just an empty spacer element that can be used as an append point for plugins, etc. @@ -4899,16 +4762,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var Spacer = (function (_Component) { + _inherits(Spacer, _Component); + function Spacer() { _classCallCheck(this, Spacer); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Spacer, _Component); - /** * Allow sub components to stack CSS class names * @@ -4935,34 +4796,34 @@ var Spacer = (function (_Component) { }; return Spacer; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Spacer', Spacer); +_componentJs2['default'].registerComponent('Spacer', Spacer); exports['default'] = Spacer; module.exports = exports['default']; -},{"../../component.js":52}],66:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],62:[function(_dereq_,module,exports){ /** * @file caption-settings-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The menu item for caption track settings menu @@ -4974,13 +4835,15 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { + _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); + function CaptionSettingsMenuItem(player, options) { _classCallCheck(this, CaptionSettingsMenuItem); - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' settings', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' settings', 'default': false, mode: 'disabled' }; @@ -4989,8 +4852,6 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { this.addClass('vjs-texttrack-settings'); } - _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); - /** * Handle click on menu item * @@ -5002,37 +4863,37 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { }; return CaptionSettingsMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); +_componentJs2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); exports['default'] = CaptionSettingsMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],67:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],63:[function(_dereq_,module,exports){ /** * @file captions-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _CaptionSettingsMenuItem = _dereq_('./caption-settings-menu-item.js'); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _captionSettingsMenuItemJs = _dereq_('./caption-settings-menu-item.js'); + +var _captionSettingsMenuItemJs2 = _interopRequireDefault(_captionSettingsMenuItemJs); /** * The button component for toggling and selecting captions @@ -5045,6 +4906,8 @@ var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem */ var CaptionsButton = (function (_TextTrackButton) { + _inherits(CaptionsButton, _TextTrackButton); + function CaptionsButton(player, options, ready) { _classCallCheck(this, CaptionsButton); @@ -5052,8 +4915,6 @@ var CaptionsButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Captions Menu'); } - _inherits(CaptionsButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5076,7 +4937,7 @@ var CaptionsButton = (function (_TextTrackButton) { _TextTrackButton.prototype.update.call(this); // if native, then threshold is 1 because no settings button - if (this.player().tech && this.player().tech.featuresNativeTextTracks) { + if (this.player().tech && this.player().tech['featuresNativeTextTracks']) { threshold = 1; } @@ -5097,72 +4958,74 @@ var CaptionsButton = (function (_TextTrackButton) { CaptionsButton.prototype.createItems = function createItems() { var items = []; - if (!(this.player().tech && this.player().tech.featuresNativeTextTracks)) { - items.push(new _CaptionSettingsMenuItem2['default'](this.player_, { kind: this.kind_ })); + if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) { + items.push(new _captionSettingsMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); } return _TextTrackButton.prototype.createItems.call(this, items); }; return CaptionsButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); CaptionsButton.prototype.kind_ = 'captions'; CaptionsButton.prototype.controlText_ = 'Captions'; -_Component2['default'].registerComponent('CaptionsButton', CaptionsButton); +_componentJs2['default'].registerComponent('CaptionsButton', CaptionsButton); exports['default'] = CaptionsButton; module.exports = exports['default']; -},{"../../component.js":52,"./caption-settings-menu-item.js":66,"./text-track-button.js":72}],68:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./caption-settings-menu-item.js":62,"./text-track-button.js":68}],64:[function(_dereq_,module,exports){ /** * @file chapters-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _ChaptersTrackMenuItem = _dereq_('./chapters-track-menu-item.js'); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); -var _ChaptersTrackMenuItem2 = _interopRequireWildcard(_ChaptersTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _Menu = _dereq_('../../menu/menu.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _Menu2 = _interopRequireWildcard(_Menu); +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); -var _import = _dereq_('../../utils/dom.js'); +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); -var Dom = _interopRequireWildcard(_import); +var _chaptersTrackMenuItemJs = _dereq_('./chapters-track-menu-item.js'); -var _import2 = _dereq_('../../utils/fn.js'); +var _chaptersTrackMenuItemJs2 = _interopRequireDefault(_chaptersTrackMenuItemJs); -var Fn = _interopRequireWildcard(_import2); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _toTitleCase = _dereq_('../../utils/to-title-case.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../../utils/dom.js'); -var _window = _dereq_('global/window'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * The button component for toggling and selecting chapters @@ -5177,6 +5040,8 @@ var _window2 = _interopRequireWildcard(_window); */ var ChaptersButton = (function (_TextTrackButton) { + _inherits(ChaptersButton, _TextTrackButton); + function ChaptersButton(player, options, ready) { _classCallCheck(this, ChaptersButton); @@ -5184,8 +5049,6 @@ var ChaptersButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Chapters Menu'); } - _inherits(ChaptersButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5215,9 +5078,9 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5239,42 +5102,42 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { + if (track['kind'] === this.kind_) { if (!track.cues) { - track.mode = 'hidden'; + track['mode'] = 'hidden'; /* jshint loopfunc:true */ // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864 - _window2['default'].setTimeout(Fn.bind(this, function () { + _globalWindow2['default'].setTimeout(Fn.bind(this, function () { this.createMenu(); }), 100); /* jshint loopfunc:false */ } else { - chaptersTrack = track; - break; - } + chaptersTrack = track; + break; + } } } var menu = this.menu; if (menu === undefined) { - menu = new _Menu2['default'](this.player_); + menu = new _menuMenuJs2['default'](this.player_); menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.kind_), + innerHTML: _utilsToTitleCaseJs2['default'](this.kind_), tabIndex: -1 })); } if (chaptersTrack) { - var cues = chaptersTrack.cues, + var cues = chaptersTrack['cues'], cue = undefined; for (var i = 0, l = cues.length; i < l; i++) { cue = cues[i]; - var mi = new _ChaptersTrackMenuItem2['default'](this.player_, { - track: chaptersTrack, - cue: cue + var mi = new _chaptersTrackMenuItemJs2['default'](this.player_, { + 'track': chaptersTrack, + 'cue': cue }); items.push(mi); @@ -5292,40 +5155,42 @@ var ChaptersButton = (function (_TextTrackButton) { }; return ChaptersButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); ChaptersButton.prototype.kind_ = 'chapters'; ChaptersButton.prototype.controlText_ = 'Chapters'; -_Component2['default'].registerComponent('ChaptersButton', ChaptersButton); +_componentJs2['default'].registerComponent('ChaptersButton', ChaptersButton); exports['default'] = ChaptersButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu.js":90,"../../utils/dom.js":111,"../../utils/fn.js":113,"../../utils/to-title-case.js":120,"./chapters-track-menu-item.js":69,"./text-track-button.js":72,"./text-track-menu-item.js":73,"global/window":2}],69:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu.js":86,"../../utils/dom.js":107,"../../utils/fn.js":109,"../../utils/to-title-case.js":116,"./chapters-track-menu-item.js":65,"./text-track-button.js":68,"./text-track-menu-item.js":69,"global/window":2}],65:[function(_dereq_,module,exports){ /** * @file chapters-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); /** * The chapter track menu item @@ -5337,16 +5202,18 @@ var Fn = _interopRequireWildcard(_import); */ var ChaptersTrackMenuItem = (function (_MenuItem) { + _inherits(ChaptersTrackMenuItem, _MenuItem); + function ChaptersTrackMenuItem(player, options) { _classCallCheck(this, ChaptersTrackMenuItem); - var track = options.track; - var cue = options.cue; + var track = options['track']; + var cue = options['cue']; var currentTime = player.currentTime(); // Modify options for parent MenuItem class's init. - options.label = cue.text; - options.selected = cue.startTime <= currentTime && currentTime < cue.endTime; + options['label'] = cue.text; + options['selected'] = cue['startTime'] <= currentTime && currentTime < cue['endTime']; _MenuItem.call(this, player, options); this.track = track; @@ -5354,8 +5221,6 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { track.addEventListener('cuechange', Fn.bind(this, this.update)); } - _inherits(ChaptersTrackMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -5379,37 +5244,37 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { var currentTime = this.player_.currentTime(); // vjs.log(currentTime, cue.startTime); - this.selected(cue.startTime <= currentTime && currentTime < cue.endTime); + this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']); }; return ChaptersTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); +_componentJs2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); exports['default'] = ChaptersTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113}],70:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109}],66:[function(_dereq_,module,exports){ /** * @file off-text-track-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * A special menu item for turning of a specific type of text track @@ -5421,25 +5286,25 @@ var _Component2 = _interopRequireWildcard(_Component); */ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { + _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); + function OffTextTrackMenuItem(player, options) { _classCallCheck(this, OffTextTrackMenuItem); // Create pseudo track info // Requires options['kind'] - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' off', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' off', 'default': false, - mode: 'disabled' + 'mode': 'disabled' }; _TextTrackMenuItem.call(this, player, options); this.selected(true); } - _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); - /** * Handle text track change * @@ -5453,7 +5318,7 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.track.kind && track.mode === 'showing') { + if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') { selected = false; break; } @@ -5463,33 +5328,33 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { }; return OffTextTrackMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); +_componentJs2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); exports['default'] = OffTextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],71:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],67:[function(_dereq_,module,exports){ /** * @file subtitles-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackButtonJs = _dereq_('./text-track-button.js'); + +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The button component for toggling and selecting subtitles @@ -5502,6 +5367,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var SubtitlesButton = (function (_TextTrackButton) { + _inherits(SubtitlesButton, _TextTrackButton); + function SubtitlesButton(player, options, ready) { _classCallCheck(this, SubtitlesButton); @@ -5509,8 +5376,6 @@ var SubtitlesButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Subtitles Menu'); } - _inherits(SubtitlesButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5523,48 +5388,50 @@ var SubtitlesButton = (function (_TextTrackButton) { }; return SubtitlesButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); SubtitlesButton.prototype.kind_ = 'subtitles'; SubtitlesButton.prototype.controlText_ = 'Subtitles'; -_Component2['default'].registerComponent('SubtitlesButton', SubtitlesButton); +_componentJs2['default'].registerComponent('SubtitlesButton', SubtitlesButton); exports['default'] = SubtitlesButton; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-button.js":72}],72:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-button.js":68}],68:[function(_dereq_,module,exports){ /** * @file text-track-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _OffTextTrackMenuItem = _dereq_('./off-text-track-menu-item.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _offTextTrackMenuItemJs = _dereq_('./off-text-track-menu-item.js'); + +var _offTextTrackMenuItemJs2 = _interopRequireDefault(_offTextTrackMenuItemJs); /** * The base class for buttons that toggle specific text track types (e.g. subtitles) @@ -5576,6 +5443,8 @@ var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); */ var TextTrackButton = (function (_MenuButton) { + _inherits(TextTrackButton, _MenuButton); + function TextTrackButton(player, options) { _classCallCheck(this, TextTrackButton); @@ -5601,15 +5470,13 @@ var TextTrackButton = (function (_MenuButton) { }); } - _inherits(TextTrackButton, _MenuButton); - // Create a menu item for each text track TextTrackButton.prototype.createItems = function createItems() { - var items = arguments[0] === undefined ? [] : arguments[0]; + var items = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; // Add an OFF menu item to turn all tracks off - items.push(new _OffTextTrackMenuItem2['default'](this.player_, { kind: this.kind_ })); + items.push(new _offTextTrackMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); var tracks = this.player_.textTracks(); @@ -5621,9 +5488,9 @@ var TextTrackButton = (function (_MenuButton) { var track = tracks[i]; // only add tracks that are of the appropriate kind and have a label - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5632,45 +5499,47 @@ var TextTrackButton = (function (_MenuButton) { }; return TextTrackButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -_Component2['default'].registerComponent('TextTrackButton', TextTrackButton); +_componentJs2['default'].registerComponent('TextTrackButton', TextTrackButton); exports['default'] = TextTrackButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../utils/fn.js":113,"./off-text-track-menu-item.js":70,"./text-track-menu-item.js":73}],73:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../utils/fn.js":109,"./off-text-track-menu-item.js":66,"./text-track-menu-item.js":69}],69:[function(_dereq_,module,exports){ /** * @file text-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); -var _window = _dereq_('global/window'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('../../component.js'); -var _document = _dereq_('global/document'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * The specific menu item type for selecting a language within a text track kind @@ -5682,17 +5551,19 @@ var _document2 = _interopRequireWildcard(_document); */ var TextTrackMenuItem = (function (_MenuItem) { + _inherits(TextTrackMenuItem, _MenuItem); + function TextTrackMenuItem(player, options) { var _this = this; _classCallCheck(this, TextTrackMenuItem); - var track = options.track; + var track = options['track']; var tracks = player.textTracks(); // Modify options for parent MenuItem class's init. - options.label = track.label || track.language || 'Unknown'; - options.selected = track['default'] || track.mode === 'showing'; + options['label'] = track['label'] || track['language'] || 'Unknown'; + options['selected'] = track['default'] || track['mode'] === 'showing'; _MenuItem.call(this, player, options); this.track = track; @@ -5719,15 +5590,15 @@ var TextTrackMenuItem = (function (_MenuItem) { var event = undefined; _this.on(['tap', 'click'], function () { - if (typeof _window2['default'].Event !== 'object') { + if (typeof _globalWindow2['default'].Event !== 'object') { // Android 2.3 throws an Illegal Constructor error for window.Event try { - event = new _window2['default'].Event('change'); + event = new _globalWindow2['default'].Event('change'); } catch (err) {} } if (!event) { - event = _document2['default'].createEvent('Event'); + event = _globalDocument2['default'].createEvent('Event'); event.initEvent('change', true, true); } @@ -5737,8 +5608,6 @@ var TextTrackMenuItem = (function (_MenuItem) { } } - _inherits(TextTrackMenuItem, _MenuItem); - /** * Handle click on text track * @@ -5746,24 +5615,24 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleClick = function handleClick(event) { - var kind = this.track.kind; + var kind = this.track['kind']; var tracks = this.player_.textTracks(); _MenuItem.prototype.handleClick.call(this, event); - if (!tracks) { - return; - }for (var i = 0; i < tracks.length; i++) { + if (!tracks) return; + + for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind !== kind) { + if (track['kind'] !== kind) { continue; } if (track === this.track) { - track.mode = 'showing'; + track['mode'] = 'showing'; } else { - track.mode = 'disabled'; + track['mode'] = 'disabled'; } } }; @@ -5775,41 +5644,43 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) { - this.selected(this.track.mode === 'showing'); + this.selected(this.track['mode'] === 'showing'); }; return TextTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); +_componentJs2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); exports['default'] = TextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113,"global/document":1,"global/window":2}],74:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109,"global/document":1,"global/window":2}],70:[function(_dereq_,module,exports){ /** * @file current-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the current time @@ -5821,6 +5692,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var CurrentTimeDisplay = (function (_Component) { + _inherits(CurrentTimeDisplay, _Component); + function CurrentTimeDisplay(player, options) { _classCallCheck(this, CurrentTimeDisplay); @@ -5829,8 +5702,6 @@ var CurrentTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(CurrentTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -5863,42 +5734,44 @@ var CurrentTimeDisplay = (function (_Component) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); var localizedText = this.localize('Current Time'); - var formattedTime = _formatTime2['default'](time, this.player_.duration()); + var formattedTime = _utilsFormatTimeJs2['default'](time, this.player_.duration()); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; }; return CurrentTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); +_componentJs2['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); exports['default'] = CurrentTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],75:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],71:[function(_dereq_,module,exports){ /** * @file duration-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the duration @@ -5910,6 +5783,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var DurationDisplay = (function (_Component) { + _inherits(DurationDisplay, _Component); + function DurationDisplay(player, options) { _classCallCheck(this, DurationDisplay); @@ -5924,8 +5799,6 @@ var DurationDisplay = (function (_Component) { this.on(player, 'loadedmetadata', this.updateContent); } - _inherits(DurationDisplay, _Component); - /** * Create the component's DOM element * @@ -5958,43 +5831,45 @@ var DurationDisplay = (function (_Component) { var duration = this.player_.duration(); if (duration) { var localizedText = this.localize('Duration Time'); - var formattedTime = _formatTime2['default'](duration); + var formattedTime = _utilsFormatTimeJs2['default'](duration); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; // label the duration time for screen reader users } }; return DurationDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('DurationDisplay', DurationDisplay); +_componentJs2['default'].registerComponent('DurationDisplay', DurationDisplay); exports['default'] = DurationDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],76:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],72:[function(_dereq_,module,exports){ /** * @file remaining-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the time left in the video @@ -6006,6 +5881,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var RemainingTimeDisplay = (function (_Component) { + _inherits(RemainingTimeDisplay, _Component); + function RemainingTimeDisplay(player, options) { _classCallCheck(this, RemainingTimeDisplay); @@ -6014,8 +5891,6 @@ var RemainingTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(RemainingTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -6047,7 +5922,7 @@ var RemainingTimeDisplay = (function (_Component) { RemainingTimeDisplay.prototype.updateContent = function updateContent() { if (this.player_.duration()) { var localizedText = this.localize('Remaining Time'); - var formattedTime = _formatTime2['default'](this.player_.remainingTime()); + var formattedTime = _utilsFormatTimeJs2['default'](this.player_.remainingTime()); this.contentEl_.innerHTML = '' + localizedText + ' -' + formattedTime; } @@ -6057,29 +5932,29 @@ var RemainingTimeDisplay = (function (_Component) { }; return RemainingTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); +_componentJs2['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); exports['default'] = RemainingTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],77:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],73:[function(_dereq_,module,exports){ /** * @file time-divider.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The separator between the current time and duration. @@ -6092,16 +5967,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var TimeDivider = (function (_Component) { + _inherits(TimeDivider, _Component); + function TimeDivider() { _classCallCheck(this, TimeDivider); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(TimeDivider, _Component); - /** * Create the component's DOM element * @@ -6117,43 +5990,45 @@ var TimeDivider = (function (_Component) { }; return TimeDivider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('TimeDivider', TimeDivider); +_componentJs2['default'].registerComponent('TimeDivider', TimeDivider); exports['default'] = TimeDivider; module.exports = exports['default']; -},{"../../component.js":52}],78:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],74:[function(_dereq_,module,exports){ /** * @file volume-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); + +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); // Required children -var _VolumeLevel = _dereq_('./volume-level.js'); +var _volumeLevelJs = _dereq_('./volume-level.js'); -var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); +var _volumeLevelJs2 = _interopRequireDefault(_volumeLevelJs); /** * The bar that contains the volume level and can be clicked on to adjust the level @@ -6165,6 +6040,8 @@ var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); */ var VolumeBar = (function (_Slider) { + _inherits(VolumeBar, _Slider); + function VolumeBar(player, options) { _classCallCheck(this, VolumeBar); @@ -6173,8 +6050,6 @@ var VolumeBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(VolumeBar, _Slider); - /** * Create the component's DOM element * @@ -6252,44 +6127,44 @@ var VolumeBar = (function (_Slider) { }; return VolumeBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); VolumeBar.prototype.options_ = { children: { - volumeLevel: {} + 'volumeLevel': {} }, - barName: 'volumeLevel' + 'barName': 'volumeLevel' }; VolumeBar.prototype.playerEvent = 'volumechange'; -_Component2['default'].registerComponent('VolumeBar', VolumeBar); +_componentJs2['default'].registerComponent('VolumeBar', VolumeBar); exports['default'] = VolumeBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"./volume-level.js":80}],79:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"./volume-level.js":76}],75:[function(_dereq_,module,exports){ /** * @file volume-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _VolumeBar = _dereq_('./volume-bar.js'); +var _volumeBarJs = _dereq_('./volume-bar.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _volumeBarJs2 = _interopRequireDefault(_volumeBarJs); /** * The component for controlling the volume level @@ -6301,17 +6176,19 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeControl = (function (_Component) { + _inherits(VolumeControl, _Component); + function VolumeControl(player, options) { _classCallCheck(this, VolumeControl); _Component.call(this, player, options); // hide volume controls when they're not supported by the current tech - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6319,8 +6196,6 @@ var VolumeControl = (function (_Component) { }); } - _inherits(VolumeControl, _Component); - /** * Create the component's DOM element * @@ -6335,35 +6210,35 @@ var VolumeControl = (function (_Component) { }; return VolumeControl; -})(_Component3['default']); +})(_componentJs2['default']); VolumeControl.prototype.options_ = { children: { - volumeBar: {} + 'volumeBar': {} } }; -_Component3['default'].registerComponent('VolumeControl', VolumeControl); +_componentJs2['default'].registerComponent('VolumeControl', VolumeControl); exports['default'] = VolumeControl; module.exports = exports['default']; -},{"../../component.js":52,"./volume-bar.js":78}],80:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./volume-bar.js":74}],76:[function(_dereq_,module,exports){ /** * @file volume-level.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Shows volume level @@ -6375,16 +6250,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var VolumeLevel = (function (_Component) { + _inherits(VolumeLevel, _Component); + function VolumeLevel() { _classCallCheck(this, VolumeLevel); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(VolumeLevel, _Component); - /** * Create the component's DOM element * @@ -6400,49 +6273,49 @@ var VolumeLevel = (function (_Component) { }; return VolumeLevel; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('VolumeLevel', VolumeLevel); +_componentJs2['default'].registerComponent('VolumeLevel', VolumeLevel); exports['default'] = VolumeLevel; module.exports = exports['default']; -},{"../../component.js":52}],81:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],77:[function(_dereq_,module,exports){ /** * @file volume-menu-button.js */ +'use strict'; -var _Button = _dereq_('../button.js'); +exports.__esModule = true; -var _Button2 = _interopRequireWildcard(_Button); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu = _dereq_('../menu/menu.js'); +var _buttonJs = _dereq_('../button.js'); -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var _MenuButton2 = _dereq_('../menu/menu-button.js'); +var _componentJs = _dereq_('../component.js'); -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _VolumeBar = _dereq_('./volume-control/volume-bar.js'); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); + +var _muteToggleJs = _dereq_('./mute-toggle.js'); + +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); + +var _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js'); + +var _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs); /** * Button for volume menu @@ -6454,8 +6327,10 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeMenuButton = (function (_MenuButton) { + _inherits(VolumeMenuButton, _MenuButton); + function VolumeMenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, VolumeMenuButton); @@ -6482,11 +6357,11 @@ var VolumeMenuButton = (function (_MenuButton) { this.on(player, 'loadstart', this.volumeUpdate); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6495,8 +6370,6 @@ var VolumeMenuButton = (function (_MenuButton) { this.addClass('vjs-menu-button'); } - _inherits(VolumeMenuButton, _MenuButton); - /** * Allow sub components to stack CSS class names * @@ -6523,11 +6396,11 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_, { + var menu = new _menuMenuJs2['default'](this.player_, { contentElType: 'div' }); - var vc = new _VolumeBar2['default'](this.player_, this.options_.volumeBar); + var vc = new _volumeControlVolumeBarJs2['default'](this.player_, this.options_.volumeBar); vc.on('focus', function () { menu.lockShowing(); @@ -6546,41 +6419,43 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.handleClick = function handleClick() { - _MuteToggle2['default'].prototype.handleClick.call(this); + _muteToggleJs2['default'].prototype.handleClick.call(this); _MenuButton.prototype.handleClick.call(this); }; return VolumeMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -VolumeMenuButton.prototype.volumeUpdate = _MuteToggle2['default'].prototype.update; +VolumeMenuButton.prototype.volumeUpdate = _muteToggleJs2['default'].prototype.update; VolumeMenuButton.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); +_componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); exports['default'] = VolumeMenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../menu/menu-button.js":88,"../menu/menu.js":90,"./mute-toggle.js":56,"./volume-control/volume-bar.js":78}],82:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../menu/menu-button.js":84,"../menu/menu.js":86,"./mute-toggle.js":52,"./volume-control/volume-bar.js":74}],78:[function(_dereq_,module,exports){ /** * @file error-display.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Display that an error has occurred making the video unplayable @@ -6592,6 +6467,8 @@ var Dom = _interopRequireWildcard(_import); */ var ErrorDisplay = (function (_Component) { + _inherits(ErrorDisplay, _Component); + function ErrorDisplay(player, options) { _classCallCheck(this, ErrorDisplay); @@ -6601,8 +6478,6 @@ var ErrorDisplay = (function (_Component) { this.on(player, 'error', this.update); } - _inherits(ErrorDisplay, _Component); - /** * Create the component's DOM element * @@ -6634,25 +6509,25 @@ var ErrorDisplay = (function (_Component) { }; return ErrorDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('ErrorDisplay', ErrorDisplay); +_component2['default'].registerComponent('ErrorDisplay', ErrorDisplay); exports['default'] = ErrorDisplay; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111}],83:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107}],79:[function(_dereq_,module,exports){ /** * @file event-target.js */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +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; } } + +var _utilsEventsJs = _dereq_('./utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); var EventTarget = function EventTarget() {}; @@ -6699,16 +6574,16 @@ EventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger; exports['default'] = EventTarget; module.exports = exports['default']; -},{"./utils/events.js":112}],84:[function(_dereq_,module,exports){ +},{"./utils/events.js":108}],80:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./utils/log'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _utilsLog = _dereq_('./utils/log'); + +var _utilsLog2 = _interopRequireDefault(_utilsLog); /* * @file extends.js @@ -6755,7 +6630,7 @@ var _inherits = function _inherits(subClass, superClass) { * ``` */ var extendsFn = function extendsFn(superClass) { - var subClassMethods = arguments[1] === undefined ? {} : arguments[1]; + var subClassMethods = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var subClass = function subClass() { superClass.apply(this, arguments); @@ -6764,7 +6639,7 @@ var extendsFn = function extendsFn(superClass) { if (typeof subClassMethods === 'object') { if (typeof subClassMethods.init === 'function') { - _log2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); + _utilsLog2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); subClassMethods.constructor = subClassMethods.init; } if (subClassMethods.constructor !== Object.prototype.constructor) { @@ -6790,19 +6665,19 @@ var extendsFn = function extendsFn(superClass) { exports['default'] = extendsFn; module.exports = exports['default']; -},{"./utils/log":116}],85:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./utils/log":112}],81:[function(_dereq_,module,exports){ /** * @file fullscreen-api.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * Store the browser-specific methods for the fullscreen API @@ -6831,7 +6706,7 @@ var browserApi = undefined; // determine the supported set of functions for (var i = 0; i < apiMap.length; i++) { // check for exitFullscreen function - if (apiMap[i][1] in _document2['default']) { + if (apiMap[i][1] in _globalDocument2['default']) { browserApi = apiMap[i]; break; } @@ -6847,23 +6722,23 @@ if (browserApi) { exports['default'] = FullscreenApi; module.exports = exports['default']; -},{"global/document":1}],86:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"global/document":1}],82:[function(_dereq_,module,exports){ /** * @file loading-spinner.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); /* Loading Spinner ================================================================================ */ @@ -6875,16 +6750,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var LoadingSpinner = (function (_Component) { + _inherits(LoadingSpinner, _Component); + function LoadingSpinner() { _classCallCheck(this, LoadingSpinner); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LoadingSpinner, _Component); - /** * Create the component's DOM element * @@ -6898,42 +6771,32 @@ var LoadingSpinner = (function (_Component) { }; return LoadingSpinner; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LoadingSpinner', LoadingSpinner); +_component2['default'].registerComponent('LoadingSpinner', LoadingSpinner); exports['default'] = LoadingSpinner; module.exports = exports['default']; -},{"./component":52}],87:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48}],83:[function(_dereq_,module,exports){ /** * @file media-error.js */ +'use strict'; -var _assign = _dereq_('object.assign'); +exports.__esModule = true; -var _assign2 = _interopRequireWildcard(_assign); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /* * Custom MediaError to mimic the HTML5 MediaError * * @param {Number} code The media error code */ -var MediaError = (function (_MediaError) { - function MediaError(_x) { - return _MediaError.apply(this, arguments); - } - - MediaError.toString = function () { - return _MediaError.toString(); - }; - - return MediaError; -})(function (code) { +var MediaError = function MediaError(code) { if (typeof code === 'number') { this.code = code; } else if (typeof code === 'string') { @@ -6941,13 +6804,13 @@ var MediaError = (function (_MediaError) { this.message = code; } else if (typeof code === 'object') { // object - _assign2['default'](this, code); + _objectAssign2['default'](this, code); } if (!this.message) { this.message = MediaError.defaultMessages[this.code] || ''; } -}); +}; /* * The error code that refers two one of the defined @@ -7005,43 +6868,45 @@ for (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) { exports['default'] = MediaError; module.exports = exports['default']; -},{"object.assign":44}],88:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"object.assign":40}],84:[function(_dereq_,module,exports){ /** * @file menu-button.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Menu = _dereq_('./menu.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs = _dereq_('../button.js'); -var _import = _dereq_('../utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import); +var _componentJs = _dereq_('../component.js'); -var _import2 = _dereq_('../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import2); +var _menuJs = _dereq_('./menu.js'); -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _menuJs2 = _interopRequireDefault(_menuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * A button class with a popup menu @@ -7053,8 +6918,10 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MenuButton = (function (_Button) { + _inherits(MenuButton, _Button); + function MenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, MenuButton); @@ -7067,8 +6934,6 @@ var MenuButton = (function (_Button) { this.el_.setAttribute('role', 'button'); } - _inherits(MenuButton, _Button); - /** * Update menu * @@ -7108,18 +6973,18 @@ var MenuButton = (function (_Button) { */ MenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_); + var menu = new _menuJs2['default'](this.player_); // Add a title list item to the top if (this.options_.title) { menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.options_.title), + innerHTML: _utilsToTitleCaseJs2['default'](this.options_.title), tabIndex: -1 })); } - this.items = this.createItems(); + this.items = this['createItems'](); if (this.items) { // Add menu items to the menu @@ -7236,11 +7101,11 @@ var MenuButton = (function (_Button) { event.preventDefault(); // Check for escape (27) key } else if (event.which === 27) { - if (this.buttonPressed_) { - this.unpressButton(); + if (this.buttonPressed_) { + this.unpressButton(); + } + event.preventDefault(); } - event.preventDefault(); - } }; /** @@ -7271,37 +7136,37 @@ var MenuButton = (function (_Button) { }; return MenuButton; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuButton', MenuButton); +_componentJs2['default'].registerComponent('MenuButton', MenuButton); exports['default'] = MenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/to-title-case.js":120,"./menu.js":90}],89:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/to-title-case.js":116,"./menu.js":86}],85:[function(_dereq_,module,exports){ /** * @file menu-item.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _assign = _dereq_('object.assign'); +var _buttonJs = _dereq_('../button.js'); -var _assign2 = _interopRequireWildcard(_assign); +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The component for a menu item. `

  • ` @@ -7313,15 +7178,15 @@ var _assign2 = _interopRequireWildcard(_assign); */ var MenuItem = (function (_Button) { + _inherits(MenuItem, _Button); + function MenuItem(player, options) { _classCallCheck(this, MenuItem); _Button.call(this, player, options); - this.selected(options.selected); + this.selected(options['selected']); } - _inherits(MenuItem, _Button); - /** * Create the component's DOM element * @@ -7332,9 +7197,9 @@ var MenuItem = (function (_Button) { */ MenuItem.prototype.createEl = function createEl(type, props) { - return _Button.prototype.createEl.call(this, 'li', _assign2['default']({ + return _Button.prototype.createEl.call(this, 'li', _objectAssign2['default']({ className: 'vjs-menu-item', - innerHTML: this.localize(this.options_.label) + innerHTML: this.localize(this.options_['label']) }, props)); }; @@ -7355,62 +7220,54 @@ var MenuItem = (function (_Button) { * @method selected */ - MenuItem.prototype.selected = (function (_selected) { - function selected(_x) { - return _selected.apply(this, arguments); - } - - selected.toString = function () { - return _selected.toString(); - }; - - return selected; - })(function (selected) { - if (selected) { + MenuItem.prototype.selected = function selected(_selected) { + if (_selected) { this.addClass('vjs-selected'); this.el_.setAttribute('aria-selected', true); } else { this.removeClass('vjs-selected'); this.el_.setAttribute('aria-selected', false); } - }); + }; return MenuItem; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuItem', MenuItem); +_componentJs2['default'].registerComponent('MenuItem', MenuItem); exports['default'] = MenuItem; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"object.assign":44}],90:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"object.assign":40}],86:[function(_dereq_,module,exports){ /** * @file menu.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('../component.js'); -var _import3 = _dereq_('../utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsEventsJs = _dereq_('../utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); /** * The Menu component is used to build pop up menus, including subtitle and @@ -7421,16 +7278,14 @@ var Events = _interopRequireWildcard(_import3); */ var Menu = (function (_Component) { + _inherits(Menu, _Component); + function Menu() { _classCallCheck(this, Menu); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Menu, _Component); - /** * Add a menu item to the menu * @@ -7474,138 +7329,140 @@ var Menu = (function (_Component) { }; return Menu; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Menu', Menu); +_componentJs2['default'].registerComponent('Menu', Menu); exports['default'] = Menu; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"../utils/events.js":112,"../utils/fn.js":113}],91:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"../utils/events.js":108,"../utils/fn.js":109}],87:[function(_dereq_,module,exports){ /** * @file player.js */ // Subclasses Component +'use strict'; -var _Component2 = _dereq_('./component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window = _dereq_('global/window'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('./component.js'); -var _import = _dereq_('./utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/dom.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var Dom = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/fn.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Fn = _interopRequireWildcard(_import3); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _import4 = _dereq_('./utils/guid.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var Guid = _interopRequireWildcard(_import4); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import5 = _dereq_('./utils/browser.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var browser = _interopRequireWildcard(_import5); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _bufferedPercent2 = _dereq_('./utils/buffer.js'); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import6 = _dereq_('./utils/stylesheet.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var stylesheet = _interopRequireWildcard(_import6); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); -var _FullscreenApi = _dereq_('./fullscreen-api.js'); +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); -var _FullscreenApi2 = _interopRequireWildcard(_FullscreenApi); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _MediaError = _dereq_('./media-error.js'); +var _utilsBufferJs = _dereq_('./utils/buffer.js'); -var _MediaError2 = _interopRequireWildcard(_MediaError); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _fullscreenApiJs = _dereq_('./fullscreen-api.js'); -var _assign = _dereq_('object.assign'); +var _fullscreenApiJs2 = _interopRequireDefault(_fullscreenApiJs); -var _assign2 = _interopRequireWildcard(_assign); +var _mediaErrorJs = _dereq_('./media-error.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); -var _textTrackConverter = _dereq_('./tracks/text-track-list-converter.js'); +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); -var _textTrackConverter2 = _interopRequireWildcard(_textTrackConverter); +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _tracksTextTrackListConverterJs = _dereq_('./tracks/text-track-list-converter.js'); + +var _tracksTextTrackListConverterJs2 = _interopRequireDefault(_tracksTextTrackListConverterJs); // Include required child components (importing also registers them) -var _MediaLoader = _dereq_('./tech/loader.js'); +var _techLoaderJs = _dereq_('./tech/loader.js'); -var _MediaLoader2 = _interopRequireWildcard(_MediaLoader); +var _techLoaderJs2 = _interopRequireDefault(_techLoaderJs); -var _PosterImage = _dereq_('./poster-image.js'); +var _posterImageJs = _dereq_('./poster-image.js'); -var _PosterImage2 = _interopRequireWildcard(_PosterImage); +var _posterImageJs2 = _interopRequireDefault(_posterImageJs); -var _TextTrackDisplay = _dereq_('./tracks/text-track-display.js'); +var _tracksTextTrackDisplayJs = _dereq_('./tracks/text-track-display.js'); -var _TextTrackDisplay2 = _interopRequireWildcard(_TextTrackDisplay); +var _tracksTextTrackDisplayJs2 = _interopRequireDefault(_tracksTextTrackDisplayJs); -var _LoadingSpinner = _dereq_('./loading-spinner.js'); +var _loadingSpinnerJs = _dereq_('./loading-spinner.js'); -var _LoadingSpinner2 = _interopRequireWildcard(_LoadingSpinner); +var _loadingSpinnerJs2 = _interopRequireDefault(_loadingSpinnerJs); -var _BigPlayButton = _dereq_('./big-play-button.js'); +var _bigPlayButtonJs = _dereq_('./big-play-button.js'); -var _BigPlayButton2 = _interopRequireWildcard(_BigPlayButton); +var _bigPlayButtonJs2 = _interopRequireDefault(_bigPlayButtonJs); -var _ControlBar = _dereq_('./control-bar/control-bar.js'); +var _controlBarControlBarJs = _dereq_('./control-bar/control-bar.js'); -var _ControlBar2 = _interopRequireWildcard(_ControlBar); +var _controlBarControlBarJs2 = _interopRequireDefault(_controlBarControlBarJs); -var _ErrorDisplay = _dereq_('./error-display.js'); +var _errorDisplayJs = _dereq_('./error-display.js'); -var _ErrorDisplay2 = _interopRequireWildcard(_ErrorDisplay); +var _errorDisplayJs2 = _interopRequireDefault(_errorDisplayJs); -var _TextTrackSettings = _dereq_('./tracks/text-track-settings.js'); +var _tracksTextTrackSettingsJs = _dereq_('./tracks/text-track-settings.js'); -var _TextTrackSettings2 = _interopRequireWildcard(_TextTrackSettings); +var _tracksTextTrackSettingsJs2 = _interopRequireDefault(_tracksTextTrackSettingsJs); // Require html5 tech, at least for disposing the original video tag -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); /** * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video. @@ -7628,6 +7485,7 @@ var _Html52 = _interopRequireWildcard(_Html5); */ var Player = (function (_Component) { + _inherits(Player, _Component); /** * player's constructor function @@ -7652,7 +7510,7 @@ var Player = (function (_Component) { // which overrides globally set options. // This latter part coincides with the load order // (tag must exist before Player) - options = _assign2['default'](Player.getTagSettings(tag), options); + options = _objectAssign2['default'](Player.getTagSettings(tag), options); // Delay the initialization of children because we need to set up // player properties first, and can't use `this` before `super()` @@ -7725,7 +7583,7 @@ var Player = (function (_Component) { // as well so they don't need to reach back into the player for options later. // We also need to do another copy of this.options_ so we don't end up with // an infinite loop. - var playerOptionsCopy = _mergeOptions2['default'](this.options_); + var playerOptionsCopy = _utilsMergeOptionsJs2['default'](this.options_); // Load plugins if (options.plugins) { @@ -7733,11 +7591,10 @@ var Player = (function (_Component) { var plugins = options.plugins; Object.getOwnPropertyNames(plugins).forEach(function (name) { - plugins[name].playerOptions = playerOptionsCopy; if (typeof this[name] === 'function') { this[name](plugins[name]); } else { - _log2['default'].error('Unable to find plugin:', name); + _utilsLogJs2['default'].error('Unable to find plugin:', name); } }, _this); })(); @@ -7785,7 +7642,11 @@ var Player = (function (_Component) { this.on('stageclick', this.handleStageClick); } - _inherits(Player, _Component); + /* + * Global player list + * + * @type {Object} + */ /** * Destroys the video player and does any necessary cleanup @@ -7867,8 +7728,8 @@ var Player = (function (_Component) { // of the player in a way that's still overrideable by CSS, just like the // video element this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions'); - var defaultsStyleEl = _document2['default'].querySelector('.vjs-styles-defaults'); - var head = _document2['default'].querySelector('head'); + var defaultsStyleEl = _globalDocument2['default'].querySelector('.vjs-styles-defaults'); + var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild); // Pass in the width/height/aspectRatio options which will update the style el @@ -7925,18 +7786,8 @@ var Player = (function (_Component) { * @method dimension */ - Player.prototype.dimension = (function (_dimension) { - function dimension(_x, _x2) { - return _dimension.apply(this, arguments); - } - - dimension.toString = function () { - return _dimension.toString(); - }; - - return dimension; - })(function (dimension, value) { - var privDimension = dimension + '_'; + Player.prototype.dimension = function dimension(_dimension, value) { + var privDimension = _dimension + '_'; if (value === undefined) { return this[privDimension] || 0; @@ -7949,7 +7800,7 @@ var Player = (function (_Component) { var parsedVal = parseFloat(value); if (isNaN(parsedVal)) { - _log2['default'].error('Improper value "' + value + '" supplied for for ' + dimension); + _utilsLogJs2['default'].error('Improper value "' + value + '" supplied for for ' + _dimension); return this; } @@ -7958,7 +7809,7 @@ var Player = (function (_Component) { this.updateStyleEl_(); return this; - }); + }; /** * Add/remove the vjs-fluid class @@ -8080,7 +7931,7 @@ var Player = (function (_Component) { // get rid of the HTML5 video tag as soon as we are using another tech if (techName !== 'Html5' && this.tag) { - _Component3['default'].getComponent('Html5').disposeMediaElement(this.tag); + _componentJs2['default'].getComponent('Html5').disposeMediaElement(this.tag); this.tag.player = null; this.tag = null; } @@ -8095,17 +7946,18 @@ var Player = (function (_Component) { }); // Grab tech-specific options from player options and add source and parent element to use. - var techOptions = _assign2['default']({ - source: source, - playerId: this.id(), - techId: '' + this.id() + '_' + techName + '_api', - textTracks: this.textTracks_, - autoplay: this.options_.autoplay, - preload: this.options_.preload, - loop: this.options_.loop, - muted: this.options_.muted, - poster: this.poster(), - language: this.language(), + var techOptions = _objectAssign2['default']({ + 'nativeControlsForTouch': this.options_.nativeControlsForTouch, + 'source': source, + 'playerId': this.id(), + 'techId': this.id() + '_' + techName + '_api', + 'textTracks': this.textTracks_, + 'autoplay': this.options_.autoplay, + 'preload': this.options_.preload, + 'loop': this.options_.loop, + 'muted': this.options_.muted, + 'poster': this.poster(), + 'language': this.language(), 'vtt.js': this.options_['vtt.js'] }, this.options_[techName.toLowerCase()]); @@ -8123,13 +7975,12 @@ var Player = (function (_Component) { } // Initialize tech instance - var techComponent = _Component3['default'].getComponent(techName); + var techComponent = _componentJs2['default'].getComponent(techName); this.tech = new techComponent(techOptions); - _textTrackConverter2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); + _tracksTextTrackListConverterJs2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); this.on(this.tech, 'ready', this.handleTechReady); - this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls); // Listen to every HTML5 events and trigger them back on the player for the plugins this.on(this.tech, 'loadstart', this.handleTechLoadStart); @@ -8159,6 +8010,8 @@ var Player = (function (_Component) { this.on(this.tech, 'texttrackchange', this.onTextTrackChange); this.on(this.tech, 'loadedmetadata', this.updateStyleEl_); + this.usingNativeControls(this.techGet('controls')); + if (this.controls() && !this.usingNativeControls()) { this.addTechControlsListeners(); } @@ -8188,7 +8041,7 @@ var Player = (function (_Component) { Player.prototype.unloadTech = function unloadTech() { // Save the current text tracks so that we can reuse the same text tracks with the next tech this.textTracks_ = this.textTracks(); - this.textTracksJson_ = _textTrackConverter2['default'].textTracksToJson(this); + this.textTracksJson_ = _tracksTextTrackListConverterJs2['default'].textTracksToJson(this); this.isReady_ = false; @@ -8204,6 +8057,9 @@ var Player = (function (_Component) { */ Player.prototype.addTechControlsListeners = function addTechControlsListeners() { + // Make sure to remove all the previous listeners in case we are called multiple times. + this.removeTechControlsListeners(); + // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do // trigger mousedown/up. // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object @@ -8264,17 +8120,6 @@ var Player = (function (_Component) { } }; - /** - * Fired when the native controls are used - * - * @private - * @method handleTechUseNativeControls - */ - - Player.prototype.handleTechUseNativeControls = function handleTechUseNativeControls() { - this.usingNativeControls(true); - }; - /** * Fired when the user agent begins looking for media data * @@ -8310,22 +8155,12 @@ var Player = (function (_Component) { * @method hasStarted */ - Player.prototype.hasStarted = (function (_hasStarted) { - function hasStarted(_x3) { - return _hasStarted.apply(this, arguments); - } - - hasStarted.toString = function () { - return _hasStarted.toString(); - }; - - return hasStarted; - })(function (hasStarted) { - if (hasStarted !== undefined) { + Player.prototype.hasStarted = function hasStarted(_hasStarted) { + if (_hasStarted !== undefined) { // only update if this is a new value - if (this.hasStarted_ !== hasStarted) { - this.hasStarted_ = hasStarted; - if (hasStarted) { + if (this.hasStarted_ !== _hasStarted) { + this.hasStarted_ = _hasStarted; + if (_hasStarted) { this.addClass('vjs-has-started'); // trigger the firstplay event if this newly has played this.trigger('firstplay'); @@ -8336,7 +8171,7 @@ var Player = (function (_Component) { return this; } return !!this.hasStarted_; - }); + }; /** * Fired whenever the media begins or resumes playback @@ -8511,9 +8346,9 @@ var Player = (function (_Component) { Player.prototype.handleTechClick = function handleTechClick(event) { // We're using mousedown to detect clicks thanks to Flash, but mousedown // will also be triggered with right-clicks, so we need to prevent that - if (event.button !== 0) { - return; - } // When controls are disabled a click should not toggle playback because + if (event.button !== 0) return; + + // When controls are disabled a click should not toggle playback because // the click is considered a control if (this.controls()) { if (this.paused()) { @@ -8640,7 +8475,8 @@ var Player = (function (_Component) { */ Player.prototype.handleTechError = function handleTechError() { - this.error(this.tech.error().code); + var error = this.tech.error(); + this.error(error && error.code); }; /** @@ -8771,13 +8607,13 @@ var Player = (function (_Component) { // Otherwise call method now } else { - try { - this.tech[method](arg); - } catch (e) { - _log2['default'](e); - throw e; + try { + this.tech[method](arg); + } catch (e) { + _utilsLogJs2['default'](e); + throw e; + } } - } }; /** @@ -8799,14 +8635,14 @@ var Player = (function (_Component) { } catch (e) { // When building additional tech libs, an expected method may not be defined yet if (this.tech[method] === undefined) { - _log2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); } else { // When a method isn't available on the object it throws a TypeError if (e.name === 'TypeError') { - _log2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); this.tech.isReady_ = false; } else { - _log2['default'](e); + _utilsLogJs2['default'](e); } } throw e; @@ -8988,25 +8824,15 @@ var Player = (function (_Component) { * @method buffered */ - Player.prototype.buffered = (function (_buffered) { - function buffered() { - return _buffered.apply(this, arguments); - } - - buffered.toString = function () { - return _buffered.toString(); - }; - - return buffered; - })(function () { + Player.prototype.buffered = function buffered() { var buffered = this.techGet('buffered'); if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _utilsTimeRangesJs.createTimeRange(0, 0); } return buffered; - }); + }; /** * Get the percent (as a decimal) of the video that's been downloaded @@ -9020,19 +8846,9 @@ var Player = (function (_Component) { * @method bufferedPercent */ - Player.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration()); - }); + Player.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration()); + }; /** * Get the ending time of the last buffered time range @@ -9101,23 +8917,13 @@ var Player = (function (_Component) { * @method muted */ - Player.prototype.muted = (function (_muted) { - function muted(_x4) { - return _muted.apply(this, arguments); - } - - muted.toString = function () { - return _muted.toString(); - }; - - return muted; - })(function (muted) { - if (muted !== undefined) { - this.techCall('setMuted', muted); + Player.prototype.muted = function muted(_muted) { + if (_muted !== undefined) { + this.techCall('setMuted', _muted); return this; } return this.techGet('muted') || false; // Default to false - }); + }; // Check if current tech can support native fullscreen // (e.g. with built in controls like iOS, so not our flash swf) @@ -9175,7 +8981,7 @@ var Player = (function (_Component) { */ Player.prototype.requestFullscreen = function requestFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(true); @@ -9188,12 +8994,12 @@ var Player = (function (_Component) { // when canceling fullscreen. Otherwise if there's multiple // players on a page, they would all be reacting to the same fullscreen // events - Events.on(_document2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { - this.isFullscreen(_document2['default'][fsApi.fullscreenElement]); + Events.on(_globalDocument2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { + this.isFullscreen(_globalDocument2['default'][fsApi.fullscreenElement]); // If cancelling fullscreen, remove event listener. if (this.isFullscreen() === false) { - Events.off(_document2['default'], fsApi.fullscreenchange, documentFullscreenChange); + Events.off(_globalDocument2['default'], fsApi.fullscreenchange, documentFullscreenChange); } this.trigger('fullscreenchange'); @@ -9225,12 +9031,12 @@ var Player = (function (_Component) { */ Player.prototype.exitFullscreen = function exitFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(false); // Check for browser element fullscreen support if (fsApi.requestFullscreen) { - _document2['default'][fsApi.exitFullscreen](); + _globalDocument2['default'][fsApi.exitFullscreen](); } else if (this.tech.supportsFullScreen()) { this.techCall('exitFullScreen'); } else { @@ -9251,16 +9057,16 @@ var Player = (function (_Component) { this.isFullWindow = true; // Storing original doc overflow value to return to when fullscreen is off - this.docOrigOverflow = _document2['default'].documentElement.style.overflow; + this.docOrigOverflow = _globalDocument2['default'].documentElement.style.overflow; // Add listener for esc key to exit fullscreen - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); // Hide any scroll bars - _document2['default'].documentElement.style.overflow = 'hidden'; + _globalDocument2['default'].documentElement.style.overflow = 'hidden'; // Apply fullscreen styles - Dom.addElClass(_document2['default'].body, 'vjs-full-window'); + Dom.addElClass(_globalDocument2['default'].body, 'vjs-full-window'); this.trigger('enterFullWindow'); }; @@ -9290,13 +9096,13 @@ var Player = (function (_Component) { Player.prototype.exitFullWindow = function exitFullWindow() { this.isFullWindow = false; - Events.off(_document2['default'], 'keydown', this.fullWindowOnEscKey); + Events.off(_globalDocument2['default'], 'keydown', this.fullWindowOnEscKey); // Unhide scroll bars. - _document2['default'].documentElement.style.overflow = this.docOrigOverflow; + _globalDocument2['default'].documentElement.style.overflow = this.docOrigOverflow; // Remove fullscreen styles - Dom.removeElClass(_document2['default'].body, 'vjs-full-window'); + Dom.removeElClass(_globalDocument2['default'].body, 'vjs-full-window'); // Resize the box, controller, and poster to original sizes // this.positionAll(); @@ -9314,12 +9120,12 @@ var Player = (function (_Component) { Player.prototype.selectSource = function selectSource(sources) { // Loop through each playback technology in the options order for (var i = 0, j = this.options_.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _componentJs2['default'].getComponent(techName); // Check if the current tech is defined before continuing if (!tech) { - _log2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); + _utilsLogJs2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); continue; } @@ -9378,7 +9184,7 @@ var Player = (function (_Component) { return this.techGet('src'); } - var currentTech = _Component3['default'].getComponent(this.techName); + var currentTech = _componentJs2['default'].getComponent(this.techName); // case: Array of source objects to choose from and pick the best to play if (Array.isArray(source)) { @@ -9386,46 +9192,46 @@ var Player = (function (_Component) { // case: URL String (http://myvideo...) } else if (typeof source === 'string') { - // create a source object from the string - this.src({ src: source }); + // create a source object from the string + this.src({ src: source }); - // case: Source object { src: '', type: '' ... } - } else if (source instanceof Object) { - // check if the source has a type and the loaded tech cannot play the source - // if there's no type we'll just try the current tech - if (source.type && !currentTech.canPlaySource(source)) { - // create a source list with the current source and send through - // the tech loop to check for a compatible technology - this.sourceList_([source]); - } else { - this.cache_.src = source.src; - this.currentType_ = source.type || ''; - - // wait until the tech is ready to set the source - this.ready(function () { - - // The setSource tech method was added with source handlers - // so older techs won't support it - // We need to check the direct prototype for the case where subclasses - // of the tech do not support source handlers - if (currentTech.prototype.hasOwnProperty('setSource')) { - this.techCall('setSource', source); + // case: Source object { src: '', type: '' ... } + } else if (source instanceof Object) { + // check if the source has a type and the loaded tech cannot play the source + // if there's no type we'll just try the current tech + if (source.type && !currentTech.canPlaySource(source)) { + // create a source list with the current source and send through + // the tech loop to check for a compatible technology + this.sourceList_([source]); } else { - this.techCall('src', source.src); - } + this.cache_.src = source.src; + this.currentType_ = source.type || ''; - if (this.options_.preload === 'auto') { - this.load(); - } + // wait until the tech is ready to set the source + this.ready(function () { - if (this.options_.autoplay) { - this.play(); - } + // The setSource tech method was added with source handlers + // so older techs won't support it + // We need to check the direct prototype for the case where subclasses + // of the tech do not support source handlers + if (currentTech.prototype.hasOwnProperty('setSource')) { + this.techCall('setSource', source); + } else { + this.techCall('src', source.src); + } - // Set the source synchronously if possible (#2326) - }, true); - } - } + if (this.options_.preload === 'auto') { + this.load(); + } + + if (this.options_.autoplay) { + this.play(); + } + + // Set the source synchronously if possible (#2326) + }, true); + } + } return this; }; @@ -9546,7 +9352,7 @@ var Player = (function (_Component) { Player.prototype.loop = function loop(value) { if (value !== undefined) { this.techCall('setLoop', value); - this.options_.loop = value; + this.options_['loop'] = value; return this; } return this.techGet('loop'); @@ -9705,10 +9511,10 @@ var Player = (function (_Component) { } // error instance - if (err instanceof _MediaError2['default']) { + if (err instanceof _mediaErrorJs2['default']) { this.error_ = err; } else { - this.error_ = new _MediaError2['default'](err); + this.error_ = new _mediaErrorJs2['default'](err); } // fire an error event on the player @@ -9719,7 +9525,7 @@ var Player = (function (_Component) { // log the name of the error type and any message // ie8 just logs "[object object]" if you just log the error object - _log2['default'].error('(CODE:' + this.error_.code + ' ' + _MediaError2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); + _utilsLogJs2['default'].error('(CODE:' + this.error_.code + ' ' + _mediaErrorJs2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); return this; }; @@ -9888,7 +9694,7 @@ var Player = (function (_Component) { // Clear any existing inactivity timeout to start the timer over this.clearTimeout(inactivityTimeout); - var timeout = this.options_.inactivityTimeout; + var timeout = this.options_['inactivityTimeout']; if (timeout > 0) { // In milliseconds, if no more activity has occurred the // user will be considered inactive @@ -9923,10 +9729,10 @@ var Player = (function (_Component) { return this; } - if (this.tech && this.tech.featuresPlaybackRate) { + if (this.tech && this.tech['featuresPlaybackRate']) { return this.techGet('playbackRate'); } else { - return 1; + return 1.0; } }; @@ -10021,7 +9827,7 @@ var Player = (function (_Component) { Player.prototype.textTracks = function textTracks() { // cannot use techGet directly because it checks to see whether the tech is ready. // Flash is unlikely to be ready in time but textTracks should still work. - return this.tech && this.tech.textTracks(); + return this.tech && this.tech['textTracks'](); }; /** @@ -10032,7 +9838,7 @@ var Player = (function (_Component) { */ Player.prototype.remoteTextTracks = function remoteTextTracks() { - return this.tech && this.tech.remoteTextTracks(); + return this.tech && this.tech['remoteTextTracks'](); }; /** @@ -10047,7 +9853,7 @@ var Player = (function (_Component) { */ Player.prototype.addTextTrack = function addTextTrack(kind, label, language) { - return this.tech && this.tech.addTextTrack(kind, label, language); + return this.tech && this.tech['addTextTrack'](kind, label, language); }; /** @@ -10058,7 +9864,7 @@ var Player = (function (_Component) { */ Player.prototype.addRemoteTextTrack = function addRemoteTextTrack(options) { - return this.tech && this.tech.addRemoteTextTrack(options); + return this.tech && this.tech['addRemoteTextTrack'](options); }; /** @@ -10069,7 +9875,7 @@ var Player = (function (_Component) { */ Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - this.tech && this.tech.removeRemoteTextTrack(track); + this.tech && this.tech['removeRemoteTextTrack'](track); }; /** @@ -10141,7 +9947,7 @@ var Player = (function (_Component) { */ Player.prototype.languages = function languages() { - return _mergeOptions2['default'](Player.prototype.options_.languages, this.languages_); + return _utilsMergeOptionsJs2['default'](Player.prototype.options_.languages, this.languages_); }; /** @@ -10152,7 +9958,7 @@ var Player = (function (_Component) { */ Player.prototype.toJSON = function toJSON() { - var options = _mergeOptions2['default'](this.options_); + var options = _utilsMergeOptionsJs2['default'](this.options_); var tracks = options.tracks; options.tracks = []; @@ -10161,7 +9967,7 @@ var Player = (function (_Component) { var track = tracks[i]; // deep merge tracks and null out player so no circular references - track = _mergeOptions2['default'](track); + track = _utilsMergeOptionsJs2['default'](track); track.player = undefined; options.tracks[i] = track; } @@ -10180,8 +9986,8 @@ var Player = (function (_Component) { Player.getTagSettings = function getTagSettings(tag) { var baseOptions = { - sources: [], - tracks: [] + 'sources': [], + 'tracks': [] }; var tagOptions = Dom.getElAttributes(tag); @@ -10190,20 +9996,19 @@ var Player = (function (_Component) { // Check if data-setup attr exists. if (dataSetup !== null) { // Parse options JSON - // If empty string, make it a parsable json object. - var _safeParseTuple = _safeParseTuple3['default'](dataSetup || '{}'); + var _safeParseTuple = _safeJsonParseTuple2['default'](dataSetup || '{}'); var err = _safeParseTuple[0]; var data = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } - _assign2['default'](tagOptions, data); + _objectAssign2['default'](tagOptions, data); } - _assign2['default'](baseOptions, tagOptions); + _objectAssign2['default'](baseOptions, tagOptions); // Get tag children settings if (tag.hasChildNodes()) { @@ -10225,16 +10030,11 @@ var Player = (function (_Component) { }; return Player; -})(_Component3['default']); +})(_componentJs2['default']); -/* - * Global player list - * - * @type {Object} - */ Player.players = {}; -var navigator = _window2['default'].navigator; +var navigator = _globalWindow2['default'].navigator; /* * Player instance options, surfaced using options * options = Player.prototype.options_ @@ -10252,7 +10052,7 @@ Player.prototype.options_ = { flash: {}, // defaultVolume: 0.85, - defaultVolume: 0, // The freakin seaguls are driving me crazy! + defaultVolume: 0.00, // The freakin seaguls are driving me crazy! // default inactivity timeout inactivityTimeout: 2000, @@ -10274,7 +10074,7 @@ Player.prototype.options_ = { textTrackSettings: {} }, - language: _document2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', + language: _globalDocument2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', // locales and their language translations languages: {}, @@ -10342,30 +10142,31 @@ Player.prototype.handleVolumeChange; Player.prototype.handleError; Player.prototype.flexNotSupported_ = function () { - var elem = _document2['default'].createElement('i'); + var elem = _globalDocument2['default'].createElement('i'); // Note: We don't actually use flexBasis (or flexOrder), but it's one of the more // common flex features that we can rely on when checking for flex support. - return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style /* IE10-specific (2012 flex spec) */); + return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style) /* IE10-specific (2012 flex spec) */; }; -_Component3['default'].registerComponent('Player', Player); +_componentJs2['default'].registerComponent('Player', Player); exports['default'] = Player; module.exports = exports['default']; +// If empty string, make it a parsable json object. -},{"./big-play-button.js":50,"./component.js":52,"./control-bar/control-bar.js":53,"./error-display.js":82,"./fullscreen-api.js":85,"./loading-spinner.js":86,"./media-error.js":87,"./poster-image.js":93,"./tech/html5.js":98,"./tech/loader.js":99,"./tracks/text-track-display.js":102,"./tracks/text-track-list-converter.js":104,"./tracks/text-track-settings.js":106,"./utils/browser.js":108,"./utils/buffer.js":109,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/to-title-case.js":120,"global/document":1,"global/window":2,"object.assign":44,"safe-json-parse/tuple":49}],92:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./big-play-button.js":46,"./component.js":48,"./control-bar/control-bar.js":49,"./error-display.js":78,"./fullscreen-api.js":81,"./loading-spinner.js":82,"./media-error.js":83,"./poster-image.js":89,"./tech/html5.js":94,"./tech/loader.js":95,"./tracks/text-track-display.js":98,"./tracks/text-track-list-converter.js":100,"./tracks/text-track-settings.js":102,"./utils/browser.js":104,"./utils/buffer.js":105,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/to-title-case.js":116,"global/document":1,"global/window":2,"object.assign":40,"safe-json-parse/tuple":45}],88:[function(_dereq_,module,exports){ /** * @file plugins.js */ +'use strict'; -var _Player = _dereq_('./player.js'); +exports.__esModule = true; -var _Player2 = _interopRequireWildcard(_Player); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _playerJs = _dereq_('./player.js'); + +var _playerJs2 = _interopRequireDefault(_playerJs); /** * The method for registering a video.js plugin @@ -10375,45 +10176,47 @@ var _Player2 = _interopRequireWildcard(_Player); * @method plugin */ var plugin = function plugin(name, init) { - _Player2['default'].prototype[name] = init; + _playerJs2['default'].prototype[name] = init; }; exports['default'] = plugin; module.exports = exports['default']; -},{"./player.js":91}],93:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./player.js":87}],89:[function(_dereq_,module,exports){ /** * @file poster-image.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('./component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('./utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _buttonJs = _dereq_('./button.js'); -var _import2 = _dereq_('./utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('./component.js'); -var _import3 = _dereq_('./utils/browser.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var browser = _interopRequireWildcard(_import3); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsBrowserJs = _dereq_('./utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); /** * The component that handles showing the poster image. @@ -10425,6 +10228,8 @@ var browser = _interopRequireWildcard(_import3); */ var PosterImage = (function (_Button) { + _inherits(PosterImage, _Button); + function PosterImage(player, options) { _classCallCheck(this, PosterImage); @@ -10434,8 +10239,6 @@ var PosterImage = (function (_Button) { player.on('posterchange', Fn.bind(this, this.update)); } - _inherits(PosterImage, _Button); - /** * Clean up the poster image * @@ -10533,36 +10336,38 @@ var PosterImage = (function (_Button) { }; return PosterImage; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('PosterImage', PosterImage); +_componentJs2['default'].registerComponent('PosterImage', PosterImage); exports['default'] = PosterImage; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52,"./utils/browser.js":108,"./utils/dom.js":111,"./utils/fn.js":113}],94:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48,"./utils/browser.js":104,"./utils/dom.js":107,"./utils/fn.js":109}],90:[function(_dereq_,module,exports){ /** * @file setup.js * * Functions for automatically setting up a player * based on the data-setup attribute of the video tag */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _window = _dereq_('global/window'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var _windowLoaded = false; var videojs = undefined; @@ -10576,8 +10381,8 @@ var autoSetup = function autoSetup() { // Because IE8 doesn't support calling slice on a node list, we need to loop through each list of elements // to build up a new, combined list of elements. - var vids = _document2['default'].getElementsByTagName('video'); - var audios = _document2['default'].getElementsByTagName('audio'); + var vids = _globalDocument2['default'].getElementsByTagName('video'); + var audios = _globalDocument2['default'].getElementsByTagName('audio'); var mediaEls = []; if (vids && vids.length > 0) { for (var i = 0, e = vids.length; i < e; i++) { @@ -10601,7 +10406,7 @@ var autoSetup = function autoSetup() { if (mediaEl && mediaEl.getAttribute) { // Make sure this player hasn't already been set up. - if (mediaEl.player === undefined) { + if (mediaEl['player'] === undefined) { var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists. @@ -10614,15 +10419,15 @@ var autoSetup = function autoSetup() { // If getAttribute isn't defined, we need to wait for the DOM. } else { - autoSetupTimeout(1); - break; - } + autoSetupTimeout(1); + break; + } } // No videos were found, so keep looping unless page is finished loading. } else if (!_windowLoaded) { - autoSetupTimeout(1); - } + autoSetupTimeout(1); + } }; // Pause to let the DOM keep processing @@ -10631,10 +10436,10 @@ var autoSetupTimeout = function autoSetupTimeout(wait, vjs) { setTimeout(autoSetup, wait); }; -if (_document2['default'].readyState === 'complete') { +if (_globalDocument2['default'].readyState === 'complete') { _windowLoaded = true; } else { - Events.one(_window2['default'], 'load', function () { + Events.one(_globalWindow2['default'], 'load', function () { _windowLoaded = true; }); } @@ -10647,35 +10452,37 @@ exports.autoSetup = autoSetup; exports.autoSetupTimeout = autoSetupTimeout; exports.hasLoaded = hasLoaded; -},{"./utils/events.js":112,"global/document":1,"global/window":2}],95:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/events.js":108,"global/document":1,"global/window":2}],91:[function(_dereq_,module,exports){ /** * @file slider.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _document = _dereq_('global/document'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _document2 = _interopRequireWildcard(_document); +var _componentJs = _dereq_('../component.js'); -var _assign = _dereq_('object.assign'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The base functionality for sliders like the volume bar and seek bar @@ -10687,6 +10494,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Slider = (function (_Component) { + _inherits(Slider, _Component); + function Slider(player, options) { _classCallCheck(this, Slider); @@ -10708,8 +10517,6 @@ var Slider = (function (_Component) { this.on(player, this.playerEvent, this.update); } - _inherits(Slider, _Component); - /** * Create the component's DOM element * @@ -10720,12 +10527,12 @@ var Slider = (function (_Component) { */ Slider.prototype.createEl = function createEl(type) { - var props = arguments[1] === undefined ? {} : arguments[1]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add the slider element class to all sub classes props.className = props.className + ' vjs-slider'; - props = _assign2['default']({ - role: 'slider', + props = _objectAssign2['default']({ + 'role': 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, @@ -10747,10 +10554,10 @@ var Slider = (function (_Component) { Dom.blockTextSelection(); this.addClass('vjs-sliding'); - this.on(_document2['default'], 'mousemove', this.handleMouseMove); - this.on(_document2['default'], 'mouseup', this.handleMouseUp); - this.on(_document2['default'], 'touchmove', this.handleMouseMove); - this.on(_document2['default'], 'touchend', this.handleMouseUp); + this.on(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.on(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.handleMouseMove(event); }; @@ -10773,10 +10580,10 @@ var Slider = (function (_Component) { Dom.unblockTextSelection(); this.removeClass('vjs-sliding'); - this.off(_document2['default'], 'mousemove', this.handleMouseMove); - this.off(_document2['default'], 'mouseup', this.handleMouseUp); - this.off(_document2['default'], 'touchmove', this.handleMouseMove); - this.off(_document2['default'], 'touchend', this.handleMouseUp); + this.off(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.off(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.update(); }; @@ -10790,18 +10597,18 @@ var Slider = (function (_Component) { Slider.prototype.update = function update() { // In VolumeBar init we have a setTimeout for update that pops and update to the end of the // execution stack. The player is destroyed before then update will cause an error - if (!this.el_) { - return; - } // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. + if (!this.el_) return; + + // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. // On HTML5 browsers scrubbing is really smooth, but some flash players are slow, so we might want to utilize this later. // var progress = (this.player_.scrubbing()) ? this.player_.getCache().currentTime / this.player_.duration() : this.player_.currentTime() / this.player_.duration(); var progress = this.getPercent(); var bar = this.bar; // If there's no bar... - if (!bar) { - return; - } // Protect against no duration and other division issues + if (!bar) return; + + // Protect against no duration and other division issues if (typeof progress !== 'number' || progress !== progress || progress < 0 || progress === Infinity) { progress = 0; } @@ -10864,7 +10671,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleFocus = function handleFocus() { - this.on(_document2['default'], 'keydown', this.handleKeyPress); + this.on(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10893,7 +10700,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleBlur = function handleBlur() { - this.off(_document2['default'], 'keydown', this.handleKeyPress); + this.off(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10934,19 +10741,19 @@ var Slider = (function (_Component) { }; return Slider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Slider', Slider); +_componentJs2['default'].registerComponent('Slider', Slider); exports['default'] = Slider; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"global/document":1,"object.assign":44}],96:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"global/document":1,"object.assign":40}],92:[function(_dereq_,module,exports){ /** * @file flash-rtmp.js */ +'use strict'; + +exports.__esModule = true; function FlashRtmpDecorator(Flash) { Flash.streamingFormats = { 'rtmp/mp4': 'MP4', @@ -11027,8 +10834,8 @@ function FlashRtmpDecorator(Flash) { Flash.rtmpSourceHandler.handleSource = function (source, tech) { var srcParts = Flash.streamToParts(source.src); - tech.setRtmpConnection(srcParts.connection); - tech.setRtmpStream(srcParts.stream); + tech['setRtmpConnection'](srcParts.connection); + tech['setRtmpStream'](srcParts.stream); }; // Register the native source handler @@ -11040,16 +10847,7 @@ function FlashRtmpDecorator(Flash) { exports['default'] = FlashRtmpDecorator; module.exports = exports['default']; -},{}],97:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],93:[function(_dereq_,module,exports){ /** * @file flash.js * VideoJS-SWF - Custom Flash Player with HTML5-ish API @@ -11057,37 +10855,49 @@ exports.__esModule = true; * Not using setupTriggers. Using global onEvent func to distribute events */ -var _Tech2 = _dereq_('./tech'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _import = _dereq_('../utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('../utils/url.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Url = _interopRequireWildcard(_import2); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tech = _dereq_('./tech'); -var _FlashRtmpDecorator = _dereq_('./flash-rtmp'); +var _tech2 = _interopRequireDefault(_tech); -var _FlashRtmpDecorator2 = _interopRequireWildcard(_FlashRtmpDecorator); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _Component = _dereq_('../component'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var _window = _dereq_('global/window'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); -var _assign = _dereq_('object.assign'); +var _flashRtmp = _dereq_('./flash-rtmp'); -var _assign2 = _interopRequireWildcard(_assign); +var _flashRtmp2 = _interopRequireDefault(_flashRtmp); -var navigator = _window2['default'].navigator; +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var navigator = _globalWindow2['default'].navigator; /** * Flash Media Controller - Wrapper for fallback SWF API * @@ -11098,6 +10908,8 @@ var navigator = _window2['default'].navigator; */ var Flash = (function (_Tech) { + _inherits(Flash, _Tech); + function Flash(options, ready) { _classCallCheck(this, Flash); @@ -11124,18 +10936,18 @@ var Flash = (function (_Tech) { // A 4.x workflow we weren't able to solve for in 5.0 // because of the need to hard code these functions // into the swf for security reasons - _window2['default'].videojs = _window2['default'].videojs || {}; - _window2['default'].videojs.Flash = _window2['default'].videojs.Flash || {}; - _window2['default'].videojs.Flash.onReady = Flash.onReady; - _window2['default'].videojs.Flash.onEvent = Flash.onEvent; - _window2['default'].videojs.Flash.onError = Flash.onError; + _globalWindow2['default'].videojs = _globalWindow2['default'].videojs || {}; + _globalWindow2['default'].videojs.Flash = _globalWindow2['default'].videojs.Flash || {}; + _globalWindow2['default'].videojs.Flash.onReady = Flash.onReady; + _globalWindow2['default'].videojs.Flash.onEvent = Flash.onEvent; + _globalWindow2['default'].videojs.Flash.onError = Flash.onError; this.on('seeked', function () { this.lastSeekTarget_ = undefined; }); } - _inherits(Flash, _Tech); + // Create setters and getters for attributes /** * Create the component's DOM element @@ -11151,31 +10963,31 @@ var Flash = (function (_Tech) { var objId = options.techId; // Merge default flashvars with ones passed in to init - var flashVars = _assign2['default']({ + var flashVars = _objectAssign2['default']({ // SWF Callback Functions - readyFunction: 'videojs.Flash.onReady', - eventProxyFunction: 'videojs.Flash.onEvent', - errorEventProxyFunction: 'videojs.Flash.onError', + 'readyFunction': 'videojs.Flash.onReady', + 'eventProxyFunction': 'videojs.Flash.onEvent', + 'errorEventProxyFunction': 'videojs.Flash.onError', // Player Settings - autoplay: options.autoplay, - preload: options.preload, - loop: options.loop, - muted: options.muted + 'autoplay': options.autoplay, + 'preload': options.preload, + 'loop': options.loop, + 'muted': options.muted }, options.flashVars); // Merge default parames with ones passed in - var params = _assign2['default']({ - wmode: 'opaque', // Opaque is needed to overlay controls, but can affect playback performance - bgcolor: '#000000' // Using bgcolor prevents a white flash when the object is loading + var params = _objectAssign2['default']({ + 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance + 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading }, options.params); // Merge default attributes with ones passed in - var attributes = _assign2['default']({ - id: objId, - name: objId, // Both ID and Name needed or swf to identify itself + var attributes = _objectAssign2['default']({ + 'id': objId, + 'name': objId, // Both ID and Name needed or swf to identify itself 'class': 'vjs-tech' }, options.attributes); @@ -11192,6 +11004,9 @@ var Flash = (function (_Tech) { */ Flash.prototype.play = function play() { + if (this.ended()) { + this.setCurrentTime(0); + } this.el_.vjs_play(); }; @@ -11213,24 +11028,14 @@ var Flash = (function (_Tech) { * @method src */ - Flash.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Flash.prototype.src = function src(_src) { + if (_src === undefined) { return this.currentSrc(); } // Setting src through `src` not `setSrc` will be deprecated - return this.setSrc(src); - }); + return this.setSrc(_src); + }; /** * Set video @@ -11354,9 +11159,9 @@ var Flash = (function (_Tech) { Flash.prototype.seekable = function seekable() { var duration = this.duration(); if (duration === 0) { - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); } - return _createTimeRange.createTimeRange(0, duration); + return _utilsTimeRangesJs.createTimeRange(0, duration); }; /** @@ -11367,7 +11172,11 @@ var Flash = (function (_Tech) { */ Flash.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, this.el_.vjs_getProperty('buffered')); + var ranges = this.el_.vjs_getProperty('buffered'); + if (ranges.length === 0) { + return _utilsTimeRangesJs.createTimeRange(); + } + return _utilsTimeRangesJs.createTimeRange(ranges[0][0], ranges[0][1]); }; /** @@ -11397,12 +11206,11 @@ var Flash = (function (_Tech) { }; return Flash; -})(_Tech3['default']); +})(_tech2['default']); -// Create setters and getters for attributes var _api = Flash.prototype; var _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(','); -var _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); +var _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); function _createSetter(attr) { var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1); @@ -11435,7 +11243,7 @@ Flash.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Flash); +_tech2['default'].withSourceHandlers(Flash); /* * The default native source handler. @@ -11532,7 +11340,7 @@ Flash.checkReady = function (tech) { } else { // wait longer this.setTimeout(function () { - Flash.checkReady(tech); + Flash['checkReady'](tech); }, 50); } }; @@ -11546,15 +11354,14 @@ Flash.onEvent = function (swfID, eventName) { // Log errors from the swf Flash.onError = function (swfID, err) { var tech = Dom.getEl(swfID).tech; - var msg = 'FLASH: ' + err; + // trigger MEDIA_ERR_SRC_NOT_SUPPORTED if (err === 'srcnotfound') { - tech.trigger('error', { code: 4, message: msg }); - - // errors we haven't categorized into the media errors - } else { - tech.trigger('error', msg); + return tech.error(4); } + + // trigger a custom error + tech.error('FLASH: ' + err); }; // Flash Version Check @@ -11563,7 +11370,7 @@ Flash.version = function () { // IE try { - version = new _window2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; + version = new _globalWindow2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; // other browsers } catch (e) { @@ -11595,16 +11402,16 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { // Convert flash vars to string if (flashVars) { Object.getOwnPropertyNames(flashVars).forEach(function (key) { - flashVarsString += '' + key + '=' + flashVars[key] + '&'; + flashVarsString += key + '=' + flashVars[key] + '&'; }); } // Add swf, flashVars, and other default params - params = _assign2['default']({ - movie: swf, - flashvars: flashVarsString, - allowScriptAccess: 'always', // Required to talk to swf - allowNetworking: 'all' // All should be default, but having security issues. + params = _objectAssign2['default']({ + 'movie': swf, + 'flashvars': flashVarsString, + 'allowScriptAccess': 'always', // Required to talk to swf + 'allowNetworking': 'all' // All should be default, but having security issues. }, params); // Create param tags string @@ -11612,89 +11419,92 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { paramsString += ''; }); - attributes = _assign2['default']({ + attributes = _objectAssign2['default']({ // Add swf to attributes (need both for IE and Others to work) - data: swf, + 'data': swf, // Default to 100% width/height - width: '100%', - height: '100%' + 'width': '100%', + 'height': '100%' }, attributes); // Create Attributes string Object.getOwnPropertyNames(attributes).forEach(function (key) { - attrsString += '' + key + '="' + attributes[key] + '" '; + attrsString += key + '="' + attributes[key] + '" '; }); - return '' + objTag + '' + attrsString + '>' + paramsString + ''; + return '' + objTag + attrsString + '>' + paramsString + ''; }; // Run Flash through the RTMP decorator -_FlashRtmpDecorator2['default'](Flash); +_flashRtmp2['default'](Flash); -_Component2['default'].registerComponent('Flash', Flash); +_component2['default'].registerComponent('Flash', Flash); exports['default'] = Flash; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111,"../utils/time-ranges.js":119,"../utils/url.js":121,"./flash-rtmp":96,"./tech":100,"global/window":2,"object.assign":44}],98:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107,"../utils/time-ranges.js":115,"../utils/url.js":117,"./flash-rtmp":92,"./tech":96,"global/window":2,"object.assign":40}],94:[function(_dereq_,module,exports){ /** * @file html5.js * HTML5 Media Controller - Wrapper for HTML5 Media API */ -var _Tech2 = _dereq_('./tech.js'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _Component = _dereq_('../component'); +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; } } -var _Component2 = _interopRequireWildcard(_Component); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import = _dereq_('../utils/dom.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Dom = _interopRequireWildcard(_import); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import2 = _dereq_('../utils/url.js'); +var _techJs = _dereq_('./tech.js'); -var Url = _interopRequireWildcard(_import2); +var _techJs2 = _interopRequireDefault(_techJs); -var _import3 = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import3); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _log2 = _interopRequireWildcard(_log); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _import4 = _dereq_('../utils/browser.js'); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var browser = _interopRequireWildcard(_import4); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _document = _dereq_('global/document'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document2 = _interopRequireWildcard(_document); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window = _dereq_('global/window'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _assign = _dereq_('object.assign'); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _assign2 = _interopRequireWildcard(_assign); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _mergeOptions = _dereq_('../utils/merge-options.js'); +var _globalDocument = _dereq_('global/document'); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('../utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * HTML5 Media Controller - Wrapper for HTML5 Media API @@ -11706,6 +11516,8 @@ var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); */ var Html5 = (function (_Tech) { + _inherits(Html5, _Tech); + function Html5(options, ready) { _classCallCheck(this, Html5); @@ -11759,14 +11571,22 @@ var Html5 = (function (_Tech) { // Our goal should be to get the custom controls on mobile solid everywhere // so we can remove this all together. Right now this will block custom // controls on touch enabled laptops like the Chrome Pixel - if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true) { - this.trigger('usenativecontrols'); + if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true || browser.IS_IPHONE || browser.IS_NATIVE_ANDROID) { + this.setControls(true); } this.triggerReady(); } - _inherits(Html5, _Tech); + /* HTML5 Support Testing ---------------------------------------------------- */ + + /* + * Element for testing browser HTML5 video capabilities + * + * @type {Element} + * @constant + * @private + */ /** * Dispose of html5 media element @@ -11809,7 +11629,7 @@ var Html5 = (function (_Tech) { // Check if this browser supports moving the element into the box. // On the iPhone video will break if you move the element, // So we have to create a brand new element. - if (!el || this.movingMediaElementInDOM === false) { + if (!el || this['movingMediaElementInDOM'] === false) { // If the original tag is still there, clone and remove it. if (el) { @@ -11818,16 +11638,16 @@ var Html5 = (function (_Tech) { Html5.disposeMediaElement(el); el = clone; } else { - el = _document2['default'].createElement('video'); + el = _globalDocument2['default'].createElement('video'); // determine if native controls should be used var tagAttributes = this.options_.tag && Dom.getElAttributes(this.options_.tag); - var attributes = _mergeOptions2['default']({}, tagAttributes); + var attributes = _utilsMergeOptionsJs2['default']({}, tagAttributes); if (!browser.TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) { delete attributes.controls; } - Dom.setElAttributes(el, _assign2['default'](attributes, { + Dom.setElAttributes(el, _objectAssign2['default'](attributes, { id: this.options_.techId, 'class': 'vjs-tech' })); @@ -11930,7 +11750,7 @@ var Html5 = (function (_Tech) { try { this.el_.currentTime = seconds; } catch (e) { - _log2['default'](e, 'Video is not ready. (Video.js)'); + _utilsLogJs2['default'](e, 'Video is not ready. (Video.js)'); // this.warning(VideoJS.warnings.videoNotReady); } }; @@ -12034,7 +11854,7 @@ var Html5 = (function (_Tech) { Html5.prototype.supportsFullScreen = function supportsFullScreen() { if (typeof this.el_.webkitEnterFullScreen === 'function') { - var userAgent = _window2['default'].navigator.userAgent; + var userAgent = _globalWindow2['default'].navigator.userAgent; // Seems to be broken in Chromium/Chrome && Safari in Leopard if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) { return true; @@ -12096,24 +11916,14 @@ var Html5 = (function (_Tech) { * @method src */ - Html5.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Html5.prototype.src = function src(_src) { + if (_src === undefined) { return this.el_.src; } else { // Setting src through `src` instead of `setSrc` will be deprecated - this.setSrc(src); + this.setSrc(_src); } - }); + }; /** * Set video @@ -12430,7 +12240,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addTextTrack = function addTextTrack(kind, label, language) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addTextTrack.call(this, kind, label, language); } @@ -12447,31 +12257,31 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addRemoteTextTrack = function addRemoteTextTrack() { - var options = arguments[0] === undefined ? {} : arguments[0]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addRemoteTextTrack.call(this, options); } - var track = _document2['default'].createElement('track'); + var track = _globalDocument2['default'].createElement('track'); - if (options.kind) { - track.kind = options.kind; + if (options['kind']) { + track['kind'] = options['kind']; } - if (options.label) { - track.label = options.label; + if (options['label']) { + track['label'] = options['label']; } - if (options.language || options.srclang) { - track.srclang = options.language || options.srclang; + if (options['language'] || options['srclang']) { + track['srclang'] = options['language'] || options['srclang']; } if (options['default']) { track['default'] = options['default']; } - if (options.id) { - track.id = options.id; + if (options['id']) { + track['id'] = options['id']; } - if (options.src) { - track.src = options.src; + if (options['src']) { + track['src'] = options['src']; } this.el().appendChild(track); @@ -12489,7 +12299,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.removeRemoteTextTrack.call(this, track); } @@ -12508,19 +12318,10 @@ var Html5 = (function (_Tech) { }; return Html5; -})(_Tech3['default']); +})(_techJs2['default']); -/* HTML5 Support Testing ---------------------------------------------------- */ - -/* -* Element for testing browser HTML5 video capabilities -* -* @type {Element} -* @constant -* @private -*/ -Html5.TEST_VID = _document2['default'].createElement('video'); -var track = _document2['default'].createElement('track'); +Html5.TEST_VID = _globalDocument2['default'].createElement('video'); +var track = _globalDocument2['default'].createElement('track'); track.kind = 'captions'; track.srclang = 'en'; track.label = 'English'; @@ -12534,7 +12335,7 @@ Html5.TEST_VID.appendChild(track); Html5.isSupported = function () { // IE9 with no Media Player is a LIAR! (#984) try { - Html5.TEST_VID.volume = 0.5; + Html5.TEST_VID['volume'] = 0.5; } catch (e) { return false; } @@ -12543,7 +12344,7 @@ Html5.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Html5); +_techJs2['default'].withSourceHandlers(Html5); /* * The default native source handler. @@ -12646,7 +12447,7 @@ Html5.supportsNativeTextTracks = function () { // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862 supportsTextTracks = !!Html5.TEST_VID.textTracks; if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) { - supportsTextTracks = typeof Html5.TEST_VID.textTracks[0].mode !== 'number'; + supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number'; } if (supportsTextTracks && browser.IS_FIREFOX) { supportsTextTracks = false; @@ -12671,14 +12472,14 @@ Html5.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', * * @type {Boolean} */ -Html5.prototype.featuresVolumeControl = Html5.canControlVolume(); +Html5.prototype['featuresVolumeControl'] = Html5.canControlVolume(); /* * Set the tech's playbackRate support status * * @type {Boolean} */ -Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); +Html5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate(); /* * Set the tech's status on moving the video element. @@ -12686,27 +12487,27 @@ Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); * * @type {Boolean} */ -Html5.prototype.movingMediaElementInDOM = !browser.IS_IOS; +Html5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS; /* * Set the the tech's fullscreen resize support status. * HTML video is able to automatically resize when going to fullscreen. * (No longer appears to be used. Can probably be removed.) */ -Html5.prototype.featuresFullscreenResize = true; +Html5.prototype['featuresFullscreenResize'] = true; /* * Set the tech's progress event support status * (this disables the manual progress events of the Tech) */ -Html5.prototype.featuresProgressEvents = true; +Html5.prototype['featuresProgressEvents'] = true; /* * Sets the tech's status on native text track support * * @type {Boolean} */ -Html5.prototype.featuresNativeTextTracks = Html5.supportsNativeTextTracks(); +Html5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks(); // HTML5 Feature detection and Device Fixes --------------------------------- // var canPlayType = undefined; @@ -12715,7 +12516,7 @@ var mp4RE = /^video\/mp4/i; Html5.patchCanPlayType = function () { // Android 4.0 and above can play HLS to some extent but it reports being unable to do so - if (browser.ANDROID_VERSION >= 4) { + if (browser.ANDROID_VERSION >= 4.0) { if (!canPlayType) { canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; } @@ -12778,42 +12579,42 @@ Html5.disposeMediaElement = function (el) { (function () { try { el.load(); - } catch (e) {} + } catch (e) { + // not supported + } })(); } }; -_Component2['default'].registerComponent('Html5', Html5); +_component2['default'].registerComponent('Html5', Html5); exports['default'] = Html5; module.exports = exports['default']; -// not supported - -},{"../component":52,"../utils/browser.js":108,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/log.js":116,"../utils/merge-options.js":117,"../utils/url.js":121,"./tech.js":100,"global/document":1,"global/window":2,"object.assign":44}],99:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/browser.js":104,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/log.js":112,"../utils/merge-options.js":113,"../utils/url.js":117,"./tech.js":96,"global/document":1,"global/window":2,"object.assign":40}],95:[function(_dereq_,module,exports){ /** * @file loader.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window2 = _interopRequireWildcard(_window); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _component = _dereq_('../component'); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * The Media Loader is the component that decides which playback technology to load @@ -12827,6 +12628,8 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MediaLoader = (function (_Component) { + _inherits(MediaLoader, _Component); + function MediaLoader(player, options, ready) { _classCallCheck(this, MediaLoader); @@ -12835,10 +12638,10 @@ var MediaLoader = (function (_Component) { // If there are no sources when the player is initialized, // load the first supported playback technology. - if (!options.playerOptions.sources || options.playerOptions.sources.length === 0) { - for (var i = 0, j = options.playerOptions.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) { + for (var i = 0, j = options.playerOptions['techOrder']; i < j.length; i++) { + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _component2['default'].getComponent(techName); // Check if the browser supports this technology if (tech && tech.isSupported()) { @@ -12851,66 +12654,71 @@ var MediaLoader = (function (_Component) { // // Then load the best source. // // A few assumptions here: // // All playback technologies respect preload false. - player.src(options.playerOptions.sources); + player.src(options.playerOptions['sources']); } } - _inherits(MediaLoader, _Component); - return MediaLoader; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('MediaLoader', MediaLoader); +_component2['default'].registerComponent('MediaLoader', MediaLoader); exports['default'] = MediaLoader; module.exports = exports['default']; -},{"../component":52,"../utils/to-title-case.js":120,"global/window":2}],100:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/to-title-case.js":116,"global/window":2}],96:[function(_dereq_,module,exports){ /** * @file tech.js * Media Technology Controller - Base class for media playback * technology controllers like Flash and HTML5 */ -var _Component2 = _dereq_('../component'); +'use strict'; -var _Component3 = _interopRequireWildcard(_Component2); +exports.__esModule = true; -var _TextTrack = _dereq_('../tracks/text-track'); +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; } } -var _TextTrack2 = _interopRequireWildcard(_TextTrack); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _TextTrackList = _dereq_('../tracks/text-track-list'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackList2 = _interopRequireWildcard(_TextTrackList); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _tracksTextTrack = _dereq_('../tracks/text-track'); -var _log2 = _interopRequireWildcard(_log); +var _tracksTextTrack2 = _interopRequireDefault(_tracksTextTrack); -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tracksTextTrackList = _dereq_('../tracks/text-track-list'); -var _bufferedPercent2 = _dereq_('../utils/buffer.js'); +var _tracksTextTrackList2 = _interopRequireDefault(_tracksTextTrackList); -var _window = _dereq_('global/window'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window2 = _interopRequireWildcard(_window); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document = _dereq_('global/document'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document2 = _interopRequireWildcard(_document); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); + +var _utilsBufferJs = _dereq_('../utils/buffer.js'); + +var _mediaErrorJs = _dereq_('../media-error.js'); + +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Base class for media (HTML5 Video, Flash) controllers @@ -12922,9 +12730,11 @@ var _document2 = _interopRequireWildcard(_document); */ var Tech = (function (_Component) { + _inherits(Tech, _Component); + function Tech() { - var options = arguments[0] === undefined ? {} : arguments[0]; - var ready = arguments[1] === undefined ? function () {} : arguments[1]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var ready = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1]; _classCallCheck(this, Tech); @@ -12971,7 +12781,12 @@ var Tech = (function (_Component) { this.emitTapEvents(); } - _inherits(Tech, _Component); + /* + * List of associated text tracks + * + * @type {Array} + * @private + */ /** * Set up click and touch listeners for the playback element @@ -13082,7 +12897,7 @@ var Tech = (function (_Component) { */ Tech.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); }; /** @@ -13092,19 +12907,9 @@ var Tech = (function (_Component) { * @method bufferedPercent */ - Tech.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration_); - }); + Tech.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration_); + }; /** * Stops tracking progress by clearing progress interval @@ -13180,10 +12985,13 @@ var Tech = (function (_Component) { Tech.prototype.dispose = function dispose() { // clear out text tracks because we can't reuse them between techs - var tt = this.textTracks(); - var i = tt.length; - while (i--) { - this.removeRemoteTextTrack(tt[i]); + var textTracks = this.textTracks(); + + if (textTracks) { + var i = textTracks.length; + while (i--) { + this.removeRemoteTextTrack(textTracks[i]); + } } // Turn off any manual progress or timeupdate tracking @@ -13198,6 +13006,28 @@ var Tech = (function (_Component) { _Component.prototype.dispose.call(this); }; + /** + * When invoked without an argument, returns a MediaError object + * representing the current error state of the player or null if + * there is no error. When invoked with an argument, set the current + * error state of the player. + * @param {MediaError=} err Optional an error object + * @return {MediaError} the current error object or null + * @method error + */ + + Tech.prototype.error = function error(err) { + if (err !== undefined) { + if (err instanceof _mediaErrorJs2['default']) { + this.error_ = err; + } else { + this.error_ = new _mediaErrorJs2['default'](err); + } + this.trigger('error'); + } + return this.error_; + }; + /** * Return the time ranges that have been played through for the * current source. This implementation is incomplete. It does not @@ -13210,9 +13040,9 @@ var Tech = (function (_Component) { Tech.prototype.played = function played() { if (this.hasStarted_) { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); } - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); }; /** @@ -13241,9 +13071,9 @@ var Tech = (function (_Component) { var tracks = this.textTracks(); - if (!tracks) { - return; - }tracks.addEventListener('removetrack', textTrackListChanges); + if (!tracks) return; + + tracks.addEventListener('removetrack', textTrackListChanges); tracks.addEventListener('addtrack', textTrackListChanges); this.on('dispose', Fn.bind(this, function () { @@ -13259,11 +13089,11 @@ var Tech = (function (_Component) { */ Tech.prototype.emulateTextTracks = function emulateTextTracks() { - if (!_window2['default'].WebVTT && this.el().parentNode != null) { - var script = _document2['default'].createElement('script'); + if (!_globalWindow2['default']['WebVTT'] && this.el().parentNode != null) { + var script = _globalDocument2['default'].createElement('script'); script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js'; this.el().parentNode.appendChild(script); - _window2['default'].WebVTT = true; + _globalWindow2['default']['WebVTT'] = true; } var tracks = this.textTracks(); @@ -13310,7 +13140,7 @@ var Tech = (function (_Component) { */ Tech.prototype.textTracks = function textTracks() { - this.textTracks_ = this.textTracks_ || new _TextTrackList2['default'](); + this.textTracks_ = this.textTracks_ || new _tracksTextTrackList2['default'](); return this.textTracks_; }; @@ -13322,7 +13152,7 @@ var Tech = (function (_Component) { */ Tech.prototype.remoteTextTracks = function remoteTextTracks() { - this.remoteTextTracks_ = this.remoteTextTracks_ || new _TextTrackList2['default'](); + this.remoteTextTracks_ = this.remoteTextTracks_ || new _tracksTextTrackList2['default'](); return this.remoteTextTracks_; }; @@ -13385,18 +13215,12 @@ var Tech = (function (_Component) { Tech.prototype.setPoster = function setPoster() {}; return Tech; -})(_Component3['default']); +})(_component2['default']); -/* - * List of associated text tracks - * - * @type {Array} - * @private - */ Tech.prototype.textTracks_; var createTrackHelper = function createTrackHelper(self, kind, label, language) { - var options = arguments[4] === undefined ? {} : arguments[4]; + var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4]; var tracks = self.textTracks(); @@ -13410,7 +13234,7 @@ var createTrackHelper = function createTrackHelper(self, kind, label, language) } options.tech = self; - var track = new _TextTrack2['default'](options); + var track = new _tracksTextTrack2['default'](options); tracks.addTrack_(track); return track; @@ -13525,7 +13349,7 @@ Tech.withSourceHandlers = function (_Tech) { if (_Tech.nativeSourceHandler) { sh = _Tech.nativeSourceHandler; } else { - _log2['default'].error('No source hander found for the current source.'); + _utilsLogJs2['default'].error('No source hander found for the current source.'); } } @@ -13550,29 +13374,31 @@ Tech.withSourceHandlers = function (_Tech) { }; }; -_Component3['default'].registerComponent('Tech', Tech); +_component2['default'].registerComponent('Tech', Tech); // Old name for Tech -_Component3['default'].registerComponent('MediaTechController', Tech); +_component2['default'].registerComponent('MediaTechController', Tech); exports['default'] = Tech; module.exports = exports['default']; -},{"../component":52,"../tracks/text-track":107,"../tracks/text-track-list":105,"../utils/buffer.js":109,"../utils/fn.js":113,"../utils/log.js":116,"../utils/time-ranges.js":119,"global/document":1,"global/window":2}],101:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../media-error.js":83,"../tracks/text-track":103,"../tracks/text-track-list":101,"../utils/buffer.js":105,"../utils/fn.js":109,"../utils/log.js":112,"../utils/time-ranges.js":115,"global/document":1,"global/window":2}],97:[function(_dereq_,module,exports){ /** * @file text-track-cue-list.js */ +'use strict'; -var _import = _dereq_('../utils/browser.js'); +exports.__esModule = true; -var browser = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist @@ -13584,21 +13410,11 @@ var _document2 = _interopRequireWildcard(_document); * }; */ -var TextTrackCueList = (function (_TextTrackCueList) { - function TextTrackCueList(_x) { - return _TextTrackCueList.apply(this, arguments); - } - - TextTrackCueList.toString = function () { - return _TextTrackCueList.toString(); - }; - - return TextTrackCueList; -})(function (cues) { +var TextTrackCueList = function TextTrackCueList(cues) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackCueList.prototype) { list[prop] = TextTrackCueList.prototype[prop]; @@ -13616,7 +13432,7 @@ var TextTrackCueList = (function (_TextTrackCueList) { if (browser.IS_IE8) { return list; } -}); +}; TextTrackCueList.prototype.setCues_ = function (cues) { var oldLength = this.length || 0; @@ -13661,47 +13477,49 @@ TextTrackCueList.prototype.getCueById = function (id) { exports['default'] = TextTrackCueList; module.exports = exports['default']; -},{"../utils/browser.js":108,"global/document":1}],102:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../utils/browser.js":104,"global/document":1}],98:[function(_dereq_,module,exports){ /** * @file text-track-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _Menu = _dereq_('../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _MenuItem = _dereq_('../menu/menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _MenuItem2 = _interopRequireWildcard(_MenuItem); +var _component = _dereq_('../component'); -var _MenuButton = _dereq_('../menu/menu-button.js'); +var _component2 = _interopRequireDefault(_component); -var _MenuButton2 = _interopRequireWildcard(_MenuButton); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _import = _dereq_('../utils/fn.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../menu/menu-item.js'); -var _document = _dereq_('global/document'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _document2 = _interopRequireWildcard(_document); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _window = _dereq_('global/window'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var darkGray = '#222'; var lightGray = '#ccc'; @@ -13729,6 +13547,8 @@ var fontMap = { */ var TextTrackDisplay = (function (_Component) { + _inherits(TextTrackDisplay, _Component); + function TextTrackDisplay(player, options, ready) { _classCallCheck(this, TextTrackDisplay); @@ -13742,14 +13562,14 @@ var TextTrackDisplay = (function (_Component) { // Should probably be moved to an external track loader when we support // tracks that don't need a display. player.ready(Fn.bind(this, function () { - if (player.tech && player.tech.featuresNativeTextTracks) { + if (player.tech && player.tech['featuresNativeTextTracks']) { this.hide(); return; } player.on('fullscreenchange', Fn.bind(this, this.updateDisplay)); - var tracks = this.options_.playerOptions.tracks || []; + var tracks = this.options_.playerOptions['tracks'] || []; for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; this.player_.addRemoteTextTrack(track); @@ -13757,7 +13577,14 @@ var TextTrackDisplay = (function (_Component) { })); } - _inherits(TextTrackDisplay, _Component); + /** + * Add cue HTML to display + * + * @param {Number} color Hex number for color, like #f0e + * @param {Number} opacity Value for opacity,0.0 - 1.0 + * @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' + * @method constructColor + */ /** * Toggle display texttracks @@ -13766,7 +13593,7 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.toggleDisplay = function toggleDisplay() { - if (this.player_.tech && this.player_.tech.featuresNativeTextTracks) { + if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) { this.hide(); } else { this.show(); @@ -13793,8 +13620,8 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.clearDisplay = function clearDisplay() { - if (typeof _window2['default'].WebVTT === 'function') { - _window2['default'].WebVTT.processCues(_window2['default'], [], this.el_); + if (typeof _globalWindow2['default']['WebVTT'] === 'function') { + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], [], this.el_); } }; @@ -13815,7 +13642,7 @@ var TextTrackDisplay = (function (_Component) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.mode === 'showing') { + if (track['mode'] === 'showing') { this.updateForTrack(track); } } @@ -13829,18 +13656,18 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.updateForTrack = function updateForTrack(track) { - if (typeof _window2['default'].WebVTT !== 'function' || !track.activeCues) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function' || !track['activeCues']) { return; } - var overrides = this.player_.textTrackSettings.getValues(); + var overrides = this.player_['textTrackSettings'].getValues(); var cues = []; - for (var _i = 0; _i < track.activeCues.length; _i++) { - cues.push(track.activeCues[_i]); + for (var _i = 0; _i < track['activeCues'].length; _i++) { + cues.push(track['activeCues'][_i]); } - _window2['default'].WebVTT.processCues(_window2['default'], track.activeCues, this.el_); + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], track['activeCues'], this.el_); var i = cues.length; while (i--) { @@ -13876,7 +13703,7 @@ var TextTrackDisplay = (function (_Component) { } } if (overrides.fontPercent && overrides.fontPercent !== 1) { - var fontSize = _window2['default'].parseFloat(cueDiv.style.fontSize); + var fontSize = _globalWindow2['default'].parseFloat(cueDiv.style.fontSize); cueDiv.style.fontSize = fontSize * overrides.fontPercent + 'px'; cueDiv.style.height = 'auto'; cueDiv.style.top = 'auto'; @@ -13893,16 +13720,8 @@ var TextTrackDisplay = (function (_Component) { }; return TextTrackDisplay; -})(_Component3['default']); +})(_component2['default']); -/** -* Add cue HTML to display -* -* @param {Number} color Hex number for color, like #f0e -* @param {Number} opacity Value for opacity,0.0 - 1.0 -* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' -* @method constructColor -*/ function constructColor(color, opacity) { return 'rgba(' + // color looks like "#f0e" @@ -13925,14 +13744,11 @@ function tryUpdateStyle(el, style, rule) { } catch (e) {} } -_Component3['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); +_component2['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); exports['default'] = TextTrackDisplay; module.exports = exports['default']; -},{"../component":52,"../menu/menu-button.js":88,"../menu/menu-item.js":89,"../menu/menu.js":90,"../utils/fn.js":113,"global/document":1,"global/window":2}],103:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component":48,"../menu/menu-button.js":84,"../menu/menu-item.js":85,"../menu/menu.js":86,"../utils/fn.js":109,"global/document":1,"global/window":2}],99:[function(_dereq_,module,exports){ /** * @file text-track-enums.js * @@ -13940,10 +13756,13 @@ exports.__esModule = true; * * enum TextTrackMode { "disabled", "hidden", "showing" }; */ +'use strict'; + +exports.__esModule = true; var TextTrackMode = { - disabled: 'disabled', - hidden: 'hidden', - showing: 'showing' + 'disabled': 'disabled', + 'hidden': 'hidden', + 'showing': 'showing' }; /* @@ -13952,20 +13771,17 @@ var TextTrackMode = { * enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; */ var TextTrackKind = { - subtitles: 'subtitles', - captions: 'captions', - descriptions: 'descriptions', - chapters: 'chapters', - metadata: 'metadata' + 'subtitles': 'subtitles', + 'captions': 'captions', + 'descriptions': 'descriptions', + 'chapters': 'chapters', + 'metadata': 'metadata' }; exports.TextTrackMode = TextTrackMode; exports.TextTrackKind = TextTrackKind; -},{}],104:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{}],100:[function(_dereq_,module,exports){ /** * Utilities for capturing text track state and re-creating tracks * based on a capture. @@ -13980,6 +13796,9 @@ exports.__esModule = true; * @return {Object} a serializable javascript representation of the * @private */ +'use strict'; + +exports.__esModule = true; var trackToJson_ = function trackToJson_(track) { return { kind: track.kind, @@ -14049,31 +13868,33 @@ var jsonToTextTracks = function jsonToTextTracks(json, tech) { exports['default'] = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ }; module.exports = exports['default']; -},{}],105:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],101:[function(_dereq_,module,exports){ /** * @file text-track-list.js */ +'use strict'; -var _EventTarget = _dereq_('../event-target'); +exports.__esModule = true; -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _eventTarget = _dereq_('../event-target'); -var _import2 = _dereq_('../utils/browser.js'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var browser = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document = _dereq_('global/document'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist @@ -14088,21 +13909,11 @@ var _document2 = _interopRequireWildcard(_document); * attribute EventHandler onremovetrack; * }; */ -var TextTrackList = (function (_TextTrackList) { - function TextTrackList(_x) { - return _TextTrackList.apply(this, arguments); - } - - TextTrackList.toString = function () { - return _TextTrackList.toString(); - }; - - return TextTrackList; -})(function (tracks) { +var TextTrackList = function TextTrackList(tracks) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackList.prototype) { list[prop] = TextTrackList.prototype[prop]; @@ -14125,9 +13936,9 @@ var TextTrackList = (function (_TextTrackList) { if (browser.IS_IE8) { return list; } -}); +}; -TextTrackList.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrackList.prototype = Object.create(_eventTarget2['default'].prototype); TextTrackList.prototype.constructor = TextTrackList; /* @@ -14136,9 +13947,9 @@ TextTrackList.prototype.constructor = TextTrackList; * removetrack - A track has been removed from the track list. */ TextTrackList.prototype.allowedEvents_ = { - change: 'change', - addtrack: 'addtrack', - removetrack: 'removetrack' + 'change': 'change', + 'addtrack': 'addtrack', + 'removetrack': 'removetrack' }; // emulate attribute EventHandler support to allow for feature detection @@ -14202,43 +14013,45 @@ TextTrackList.prototype.getTrackById = function (id) { exports['default'] = TextTrackList; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"global/document":1}],106:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"global/document":1}],102:[function(_dereq_,module,exports){ /** * @file text-track-settings.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/events.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Events = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _component = _dereq_('../component'); -var _log = _dereq_('../utils/log.js'); +var _component2 = _interopRequireDefault(_component); -var _log2 = _interopRequireWildcard(_log); +var _utilsEventsJs = _dereq_('../utils/events.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window = _dereq_('global/window'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs = _dereq_('../utils/log.js'); + +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); + +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Manipulate settings of texttracks @@ -14250,6 +14063,8 @@ var _window2 = _interopRequireWildcard(_window); */ var TextTrackSettings = (function (_Component) { + _inherits(TextTrackSettings, _Component); + function TextTrackSettings(player, options) { _classCallCheck(this, TextTrackSettings); @@ -14294,8 +14109,6 @@ var TextTrackSettings = (function (_Component) { } } - _inherits(TextTrackSettings, _Component); - /** * Create the component's DOM element * @@ -14337,21 +14150,21 @@ var TextTrackSettings = (function (_Component) { var bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select')); var windowColor = getSelectedOptionValue(el.querySelector('.window-color > select')); var windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select')); - var fontPercent = _window2['default'].parseFloat(getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); + var fontPercent = _globalWindow2['default']['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); var result = { - backgroundOpacity: bgOpacity, - textOpacity: textOpacity, - windowOpacity: windowOpacity, - edgeStyle: textEdge, - fontFamily: fontFamily, - color: fgColor, - backgroundColor: bgColor, - windowColor: windowColor, - fontPercent: fontPercent + 'backgroundOpacity': bgOpacity, + 'textOpacity': textOpacity, + 'windowOpacity': windowOpacity, + 'edgeStyle': textEdge, + 'fontFamily': fontFamily, + 'color': fgColor, + 'backgroundColor': bgColor, + 'windowColor': windowColor, + 'fontPercent': fontPercent }; for (var _name in result) { - if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1) { + if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1.00) { delete result[_name]; } } @@ -14402,13 +14215,13 @@ var TextTrackSettings = (function (_Component) { */ TextTrackSettings.prototype.restoreSettings = function restoreSettings() { - var _safeParseTuple = _safeParseTuple3['default'](_window2['default'].localStorage.getItem('vjs-text-track-settings')); + var _safeParseTuple = _safeJsonParseTuple2['default'](_globalWindow2['default'].localStorage.getItem('vjs-text-track-settings')); var err = _safeParseTuple[0]; var values = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } if (values) { @@ -14430,9 +14243,9 @@ var TextTrackSettings = (function (_Component) { var values = this.getValues(); try { if (Object.getOwnPropertyNames(values).length > 0) { - _window2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); + _globalWindow2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); } else { - _window2['default'].localStorage.removeItem('vjs-text-track-settings'); + _globalWindow2['default'].localStorage.removeItem('vjs-text-track-settings'); } } catch (e) {} }; @@ -14451,9 +14264,9 @@ var TextTrackSettings = (function (_Component) { }; return TextTrackSettings; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('TextTrackSettings', TextTrackSettings); +_component2['default'].registerComponent('TextTrackSettings', TextTrackSettings); function getSelectedOptionValue(target) { var selectedOption = undefined; @@ -14492,55 +14305,57 @@ function captionOptionsMenuTemplate() { exports['default'] = TextTrackSettings; module.exports = exports['default']; -},{"../component":52,"../utils/events.js":112,"../utils/fn.js":113,"../utils/log.js":116,"global/window":2,"safe-json-parse/tuple":49}],107:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../utils/events.js":108,"../utils/fn.js":109,"../utils/log.js":112,"global/window":2,"safe-json-parse/tuple":45}],103:[function(_dereq_,module,exports){ /** * @file text-track.js */ +'use strict'; -var _TextTrackCueList = _dereq_('./text-track-cue-list'); +exports.__esModule = true; -var _TextTrackCueList2 = _interopRequireWildcard(_TextTrackCueList); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _textTrackCueList = _dereq_('./text-track-cue-list'); -var _import2 = _dereq_('../utils/guid.js'); +var _textTrackCueList2 = _interopRequireDefault(_textTrackCueList); -var Guid = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _import3 = _dereq_('../utils/browser.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var browser = _interopRequireWildcard(_import3); +var _utilsGuidJs = _dereq_('../utils/guid.js'); -var _import4 = _dereq_('./text-track-enums'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var TextTrackEnum = _interopRequireWildcard(_import4); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _log = _dereq_('../utils/log.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _log2 = _interopRequireWildcard(_log); +var _textTrackEnums = _dereq_('./text-track-enums'); -var _EventTarget = _dereq_('../event-target'); +var TextTrackEnum = _interopRequireWildcard(_textTrackEnums); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document = _dereq_('global/document'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _document2 = _interopRequireWildcard(_document); +var _eventTarget = _dereq_('../event-target'); -var _window = _dereq_('global/window'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); -var _XHR = _dereq_('../xhr.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var _XHR2 = _interopRequireWildcard(_XHR); +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _xhrJs = _dereq_('../xhr.js'); + +var _xhrJs2 = _interopRequireDefault(_xhrJs); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack @@ -14564,18 +14379,8 @@ var _XHR2 = _interopRequireWildcard(_XHR); * attribute EventHandler oncuechange; * }; */ -var TextTrack = (function (_TextTrack) { - function TextTrack() { - return _TextTrack.apply(this, arguments); - } - - TextTrack.toString = function () { - return _TextTrack.toString(); - }; - - return TextTrack; -})(function () { - var options = arguments[0] === undefined ? {} : arguments[0]; +var TextTrack = function TextTrack() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; if (!options.tech) { throw new Error('A tech was not provided.'); @@ -14583,7 +14388,7 @@ var TextTrack = (function (_TextTrack) { var tt = this; if (browser.IS_IE8) { - tt = _document2['default'].createElement('custom'); + tt = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrack.prototype) { tt[prop] = TextTrack.prototype[prop]; @@ -14592,11 +14397,11 @@ var TextTrack = (function (_TextTrack) { tt.tech_ = options.tech; - var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled'; - var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles'; - var label = options.label || ''; - var language = options.language || options.srclang || ''; - var id = options.id || 'vjs_text_track_' + Guid.newGUID(); + var mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled'; + var kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles'; + var label = options['label'] || ''; + var language = options['language'] || options['srclang'] || ''; + var id = options['id'] || 'vjs_text_track_' + Guid.newGUID(); if (kind === 'metadata' || kind === 'chapters') { mode = 'hidden'; @@ -14605,14 +14410,14 @@ var TextTrack = (function (_TextTrack) { tt.cues_ = []; tt.activeCues_ = []; - var cues = new _TextTrackCueList2['default'](tt.cues_); - var activeCues = new _TextTrackCueList2['default'](tt.activeCues_); + var cues = new _textTrackCueList2['default'](tt.cues_); + var activeCues = new _textTrackCueList2['default'](tt.activeCues_); var changed = false; var timeupdateHandler = Fn.bind(tt, function () { - this.activeCues; + this['activeCues']; if (changed) { - this.trigger('cuechange'); + this['trigger']('cuechange'); changed = false; } }); @@ -14681,18 +14486,18 @@ var TextTrack = (function (_TextTrack) { return null; } - if (this.cues.length === 0) { + if (this['cues'].length === 0) { return activeCues; // nothing to do } var ct = this.tech_.currentTime(); var active = []; - for (var i = 0, l = this.cues.length; i < l; i++) { - var cue = this.cues[i]; - if (cue.startTime <= ct && cue.endTime >= ct) { + for (var i = 0, l = this['cues'].length; i < l; i++) { + var cue = this['cues'][i]; + if (cue['startTime'] <= ct && cue['endTime'] >= ct) { active.push(cue); - } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) { + } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) { active.push(cue); } } @@ -14727,16 +14532,16 @@ var TextTrack = (function (_TextTrack) { if (browser.IS_IE8) { return tt; } -}); +}; -TextTrack.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrack.prototype = Object.create(_eventTarget2['default'].prototype); TextTrack.prototype.constructor = TextTrack; /* * cuechange - One or more cues in the track have become active or stopped being active. */ TextTrack.prototype.allowedEvents_ = { - cuechange: 'cuechange' + 'cuechange': 'cuechange' }; TextTrack.prototype.addCue = function (cue) { @@ -14751,7 +14556,7 @@ TextTrack.prototype.addCue = function (cue) { } this.cues_.push(cue); - this.cues.setCues_(this.cues_); + this['cues'].setCues_(this.cues_); }; TextTrack.prototype.removeCue = function (removeCue) { @@ -14773,41 +14578,31 @@ TextTrack.prototype.removeCue = function (removeCue) { /* * Downloading stuff happens below this point */ -var parseCues = (function (_parseCues) { - function parseCues(_x, _x2) { - return _parseCues.apply(this, arguments); - } - - parseCues.toString = function () { - return _parseCues.toString(); - }; - - return parseCues; -})(function (srcContent, track) { - if (typeof _window2['default'].WebVTT !== 'function') { +var parseCues = function parseCues(srcContent, track) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function') { //try again a bit later - return _window2['default'].setTimeout(function () { + return _globalWindow2['default'].setTimeout(function () { parseCues(srcContent, track); }, 25); } - var parser = new _window2['default'].WebVTT.Parser(_window2['default'], _window2['default'].vttjs, _window2['default'].WebVTT.StringDecoder()); + var parser = new _globalWindow2['default']['WebVTT']['Parser'](_globalWindow2['default'], _globalWindow2['default']['vttjs'], _globalWindow2['default']['WebVTT']['StringDecoder']()); - parser.oncue = function (cue) { + parser['oncue'] = function (cue) { track.addCue(cue); }; - parser.onparsingerror = function (error) { - _log2['default'].error(error); + parser['onparsingerror'] = function (error) { + _utilsLogJs2['default'].error(error); }; - parser.parse(srcContent); - parser.flush(); -}); + parser['parse'](srcContent); + parser['flush'](); +}; var loadTrack = function loadTrack(src, track) { - _XHR2['default'](src, Fn.bind(this, function (err, response, responseBody) { + _xhrJs2['default'](src, Fn.bind(this, function (err, response, responseBody) { if (err) { - return _log2['default'].error(err); + return _utilsLogJs2['default'].error(err, response); } track.loaded_ = true; @@ -14852,25 +14647,27 @@ var indexOf = function indexOf(searchElement, fromIndex) { exports['default'] = TextTrack; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"../utils/guid.js":115,"../utils/log.js":116,"../xhr.js":123,"./text-track-cue-list":101,"./text-track-enums":103,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"../utils/guid.js":111,"../utils/log.js":112,"../xhr.js":119,"./text-track-cue-list":97,"./text-track-enums":99,"global/document":1,"global/window":2}],104:[function(_dereq_,module,exports){ /** * @file browser.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +var _globalDocument = _dereq_('global/document'); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var USER_AGENT = _window2['default'].navigator.userAgent; +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var USER_AGENT = _globalWindow2['default'].navigator.userAgent; +var webkitVersionMap = /AppleWebKit\/([\d.]+)/i.exec(USER_AGENT); +var appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null; /* * Device is an iPhone @@ -14923,8 +14720,10 @@ var ANDROID_VERSION = (function () { exports.ANDROID_VERSION = ANDROID_VERSION; // Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser var IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3; - exports.IS_OLD_ANDROID = IS_OLD_ANDROID; +var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537; + +exports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID; var IS_FIREFOX = /Firefox/i.test(USER_AGENT); exports.IS_FIREFOX = IS_FIREFOX; var IS_CHROME = /Chrome/i.test(USER_AGENT); @@ -14932,15 +14731,21 @@ exports.IS_CHROME = IS_CHROME; var IS_IE8 = /MSIE\s8\.0/.test(USER_AGENT); exports.IS_IE8 = IS_IE8; -var TOUCH_ENABLED = !!('ontouchstart' in _window2['default'] || _window2['default'].DocumentTouch && _document2['default'] instanceof _window2['default'].DocumentTouch); +var TOUCH_ENABLED = !!('ontouchstart' in _globalWindow2['default'] || _globalWindow2['default'].DocumentTouch && _globalDocument2['default'] instanceof _globalWindow2['default'].DocumentTouch); exports.TOUCH_ENABLED = TOUCH_ENABLED; -var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _document2['default'].createElement('video').style); +var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _globalDocument2['default'].createElement('video').style); exports.BACKGROUND_SIZE_SUPPORTED = BACKGROUND_SIZE_SUPPORTED; -},{"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ +},{"global/document":1,"global/window":2}],105:[function(_dereq_,module,exports){ +/** + * @file buffer.js + */ 'use strict'; exports.__esModule = true; +exports.bufferedPercent = bufferedPercent; + +var _timeRangesJs = _dereq_('./time-ranges.js'); /** * Compute how much your video has been buffered @@ -14951,12 +14756,6 @@ exports.__esModule = true; * @private * @function bufferedPercent */ -exports.bufferedPercent = bufferedPercent; -/** - * @file buffer.js - */ - -var _createTimeRange = _dereq_('./time-ranges.js'); function bufferedPercent(buffered, duration) { var bufferedDuration = 0, @@ -14968,7 +14767,7 @@ function bufferedPercent(buffered, duration) { } if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _timeRangesJs.createTimeRange(0, 0); } for (var i = 0; i < buffered.length; i++) { @@ -14986,16 +14785,16 @@ function bufferedPercent(buffered, duration) { return bufferedDuration / duration; } -},{"./time-ranges.js":119}],110:[function(_dereq_,module,exports){ +},{"./time-ranges.js":115}],106:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./log.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _logJs = _dereq_('./log.js'); + +var _logJs2 = _interopRequireDefault(_logJs); /** * Object containing the default behaviors for available handler methods. @@ -15028,7 +14827,7 @@ var defaultBehaviors = { */ exports['default'] = function (target) { - var messages = arguments[1] === undefined ? {} : arguments[1]; + var messages = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; if (typeof Proxy === 'function') { var _ret = (function () { @@ -15039,7 +14838,7 @@ exports['default'] = function (target) { Object.keys(messages).forEach(function (key) { if (defaultBehaviors.hasOwnProperty(key)) { handler[key] = function () { - _log2['default'].warn(messages[key]); + _logJs2['default'].warn(messages[key]); return defaultBehaviors[key].apply(this, arguments); }; } @@ -15057,12 +14856,43 @@ exports['default'] = function (target) { module.exports = exports['default']; -},{"./log.js":116}],111:[function(_dereq_,module,exports){ +},{"./log.js":112}],107:[function(_dereq_,module,exports){ +/** + * @file dom.js + */ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.getEl = getEl; +exports.createEl = createEl; +exports.insertElFirst = insertElFirst; +exports.getElData = getElData; +exports.hasElData = hasElData; +exports.removeElData = removeElData; +exports.hasElClass = hasElClass; +exports.addElClass = addElClass; +exports.removeElClass = removeElClass; +exports.setElAttributes = setElAttributes; +exports.getElAttributes = getElAttributes; +exports.blockTextSelection = blockTextSelection; +exports.unblockTextSelection = unblockTextSelection; +exports.findElPosition = findElPosition; + +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; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); /** * Shorthand for document.getElementById() @@ -15072,7 +14902,14 @@ exports.__esModule = true; * @return {Element} Element with supplied ID * @function getEl */ -exports.getEl = getEl; + +function getEl(id) { + if (id.indexOf('#') === 0) { + id = id.slice(1); + } + + return _globalDocument2['default'].getElementById(id); +} /** * Creates an element and applies properties. @@ -15082,151 +14919,12 @@ exports.getEl = getEl; * @return {Element} * @function createEl */ -exports.createEl = createEl; - -/** - * Insert an element as the first child node of another - * - * @param {Element} child Element to insert - * @param {Element} parent Element to insert child into - * @private - * @function insertElFirst - */ -exports.insertElFirst = insertElFirst; - -/** - * Returns the cache object where data for an element is stored - * - * @param {Element} el Element to store data for. - * @return {Object} - * @function getElData - */ -exports.getElData = getElData; - -/** - * Returns whether or not an element has cached data - * - * @param {Element} el A dom element - * @return {Boolean} - * @private - * @function hasElData - */ -exports.hasElData = hasElData; - -/** - * Delete data for the element from the cache and the guid attr from getElementById - * - * @param {Element} el Remove data for an element - * @private - * @function removeElData - */ -exports.removeElData = removeElData; - -/** - * Check if an element has a CSS class - * - * @param {Element} element Element to check - * @param {String} classToCheck Classname to check - * @function hasElClass - */ -exports.hasElClass = hasElClass; - -/** - * Add a CSS class name to an element - * - * @param {Element} element Element to add class name to - * @param {String} classToAdd Classname to add - * @function addElClass - */ -exports.addElClass = addElClass; - -/** - * Remove a CSS class name from an element - * - * @param {Element} element Element to remove from class name - * @param {String} classToRemove Classname to remove - * @function removeElClass - */ -exports.removeElClass = removeElClass; - -/** - * Apply attributes to an HTML element. - * - * @param {Element} el Target element. - * @param {Object=} attributes Element attributes to be applied. - * @private - * @function setElAttributes - */ -exports.setElAttributes = setElAttributes; - -/** - * Get an element's attribute values, as defined on the HTML tag - * Attributes are not the same as properties. They're defined on the tag - * or with setAttribute (which shouldn't be used with HTML) - * This will return true or false for boolean attributes. - * - * @param {Element} tag Element from which to get tag attributes - * @return {Object} - * @private - * @function getElAttributes - */ -exports.getElAttributes = getElAttributes; - -/** - * Attempt to block the ability to select text while dragging controls - * - * @return {Boolean} - * @method blockTextSelection - */ -exports.blockTextSelection = blockTextSelection; - -/** - * Turn off text selection blocking - * - * @return {Boolean} - * @method unblockTextSelection - */ -exports.unblockTextSelection = unblockTextSelection; - -/** - * Offset Left - * getBoundingClientRect technique from - * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ - * - * @param {Element} el Element from which to get offset - * @return {Object=} - * @method findElPosition - */ -exports.findElPosition = findElPosition; -/** - * @file dom.js - */ - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _import = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import); - -function getEl(id) { - if (id.indexOf('#') === 0) { - id = id.slice(1); - } - - return _document2['default'].getElementById(id); -} function createEl() { - var tagName = arguments[0] === undefined ? 'div' : arguments[0]; - var properties = arguments[1] === undefined ? {} : arguments[1]; + var tagName = arguments.length <= 0 || arguments[0] === undefined ? 'div' : arguments[0]; + var properties = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - var el = _document2['default'].createElement(tagName); + var el = _globalDocument2['default'].createElement(tagName); Object.getOwnPropertyNames(properties).forEach(function (propName) { var val = properties[propName]; @@ -15249,6 +14947,15 @@ function createEl() { return el; } +/** + * Insert an element as the first child node of another + * + * @param {Element} child Element to insert + * @param {Element} parent Element to insert child into + * @private + * @function insertElFirst + */ + function insertElFirst(child, parent) { if (parent.firstChild) { parent.insertBefore(child, parent.firstChild); @@ -15275,6 +14982,15 @@ var elData = {}; * @private */ var elIdAttr = 'vdata' + new Date().getTime(); + +/** + * Returns the cache object where data for an element is stored + * + * @param {Element} el Element to store data for. + * @return {Object} + * @function getElData + */ + function getElData(el) { var id = el[elIdAttr]; @@ -15289,6 +15005,15 @@ function getElData(el) { return elData[id]; } +/** + * Returns whether or not an element has cached data + * + * @param {Element} el A dom element + * @return {Boolean} + * @private + * @function hasElData + */ + function hasElData(el) { var id = el[elIdAttr]; @@ -15299,6 +15024,14 @@ function hasElData(el) { return !!Object.getOwnPropertyNames(elData[id]).length; } +/** + * Delete data for the element from the cache and the guid attr from getElementById + * + * @param {Element} el Remove data for an element + * @private + * @function removeElData + */ + function removeElData(el) { var id = el[elIdAttr]; @@ -15322,16 +15055,40 @@ function removeElData(el) { } } +/** + * Check if an element has a CSS class + * + * @param {Element} element Element to check + * @param {String} classToCheck Classname to check + * @function hasElClass + */ + function hasElClass(element, classToCheck) { return (' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1; } +/** + * Add a CSS class name to an element + * + * @param {Element} element Element to add class name to + * @param {String} classToAdd Classname to add + * @function addElClass + */ + function addElClass(element, classToAdd) { if (!hasElClass(element, classToAdd)) { element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd; } } +/** + * Remove a CSS class name from an element + * + * @param {Element} element Element to remove from class name + * @param {String} classToRemove Classname to remove + * @function removeElClass + */ + function removeElClass(element, classToRemove) { if (!hasElClass(element, classToRemove)) { return; @@ -15349,6 +15106,15 @@ function removeElClass(element, classToRemove) { element.className = classNames.join(' '); } +/** + * Apply attributes to an HTML element. + * + * @param {Element} el Target element. + * @param {Object=} attributes Element attributes to be applied. + * @private + * @function setElAttributes + */ + function setElAttributes(el, attributes) { Object.getOwnPropertyNames(attributes).forEach(function (attrName) { var attrValue = attributes[attrName]; @@ -15361,6 +15127,18 @@ function setElAttributes(el, attributes) { }); } +/** + * Get an element's attribute values, as defined on the HTML tag + * Attributes are not the same as properties. They're defined on the tag + * or with setAttribute (which shouldn't be used with HTML) + * This will return true or false for boolean attributes. + * + * @param {Element} tag Element from which to get tag attributes + * @return {Object} + * @private + * @function getElAttributes + */ + function getElAttributes(tag) { var obj, knownBooleans, attrs, attrName, attrVal; @@ -15394,19 +15172,43 @@ function getElAttributes(tag) { return obj; } +/** + * Attempt to block the ability to select text while dragging controls + * + * @return {Boolean} + * @method blockTextSelection + */ + function blockTextSelection() { - _document2['default'].body.focus(); - _document2['default'].onselectstart = function () { + _globalDocument2['default'].body.focus(); + _globalDocument2['default'].onselectstart = function () { return false; }; } +/** + * Turn off text selection blocking + * + * @return {Boolean} + * @method unblockTextSelection + */ + function unblockTextSelection() { - _document2['default'].onselectstart = function () { + _globalDocument2['default'].onselectstart = function () { return true; }; } +/** + * Offset Left + * getBoundingClientRect technique from + * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ + * + * @param {Element} el Element from which to get offset + * @return {Object=} + * @method findElPosition + */ + function findElPosition(el) { var box = undefined; @@ -15421,15 +15223,15 @@ function findElPosition(el) { }; } - var docEl = _document2['default'].documentElement; - var body = _document2['default'].body; + var docEl = _globalDocument2['default'].documentElement; + var body = _globalDocument2['default'].body; var clientLeft = docEl.clientLeft || body.clientLeft || 0; - var scrollLeft = _window2['default'].pageXOffset || body.scrollLeft; + var scrollLeft = _globalWindow2['default'].pageXOffset || body.scrollLeft; var left = box.left + scrollLeft - clientLeft; var clientTop = docEl.clientTop || body.clientTop || 0; - var scrollTop = _window2['default'].pageYOffset || body.scrollTop; + var scrollTop = _globalWindow2['default'].pageYOffset || body.scrollTop; var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round @@ -15439,12 +15241,44 @@ function findElPosition(el) { }; } -},{"./guid.js":115,"global/document":1,"global/window":2}],112:[function(_dereq_,module,exports){ +},{"./guid.js":111,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ +/** + * @file events.js + * + * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) + * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) + * This should work very similarly to jQuery's events, however it's based off the book version which isn't as + * robust as jquery's, so there's probably some differences. + */ + 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.on = on; +exports.off = off; +exports.trigger = trigger; +exports.one = one; +exports.fixEvent = fixEvent; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +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; } } + +var _domJs = _dereq_('./dom.js'); + +var Dom = _interopRequireWildcard(_domJs); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Add an event listener to element @@ -15457,72 +15291,6 @@ exports.__esModule = true; * @param {Function} fn Event listener. * @method on */ -exports.on = on; - -/** - * Removes event listeners from an element - * - * @param {Element|Object} elem Object to remove listeners from - * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. - * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. - * @method off - */ -exports.off = off; - -/** - * Trigger an event for an element - * - * @param {Element|Object} elem Element to trigger an event on - * @param {Event|Object|String} event A string (the type) or an event object with a type attribute - * @param {Object} [hash] data hash to pass along with the event - * @return {Boolean=} Returned only if default was prevented - * @method trigger - */ -exports.trigger = trigger; - -/** - * Trigger a listener only once for an event - * - * @param {Element|Object} elem Element or object to - * @param {String|Array} type Name/type of event - * @param {Function} fn Event handler function - * @method one - */ -exports.one = one; - -/** - * Fix a native event to have standard property values - * - * @param {Object} event Event object to fix - * @return {Object} - * @private - * @method fixEvent - */ -exports.fixEvent = fixEvent; -/** - * @file events.js - * - * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) - * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) - * This should work very similarly to jQuery's events, however it's based off the book version which isn't as - * robust as jquery's, so there's probably some differences. - */ - -var _import = _dereq_('./dom.js'); - -var Dom = _interopRequireWildcard(_import); - -var _import2 = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import2); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); function on(elem, type, fn) { if (Array.isArray(type)) { @@ -15574,11 +15342,20 @@ function on(elem, type, fn) { } } +/** + * Removes event listeners from an element + * + * @param {Element|Object} elem Object to remove listeners from + * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. + * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. + * @method off + */ + function off(elem, type, fn) { // Don't want to add a cache object through getElData if not needed - if (!Dom.hasElData(elem)) { - return; - }var data = Dom.getElData(elem); + if (!Dom.hasElData(elem)) return; + + var data = Dom.getElData(elem); // If no events exist, nothing to unbind if (!data.handlers) { @@ -15605,9 +15382,9 @@ function off(elem, type, fn) { var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind - if (!handlers) { - return; - } // If no listener was provided, remove all listeners for type + if (!handlers) return; + + // If no listener was provided, remove all listeners for type if (!fn) { removeType(type); return; @@ -15625,6 +15402,16 @@ function off(elem, type, fn) { _cleanUpEvents(elem, type); } +/** + * Trigger an event for an element + * + * @param {Element|Object} elem Element to trigger an event on + * @param {Event|Object|String} event A string (the type) or an event object with a type attribute + * @param {Object} [hash] data hash to pass along with the event + * @return {Boolean=} Returned only if default was prevented + * @method trigger + */ + function trigger(elem, event, hash) { // Fetches element data and a reference to the parent (for bubbling). // Don't want to add a data object to cache for every parent, @@ -15653,48 +15440,56 @@ function trigger(elem, event, hash) { // If at the top of the DOM, triggers the default action unless disabled. } else if (!parent && !event.defaultPrevented) { - var targetData = Dom.getElData(event.target); + var targetData = Dom.getElData(event.target); - // Checks if the target has a default action for this event. - if (event.target[event.type]) { - // Temporarily disables event dispatching on the target as we have already executed the handler. - targetData.disabled = true; - // Executes the default action. - if (typeof event.target[event.type] === 'function') { - event.target[event.type](); + // Checks if the target has a default action for this event. + if (event.target[event.type]) { + // Temporarily disables event dispatching on the target as we have already executed the handler. + targetData.disabled = true; + // Executes the default action. + if (typeof event.target[event.type] === 'function') { + event.target[event.type](); + } + // Re-enables event dispatching. + targetData.disabled = false; } - // Re-enables event dispatching. - targetData.disabled = false; } - } // Inform the triggerer if the default was prevented by returning false return !event.defaultPrevented; } +/** + * Trigger a listener only once for an event + * + * @param {Element|Object} elem Element or object to + * @param {String|Array} type Name/type of event + * @param {Function} fn Event handler function + * @method one + */ + function one(elem, type, fn) { if (Array.isArray(type)) { return _handleMultipleEvents(one, elem, type, fn); } - var func = (function (_func) { - function func() { - return _func.apply(this, arguments); - } - - func.toString = function () { - return _func.toString(); - }; - - return func; - })(function () { + var func = function func() { off(elem, type, func); fn.apply(this, arguments); - }); + }; // copy the guid to the new function so it can removed using the original function's ID func.guid = fn.guid = fn.guid || Guid.newGUID(); on(elem, type, func); } +/** + * Fix a native event to have standard property values + * + * @param {Object} event Event object to fix + * @return {Object} + * @private + * @method fixEvent + */ + function fixEvent(event) { function returnTrue() { @@ -15710,7 +15505,7 @@ function fixEvent(event) { // other expected methods like isPropagationStopped. Seems to be a problem // with the Javascript Ninja code. So we're just overriding all events now. if (!event || !event.isPropagationStopped) { - var old = event || _window2['default'].event; + var old = event || _globalWindow2['default'].event; event = {}; // Clone the old object so that we can modify the values event = {}; @@ -15732,7 +15527,7 @@ function fixEvent(event) { // The event occurred on this element if (!event.target) { - event.target = event.srcElement || _document2['default']; + event.target = event.srcElement || _globalDocument2['default']; } // Handle which other element the event is related to @@ -15775,8 +15570,8 @@ function fixEvent(event) { // Handle mouse position if (event.clientX != null) { - var doc = _document2['default'].documentElement, - body = _document2['default'].body; + var doc = _globalDocument2['default'].documentElement, + body = _globalDocument2['default'].body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); @@ -15851,15 +15646,15 @@ function _handleMultipleEvents(fn, elem, types, callback) { }); } -},{"./dom.js":111,"./guid.js":115,"global/document":1,"global/window":2}],113:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./dom.js":107,"./guid.js":111,"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ /** * @file fn.js */ +'use strict'; -var _newGUID = _dereq_('./guid.js'); +exports.__esModule = true; + +var _guidJs = _dereq_('./guid.js'); /** * Bind (a.k.a proxy or Context). A simple method for changing the context of a function @@ -15875,7 +15670,7 @@ var _newGUID = _dereq_('./guid.js'); var bind = function bind(context, fn, uid) { // Make sure the function has a unique ID if (!fn.guid) { - fn.guid = _newGUID.newGUID(); + fn.guid = _guidJs.newGUID(); } // Create the new function that changes the context @@ -15895,10 +15690,7 @@ var bind = function bind(context, fn, uid) { }; exports.bind = bind; -},{"./guid.js":115}],114:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./guid.js":111}],110:[function(_dereq_,module,exports){ /** * @file format-time.js * @@ -15912,8 +15704,11 @@ exports.__esModule = true; * @private * @function formatTime */ +'use strict'; + +exports.__esModule = true; function formatTime(seconds) { - var guide = arguments[1] === undefined ? seconds : arguments[1]; + var guide = arguments.length <= 1 || arguments[1] === undefined ? seconds : arguments[1]; return (function () { var s = Math.floor(seconds % 60); var m = Math.floor(seconds / 60 % 60); @@ -15945,18 +15740,7 @@ function formatTime(seconds) { exports['default'] = formatTime; module.exports = exports['default']; -},{}],115:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -/** - * Get the next unique ID - * - * @return {String} - * @function newGUID - */ -exports.newGUID = newGUID; +},{}],111:[function(_dereq_,module,exports){ /** * @file guid.js * @@ -15964,24 +15748,36 @@ exports.newGUID = newGUID; * @type {Number} * @private */ +"use strict"; + +exports.__esModule = true; +exports.newGUID = newGUID; var _guid = 1; + +/** + * Get the next unique ID + * + * @return {String} + * @function newGUID + */ + function newGUID() { return _guid++; } -},{}],116:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],112:[function(_dereq_,module,exports){ /** * @file log.js */ +'use strict'; -var _window = _dereq_('global/window'); +exports.__esModule = true; -var _window2 = _interopRequireWildcard(_window); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Log plain debug messages @@ -16027,10 +15823,10 @@ function _logType(type, args) { // in the function makes it easier to test cases where console doesn't exist var noop = function noop() {}; - var console = _window2['default'].console || { - log: noop, - warn: noop, - error: noop + var console = _globalWindow2['default']['console'] || { + 'log': noop, + 'warn': noop, + 'error': noop }; if (type) { @@ -16059,30 +15855,20 @@ function _logType(type, args) { exports['default'] = log; module.exports = exports['default']; -},{"global/window":2}],117:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; - -/** - * Merge one or more options objects, recursively merging **only** - * plain object properties. Previously `deepMerge`. - * - * @param {...Object} source One or more objects to merge - * @returns {Object} a new object that is the union of all - * provided objects - * @function mergeOptions - */ -exports['default'] = mergeOptions; +},{"global/window":2}],113:[function(_dereq_,module,exports){ /** * @file merge-options.js */ +'use strict'; -var _merge = _dereq_('lodash-compat/object/merge'); +exports.__esModule = true; +exports['default'] = mergeOptions; -var _merge2 = _interopRequireWildcard(_merge); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); function isPlain(obj) { return !!obj && typeof obj === 'object' && obj.toString() === '[object Object]' && obj.constructor === Object; @@ -16109,6 +15895,17 @@ var customizer = function customizer(destination, source) { return mergeOptions(source); } }; + +/** + * Merge one or more options objects, recursively merging **only** + * plain object properties. Previously `deepMerge`. + * + * @param {...Object} source One or more objects to merge + * @returns {Object} a new object that is the union of all + * provided objects + * @function mergeOptions + */ + function mergeOptions() { // contruct the call dynamically to handle the variable number of // objects to merge @@ -16121,7 +15918,7 @@ function mergeOptions() { // customize conflict resolution to match our historical merge behavior args.push(customizer); - _merge2['default'].apply(null, args); + _lodashCompatObjectMerge2['default'].apply(null, args); // return the mutated result object return args[0]; @@ -16129,19 +15926,19 @@ function mergeOptions() { module.exports = exports['default']; -},{"lodash-compat/object/merge":40}],118:[function(_dereq_,module,exports){ +},{"lodash-compat/object/merge":37}],114:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); var createStyleElement = function createStyleElement(className) { - var style = _document2['default'].createElement('style'); + var style = _globalDocument2['default'].createElement('style'); style.className = className; return style; @@ -16157,10 +15954,7 @@ var setTextContent = function setTextContent(el, content) { }; exports.setTextContent = setTextContent; -},{"global/document":1}],119:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"global/document":1}],115:[function(_dereq_,module,exports){ /** * @file time-ranges.js * @@ -16175,10 +15969,13 @@ exports.__esModule = true; * @private * @method createTimeRange */ +'use strict'; + +exports.__esModule = true; exports.createTimeRange = createTimeRange; -function createTimeRange(start, end) { - if (start === undefined && end === undefined) { +function createTimeRange(_start, _end) { + if (_start === undefined && _end === undefined) { return { length: 0, start: function start() { @@ -16191,39 +15988,16 @@ function createTimeRange(start, end) { } return { length: 1, - start: (function (_start) { - function start() { - return _start.apply(this, arguments); - } - - start.toString = function () { - return _start.toString(); - }; - - return start; - })(function () { - return start; - }), - end: (function (_end) { - function end() { - return _end.apply(this, arguments); - } - - end.toString = function () { - return _end.toString(); - }; - - return end; - })(function () { - return end; - }) + start: function start() { + return _start; + }, + end: function end() { + return _end; + } }; } -},{}],120:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; +},{}],116:[function(_dereq_,module,exports){ /** * @file to-title-case.js * @@ -16234,6 +16008,9 @@ exports.__esModule = true; * @private * @method toTitleCase */ +"use strict"; + +exports.__esModule = true; function toTitleCase(string) { return string.charAt(0).toUpperCase() + string.slice(1); } @@ -16241,19 +16018,19 @@ function toTitleCase(string) { exports["default"] = toTitleCase; module.exports = exports["default"]; -},{}],121:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],117:[function(_dereq_,module,exports){ /** * @file url.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Resolve and parse the elements of a URL @@ -16266,7 +16043,7 @@ var parseUrl = function parseUrl(url) { var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL - var a = _document2['default'].createElement('a'); + var a = _globalDocument2['default'].createElement('a'); a.href = url; // IE8 (and 9?) Fix @@ -16275,12 +16052,12 @@ var parseUrl = function parseUrl(url) { var addToBody = a.host === '' && a.protocol !== 'file:'; var div = undefined; if (addToBody) { - div = _document2['default'].createElement('div'); + div = _globalDocument2['default'].createElement('div'); div.innerHTML = ''; a = div.firstChild; // prevent the div from affecting layout div.setAttribute('style', 'display:none; position:absolute;'); - _document2['default'].body.appendChild(div); + _globalDocument2['default'].body.appendChild(div); } // Copy the specific URL properties to a new object @@ -16301,7 +16078,7 @@ var parseUrl = function parseUrl(url) { } if (addToBody) { - _document2['default'].body.removeChild(div); + _globalDocument2['default'].body.removeChild(div); } return details; @@ -16321,7 +16098,7 @@ var getAbsoluteURL = function getAbsoluteURL(url) { // Check if absolute URL if (!url.match(/^https?:\/\//)) { // Convert to absolute URL. Flash hosted off-site needs an absolute URL. - var div = _document2['default'].createElement('div'); + var div = _globalDocument2['default'].createElement('div'); div.innerHTML = 'x'; url = div.firstChild.href; } @@ -16351,113 +16128,115 @@ var getFileExtension = function getFileExtension(path) { }; exports.getFileExtension = getFileExtension; -},{"global/document":1}],122:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"global/document":1}],118:[function(_dereq_,module,exports){ /** * @file video.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +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; } } -var _import = _dereq_('./setup'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var setup = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/stylesheet.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var stylesheet = _interopRequireWildcard(_import2); +var _setup = _dereq_('./setup'); -var _Component = _dereq_('./component'); +var setup = _interopRequireWildcard(_setup); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _EventTarget = _dereq_('./event-target'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/events.js'); +var _component2 = _interopRequireDefault(_component); -var Events = _interopRequireWildcard(_import3); +var _eventTarget = _dereq_('./event-target'); -var _Player = _dereq_('./player'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _Player2 = _interopRequireWildcard(_Player); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _plugin = _dereq_('./plugins.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _plugin2 = _interopRequireWildcard(_plugin); +var _player = _dereq_('./player'); -var _mergeOptions = _dereq_('../../src/js/utils/merge-options.js'); +var _player2 = _interopRequireDefault(_player); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _pluginsJs = _dereq_('./plugins.js'); -var _import4 = _dereq_('./utils/fn.js'); +var _pluginsJs2 = _interopRequireDefault(_pluginsJs); -var Fn = _interopRequireWildcard(_import4); +var _srcJsUtilsMergeOptionsJs = _dereq_('../../src/js/utils/merge-options.js'); -var _assign = _dereq_('object.assign'); +var _srcJsUtilsMergeOptionsJs2 = _interopRequireDefault(_srcJsUtilsMergeOptionsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _formatTime = _dereq_('./utils/format-time.js'); +var _objectAssign = _dereq_('object.assign'); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _objectAssign2 = _interopRequireDefault(_objectAssign); -var _log = _dereq_('./utils/log.js'); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _log2 = _interopRequireWildcard(_log); +var _utilsFormatTimeJs = _dereq_('./utils/format-time.js'); -var _xhr = _dereq_('./xhr.js'); +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); -var _xhr2 = _interopRequireWildcard(_xhr); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import5 = _dereq_('./utils/dom.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var Dom = _interopRequireWildcard(_import5); +var _xhrJs = _dereq_('./xhr.js'); -var _import6 = _dereq_('./utils/browser.js'); +var _xhrJs2 = _interopRequireDefault(_xhrJs); -var browser = _interopRequireWildcard(_import6); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import7 = _dereq_('./utils/url.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Url = _interopRequireWildcard(_import7); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _extendsFn = _dereq_('./extends.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _extendsFn2 = _interopRequireWildcard(_extendsFn); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _merge2 = _dereq_('lodash-compat/object/merge'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _merge3 = _interopRequireWildcard(_merge2); +var _extendsJs = _dereq_('./extends.js'); -var _createDeprecationProxy = _dereq_('./utils/create-deprecation-proxy.js'); +var _extendsJs2 = _interopRequireDefault(_extendsJs); -var _createDeprecationProxy2 = _interopRequireWildcard(_createDeprecationProxy); +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); + +var _utilsCreateDeprecationProxyJs = _dereq_('./utils/create-deprecation-proxy.js'); + +var _utilsCreateDeprecationProxyJs2 = _interopRequireDefault(_utilsCreateDeprecationProxyJs); // Include the built-in techs -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); -var _Flash = _dereq_('./tech/flash.js'); +var _techFlashJs = _dereq_('./tech/flash.js'); -var _Flash2 = _interopRequireWildcard(_Flash); +var _techFlashJs2 = _interopRequireDefault(_techFlashJs); // HTML5 Element Shim for IE8 if (typeof HTMLVideoElement === 'undefined') { - _document2['default'].createElement('video'); - _document2['default'].createElement('audio'); - _document2['default'].createElement('track'); + _globalDocument2['default'].createElement('video'); + _globalDocument2['default'].createElement('audio'); + _globalDocument2['default'].createElement('track'); } /** @@ -16475,17 +16254,7 @@ if (typeof HTMLVideoElement === 'undefined') { * @mixes videojs * @method videojs */ -var videojs = (function (_videojs) { - function videojs(_x, _x2, _x3) { - return _videojs.apply(this, arguments); - } - - videojs.toString = function () { - return _videojs.toString(); - }; - - return videojs; -})(function (id, options, ready) { +var videojs = function videojs(id, options, ready) { var tag; // Element of ID // Allow for element or ID to be passed in @@ -16502,7 +16271,7 @@ var videojs = (function (_videojs) { // If options or ready funtion are passed, warn if (options) { - _log2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); + _utilsLogJs2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); } if (ready) { @@ -16513,13 +16282,13 @@ var videojs = (function (_videojs) { // Otherwise get element for ID } else { - tag = Dom.getEl(id); - } + tag = Dom.getEl(id); + } // ID is a media element } else { - tag = id; - } + tag = id; + } // Check for a useable element if (!tag || !tag.nodeName) { @@ -16529,12 +16298,12 @@ var videojs = (function (_videojs) { // Element may have a player attr referring to an already created player instance. // If not, set up a new player and return the instance. - return tag.player || new _Player2['default'](tag, options, ready); -}); + return tag['player'] || new _player2['default'](tag, options, ready); +}; // Add default styles var style = stylesheet.createStyleElement('vjs-styles-defaults'); -var head = _document2['default'].querySelector('head'); +var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(style, head.firstChild); stylesheet.setTextContent(style, '\n .video-js {\n width: 300px;\n height: 150px;\n'); @@ -16547,7 +16316,7 @@ setup.autoSetupTimeout(1, videojs); * * @type {String} */ -videojs.VERSION = '5.0.0-rc.59'; +videojs.VERSION = '5.0.0-rc.72'; /** * The global options object. These are the settings that take effect @@ -16560,7 +16329,7 @@ videojs.VERSION = '5.0.0-rc.59'; * * @type {Object} */ -videojs.options = _Player2['default'].prototype.options_; +videojs.options = _player2['default'].prototype.options_; /** * Get an object with the currently created players, keyed by player ID @@ -16570,7 +16339,7 @@ videojs.options = _Player2['default'].prototype.options_; * @method getPlayers */ videojs.getPlayers = function () { - return _Player2['default'].players; + return _player2['default'].players; }; /** @@ -16580,7 +16349,7 @@ videojs.getPlayers = function () { * @memberOf videojs * @property {Object|Proxy} players */ -videojs.players = _createDeprecationProxy2['default'](_Player2['default'].players, { +videojs.players = _utilsCreateDeprecationProxyJs2['default'](_player2['default'].players, { get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead', set: 'Modification of videojs.players is deprecated' }); @@ -16597,7 +16366,7 @@ videojs.players = _createDeprecationProxy2['default'](_Player2['default'].player * @mixes videojs * @method getComponent */ -videojs.getComponent = _Component2['default'].getComponent; +videojs.getComponent = _component2['default'].getComponent; /** * Register a component so it can referred to by name @@ -16625,7 +16394,7 @@ videojs.getComponent = _Component2['default'].getComponent; * @mixes videojs * @method registerComponent */ -videojs.registerComponent = _Component2['default'].registerComponent; +videojs.registerComponent = _component2['default'].registerComponent; /** * A suite of browser and device tests @@ -16678,7 +16447,7 @@ videojs.TOUCH_ENABLED = browser.TOUCH_ENABLED; * @mixes videojs * @method extends */ -videojs['extends'] = _extendsFn2['default']; +videojs['extends'] = _extendsJs2['default']; /** * Merge two options objects recursively @@ -16713,7 +16482,7 @@ videojs['extends'] = _extendsFn2['default']; * @mixes videojs * @method mergeOptions */ -videojs.mergeOptions = _mergeOptions2['default']; +videojs.mergeOptions = _srcJsUtilsMergeOptionsJs2['default']; /** * Change the context (this) of a function @@ -16777,7 +16546,7 @@ videojs.bind = Fn.bind; * @mixes videojs * @method plugin */ -videojs.plugin = _plugin2['default']; +videojs.plugin = _pluginsJs2['default']; /** * Adding languages so that they're available to all players. @@ -16795,7 +16564,7 @@ videojs.addLanguage = function (code, data) { var _merge; code = ('' + code).toLowerCase(); - return _merge3['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; + return _lodashCompatObjectMerge2['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; }; /** @@ -16803,7 +16572,7 @@ videojs.addLanguage = function (code, data) { * * @param {...Object} messages One or more messages to log */ -videojs.log = _log2['default']; +videojs.log = _utilsLogJs2['default']; /** * Creates an emulated TimeRange object. @@ -16813,7 +16582,7 @@ videojs.log = _log2['default']; * @return {Object} Fake TimeRange object * @method createTimeRange */ -videojs.createTimeRange = _createTimeRange.createTimeRange; +videojs.createTimeRange = _utilsTimeRangesJs.createTimeRange; /** * Format seconds as a time string, H:MM:SS or M:SS @@ -16825,7 +16594,7 @@ videojs.createTimeRange = _createTimeRange.createTimeRange; * @return {String} Time formatted as H:MM:SS or M:SS * @method formatTime */ -videojs.formatTime = _formatTime2['default']; +videojs.formatTime = _utilsFormatTimeJs2['default']; /** * Simple http request for retrieving external files (e.g. text tracks) @@ -16856,7 +16625,7 @@ videojs.formatTime = _formatTime2['default']; * @param {Function} callback The callback function * @returns {Object} The request */ -videojs.xhr = _xhr2['default']; +videojs.xhr = _xhrJs2['default']; /** * Resolve and parse the elements of a URL @@ -16872,7 +16641,7 @@ videojs.parseUrl = Url.parseUrl; * * @type {Function} */ -videojs.EventTarget = _EventTarget2['default']; +videojs.EventTarget = _eventTarget2['default']; /** * Add an event listener to element @@ -16942,44 +16711,46 @@ videojs.trigger = Events.trigger; * still support requirejs and browserify. This also needs to be closure * compiler compatible, so string keys are used. */ -if (typeof define === 'function' && define.amd) { +if (typeof define === 'function' && define['amd']) { define('videojs', [], function () { return videojs; }); // checking that module is an object too because of umdjs/umd#35 } else if (typeof exports === 'object' && typeof module === 'object') { - module.exports = videojs; -} + module['exports'] = videojs; + } exports['default'] = videojs; module.exports = exports['default']; -},{"../../src/js/utils/merge-options.js":117,"./component":52,"./event-target":83,"./extends.js":84,"./player":91,"./plugins.js":92,"./setup":94,"./tech/flash.js":97,"./tech/html5.js":98,"./utils/browser.js":108,"./utils/create-deprecation-proxy.js":110,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/format-time.js":114,"./utils/log.js":116,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/url.js":121,"./xhr.js":123,"global/document":1,"lodash-compat/object/merge":40,"object.assign":44}],123:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../../src/js/utils/merge-options.js":113,"./component":48,"./event-target":79,"./extends.js":80,"./player":87,"./plugins.js":88,"./setup":90,"./tech/flash.js":93,"./tech/html5.js":94,"./utils/browser.js":104,"./utils/create-deprecation-proxy.js":106,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/format-time.js":110,"./utils/log.js":112,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/url.js":117,"./xhr.js":119,"global/document":1,"lodash-compat/object/merge":37,"object.assign":40}],119:[function(_dereq_,module,exports){ /** * @file xhr.js */ +'use strict'; -var _import = _dereq_('./utils/url.js'); +exports.__esModule = true; -var Url = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log = _dereq_('./utils/log.js'); +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; } } -var _log2 = _interopRequireWildcard(_log); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _window = _dereq_('global/window'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /* * Simple http request for retrieving external files (e.g. text tracks) @@ -17020,26 +16791,26 @@ var xhr = function xhr(options, callback) { } // Merge with default options - options = _mergeOptions2['default']({ + options = _utilsMergeOptionsJs2['default']({ method: 'GET', timeout: 45 * 1000 }, options); callback = callback || function () {}; - var XHR = _window2['default'].XMLHttpRequest; + var XHR = _globalWindow2['default'].XMLHttpRequest; if (typeof XHR === 'undefined') { // Shim XMLHttpRequest for older IEs XHR = function () { try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {} throw new Error('This browser does not support XMLHttpRequest.'); }; @@ -17050,18 +16821,18 @@ var xhr = function xhr(options, callback) { request.uri = options.uri; var urlInfo = Url.parseUrl(options.uri); - var winLoc = _window2['default'].location; + var winLoc = _globalWindow2['default'].location; var successHandler = function successHandler() { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); callback(null, request, request.response || request.responseText); }; var errorHandler = function errorHandler(err) { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); if (!err || typeof err === 'string') { - err = new Error(err); + err = new Error(err || 'XHR Failed with a response of: ' + (request && (request.response || request.responseText))); } callback(err, request); @@ -17074,8 +16845,8 @@ var xhr = function xhr(options, callback) { // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available // 'withCredentials' is only available in XMLHTTPRequest2 // Also XDomainRequest has a lot of gotchas, so only use if cross domain - if (crossOrigin && _window2['default'].XDomainRequest && !('withCredentials' in request)) { - request = new _window2['default'].XDomainRequest(); + if (crossOrigin && _globalWindow2['default'].XDomainRequest && !('withCredentials' in request)) { + request = new _globalWindow2['default'].XDomainRequest(); request.onload = successHandler; request.onerror = errorHandler; // These blank handlers need to be set to fix ie9 @@ -17085,33 +16856,33 @@ var xhr = function xhr(options, callback) { // XMLHTTPRequest } else { - (function () { - var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; + (function () { + var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.timedout) { - return errorHandler('timeout'); - } + request.onreadystatechange = function () { + if (request.readyState === 4) { + if (request.timedout) { + return errorHandler('timeout'); + } - if (request.status === 200 || fileUrl && request.status === 0) { - successHandler(); - } else { - errorHandler(); + if (request.status === 200 || fileUrl && request.status === 0) { + successHandler(); + } else { + errorHandler(); + } } + }; + + if (options.timeout) { + abortTimeout = _globalWindow2['default'].setTimeout(function () { + if (request.readyState !== 4) { + request.timedout = true; + request.abort(); + } + }, options.timeout); } - }; - - if (options.timeout) { - abortTimeout = _window2['default'].setTimeout(function () { - if (request.readyState !== 4) { - request.timedout = true; - request.abort(); - } - }, options.timeout); - } - })(); - } + })(); + } // open the connection try { @@ -17143,7 +16914,7 @@ var xhr = function xhr(options, callback) { exports['default'] = xhr; module.exports = exports['default']; -},{"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/url.js":121,"global/window":2}]},{},[122])(122) +},{"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/url.js":117,"global/window":2}]},{},[118])(118) }); diff --git a/node_modules/video.js/dist/video.js.map b/node_modules/video.js/dist/video.js.map index 79b461f..3347e1f 100644 --- a/node_modules/video.js/dist/video.js.map +++ b/node_modules/video.js/dist/video.js.map @@ -11,11 +11,9 @@ "node_modules/lodash-compat/internal/baseCopy.js", "node_modules/lodash-compat/internal/baseFor.js", "node_modules/lodash-compat/internal/baseForIn.js", - "node_modules/lodash-compat/internal/baseIsFunction.js", "node_modules/lodash-compat/internal/baseMerge.js", "node_modules/lodash-compat/internal/baseMergeDeep.js", "node_modules/lodash-compat/internal/baseProperty.js", - "node_modules/lodash-compat/internal/baseToString.js", "node_modules/lodash-compat/internal/bindCallback.js", "node_modules/lodash-compat/internal/createAssigner.js", "node_modules/lodash-compat/internal/createBaseFor.js", @@ -27,7 +25,6 @@ "node_modules/lodash-compat/internal/isIterateeCall.js", "node_modules/lodash-compat/internal/isLength.js", "node_modules/lodash-compat/internal/isObjectLike.js", - "node_modules/lodash-compat/internal/shimIsPlainObject.js", "node_modules/lodash-compat/internal/shimKeys.js", "node_modules/lodash-compat/internal/toObject.js", "node_modules/lodash-compat/lang/isArguments.js", @@ -42,7 +39,6 @@ "node_modules/lodash-compat/object/keys.js", "node_modules/lodash-compat/object/keysIn.js", "node_modules/lodash-compat/object/merge.js", - "node_modules/lodash-compat/string/escapeRegExp.js", "node_modules/lodash-compat/support.js", "node_modules/lodash-compat/utility/identity.js", "node_modules/object.assign/index.js", @@ -127,59 +123,55 @@ "src/js/xhr.js" ], "names": [], - "mappings": "AAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACTA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;uBCXmB,aAAa;;;;yBACV,gBAAgB;;;;;;;;;;;;;;IAWhC,aAAa;AAEN,WAFP,aAAa,CAEL,MAAM,EAAE,OAAO,EAAE;0BAFzB,aAAa;;AAGf,uBAAM,MAAM,EAAE,OAAO,CAAC,CAAC;GACxB;;YA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", + "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(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 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n", + "/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n", "/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n", "var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n", "var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n", - "/**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\nfunction baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n}\n\nmodule.exports = baseIsFunction;\n", - "var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? null : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n", - "var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n", + "var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n", + "var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n", "var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n", - "/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n}\n\nmodule.exports = baseToString;\n", "var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n", - "var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n", + "var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n", "var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n", "var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n", "var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n", "/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n", - "/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n", + "/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n", "var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n", - "/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", + "/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", "/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", - "var baseForIn = require('./baseForIn'),\n isArguments = require('../lang/isArguments'),\n isHostObject = require('./isHostObject'),\n isObjectLike = require('./isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * A fallback implementation of `_.isPlainObject` which checks if `value`\n * is an object created by the `Object` constructor or has a `[[Prototype]]`\n * of `null`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\nfunction shimIsPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||\n (!hasOwnProperty.call(value, 'constructor') &&\n (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||\n (!support.argsTag && isArguments(value))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = shimIsPlainObject;\n", "var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n", "var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n", - "var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;\n}\n// Fallback for environments without a `toStringTag` for `arguments` objects.\nif (!support.argsTag) {\n isArguments = function(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n}\n\nmodule.exports = isArguments;\n", - "var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n", - "var baseIsFunction = require('../internal/baseIsFunction'),\n getNative = require('../internal/getNative');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar Uint8Array = getNative(global, 'Uint8Array');\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nvar isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return objToString.call(value) == funcTag;\n};\n\nmodule.exports = isFunction;\n", - "var escapeRegExp = require('../string/escapeRegExp'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n escapeRegExp(fnToString.call(hasOwnProperty))\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (objToString.call(value) == funcTag) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n", + "var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n", + "var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n", + "var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n", + "var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n", "/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", - "var getNative = require('../internal/getNative'),\n isArguments = require('./isArguments'),\n shimIsPlainObject = require('../internal/shimIsPlainObject'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar getPrototypeOf = getNative(Object, 'getPrototypeOf');\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nvar isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) {\n return false;\n }\n var valueOf = getNative(value, 'valueOf'),\n objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n return objProto\n ? (value == objProto || getPrototypeOf(value) == objProto)\n : shimIsPlainObject(value);\n};\n\nmodule.exports = isPlainObject;\n", - "var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n", - "var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n", + "var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n", + "var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n", + "var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n", "var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n", - "var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? null : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n", - "var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it is iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n", - "var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n", - "var baseToString = require('../internal/baseToString');\n\n/**\n * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).\n * In addition to special characters the forward slash is escaped to allow for\n * easier `eval` use and `Function` compilation.\n */\nvar reRegExpChars = /[.*+?^${}()|[\\]\\/\\\\]/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n/**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\nfunction escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n", - "/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect DOM support. */\nvar document = (document = global.window) ? document.document : null;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if the `toStringTag` of `arguments` objects is resolvable\n * (all but Firefox < 4, IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.argsTag = objToString.call(arguments) == argsTag;\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nodeTag = objToString.call(document) != objectTag;\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n\n /**\n * Detect if the DOM is supported.\n *\n * @memberOf _.support\n * @type boolean\n */\n try {\n support.dom = document.createDocumentFragment().nodeType === 11;\n } catch(e) {\n support.dom = false;\n }\n}(1, 0));\n\nmodule.exports = support;\n", + "var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n", + "var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n", + "var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n", + "/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n", "/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n", - "'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar isEnumerableOn = function (obj) {\n\treturn function isEnumerable(prop) {\n\t\treturn propIsEnumerable.call(obj, prop);\n\t};\n};\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = Object(target);\n\tvar s, source, i, props;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = Object(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tprops.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source)));\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\nassignShim.shim = function shimObjectAssign() {\n\tif (Object.assign && Object.preventExtensions) {\n\t\tvar assignHasPendingExceptions = (function () {\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t}());\n\t\tif (assignHasPendingExceptions) {\n\t\t\tdelete Object.assign;\n\t\t}\n\t}\n\tif (!Object.assign) {\n\t\tdefineProperties(Object, {\n\t\t\tassign: assignShim\n\t\t});\n\t}\n\treturn Object.assign || assignShim;\n};\n\nmodule.exports = assignShim;\n\n", - "'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj });\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tforeach(keys(map), function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", + "'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar toObject = Object;\nvar push = Array.prototype.push;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tif (propIsEnumerable.call(source, syms[i])) {\n\t\t\t\t\tpush.call(props, syms[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\ndefineProperties(assignShim, {\n\tshim: function shimObjectAssign() {\n\t\tvar assignHasPendingExceptions = function () {\n\t\t\tif (!Object.assign || !Object.preventExtensions) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t};\n\t\tdefineProperties(\n\t\t\tObject,\n\t\t\t{ assign: assignShim },\n\t\t\t{ assign: assignHasPendingExceptions }\n\t\t);\n\t\treturn Object.assign || assignShim;\n\t}\n});\n\nmodule.exports = assignShim;\n", + "'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj, enumerable: false });\n /* eslint-disable no-unused-vars */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n", - "'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar ctor = object.constructor;\n\t\tvar skipConstructor = ctor && ctor.prototype === object;\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", - "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]'\n\t\t\t&& value !== null\n\t\t\t&& typeof value === 'object'\n\t\t\t&& typeof value.length === 'number'\n\t\t\t&& value.length >= 0\n\t\t\t&& toStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", + "'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$window: true,\n\t$console: true,\n\t$parent: true,\n\t$self: true,\n\t$frames: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\ttry {\n\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' && !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t} else {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", + "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n", "/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n", "/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}) {\n // Add standard Aria and Tabindex info\n props = assign({\n className: this.buildCSSClass(),\n 'role': 'button',\n 'type': 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite', // let the screen reader user know that the text of the button may change\n tabIndex: 0\n }, props);\n\n let el = super.createEl(tag, props);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick();\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n", @@ -222,24 +214,24 @@ "/**\n * @file menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from './menu.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * A button class with a popup menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuButton\n */\nclass MenuButton extends Button {\n\n constructor(player, options={}){\n super(player, options);\n\n this.update();\n\n this.on('keydown', this.handleKeyPress);\n this.el_.setAttribute('aria-haspopup', true);\n this.el_.setAttribute('role', 'button');\n }\n\n /**\n * Update menu\n *\n * @method update\n */\n update() {\n let menu = this.createMenu();\n\n if (this.menu) {\n this.removeChild(this.menu);\n }\n\n this.menu = menu;\n this.addChild(menu);\n\n /**\n * Track the state of the menu button\n *\n * @type {Boolean}\n * @private\n */\n this.buttonPressed_ = false;\n\n if (this.items && this.items.length === 0) {\n this.hide();\n } else if (this.items && this.items.length > 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n", "/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc \n * @return {Element}\n * @method createEl\n */\n createEl(type, props) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props));\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n", "/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n", - "/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n plugins[name].playerOptions = playerOptionsCopy;\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the native controls are used\n *\n * @private\n * @method handleTechUseNativeControls\n */\n handleTechUseNativeControls() {\n this.usingNativeControls(true);\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n this.error(this.tech.error().code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i\n * \n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n this.usingNativeControls(this.techGet('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n let error = this.tech.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, this.el_.vjs_getProperty('buffered'));\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n const msg = 'FLASH: '+err;\n\n if (err === 'srcnotfound') {\n tech.trigger('error', { code: 4, message: msg });\n\n // errors we haven't categorized into the media errors\n } else {\n tech.trigger('error', msg);\n }\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n", - "/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n", + "/**\n * @file flash.js\n * VideoJS-SWF - Custom Flash Player with HTML5-ish API\n * https://github.com/zencoder/video-js-swf\n * Not using setupTriggers. Using global onEvent func to distribute events\n */\n\nimport Tech from './tech';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport { createTimeRange } from '../utils/time-ranges.js';\nimport FlashRtmpDecorator from './flash-rtmp';\nimport Component from '../component';\nimport window from 'global/window';\nimport assign from 'object.assign';\n\nlet navigator = window.navigator;\n/**\n * Flash Media Controller - Wrapper for fallback SWF API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Flash\n */\nclass Flash extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n // Set the source when ready\n if (options.source) {\n this.ready(function(){\n this.setSource(options.source);\n }, true);\n }\n\n // Having issues with Flash reloading on certain page actions (hide/resize/fullscreen) in certain browsers\n // This allows resetting the playhead when we catch the reload\n if (options.startTime) {\n this.ready(function(){\n this.load();\n this.play();\n this.currentTime(options.startTime);\n }, true);\n }\n\n // Add global window functions that the swf expects\n // A 4.x workflow we weren't able to solve for in 5.0\n // because of the need to hard code these functions\n // into the swf for security reasons\n window.videojs = window.videojs || {};\n window.videojs.Flash = window.videojs.Flash || {};\n window.videojs.Flash.onReady = Flash.onReady;\n window.videojs.Flash.onEvent = Flash.onEvent;\n window.videojs.Flash.onError = Flash.onError;\n\n this.on('seeked', function() {\n this.lastSeekTarget_ = undefined;\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let options = this.options_;\n\n // Generate ID for swf object\n let objId = options.techId;\n\n // Merge default flashvars with ones passed in to init\n let flashVars = assign({\n\n // SWF Callback Functions\n 'readyFunction': 'videojs.Flash.onReady',\n 'eventProxyFunction': 'videojs.Flash.onEvent',\n 'errorEventProxyFunction': 'videojs.Flash.onError',\n\n // Player Settings\n 'autoplay': options.autoplay,\n 'preload': options.preload,\n 'loop': options.loop,\n 'muted': options.muted\n\n }, options.flashVars);\n\n // Merge default parames with ones passed in\n let params = assign({\n 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance\n 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading\n }, options.params);\n\n // Merge default attributes with ones passed in\n let attributes = assign({\n 'id': objId,\n 'name': objId, // Both ID and Name needed or swf to identify itself\n 'class': 'vjs-tech'\n }, options.attributes);\n\n this.el_ = Flash.embed(options.swf, flashVars, params, attributes);\n this.el_.tech = this;\n\n return this.el_;\n }\n\n /**\n * Play for flash tech\n *\n * @method play\n */\n play() {\n if (this.ended()) {\n this.setCurrentTime(0);\n }\n this.el_.vjs_play();\n }\n\n /**\n * Pause for flash tech\n *\n * @method pause\n */\n pause() {\n this.el_.vjs_pause();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.currentSrc();\n }\n\n // Setting src through `src` not `setSrc` will be deprecated\n return this.setSrc(src);\n }\n\n /**\n * Set video\n *\n * @param {Object=} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n // Make sure source URL is absolute.\n src = Url.getAbsoluteURL(src);\n this.el_.vjs_src(src);\n\n // Currently the SWF doesn't autoplay if you load a source later.\n // e.g. Load player w/ no source, wait 2s, set src.\n if (this.autoplay()) {\n var tech = this;\n this.setTimeout(function(){ tech.play(); }, 0);\n }\n }\n\n /**\n * Returns true if the tech is currently seeking.\n * @return {boolean} true if seeking\n */\n seeking() {\n return this.lastSeekTarget_ !== undefined;\n }\n\n /**\n * Set current time\n *\n * @param {Number} time Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(time) {\n let seekable = this.seekable();\n if (seekable.length) {\n // clamp to the current seekable range\n time = time > seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n", + "/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n", "/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let tt = this.textTracks();\n let i = tt.length;\n while(i--) {\n this.removeRemoteTextTrack(tt[i]);\n }\n\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n", + "/**\n * @file tech.js\n * Media Technology Controller - Base class for media playback\n * technology controllers like Flash and HTML5\n */\n\nimport Component from '../component';\nimport TextTrack from '../tracks/text-track';\nimport TextTrackList from '../tracks/text-track-list';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport { createTimeRange } from '../utils/time-ranges.js';\nimport { bufferedPercent } from '../utils/buffer.js';\nimport MediaError from '../media-error.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Base class for media (HTML5 Video, Flash) controllers\n *\n * @param {Object=} options Options object\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Tech\n */\nclass Tech extends Component {\n\n constructor(options={}, ready=function(){}){\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n super(null, options, ready);\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n this.hasStarted_ = false;\n this.on('playing', function() {\n this.hasStarted_ = true;\n });\n this.on('loadstart', function() {\n this.hasStarted_ = false;\n });\n\n this.textTracks_ = options.textTracks;\n\n // Manually track progress in cases where the browser/flash player doesn't report it.\n if (!this.featuresProgressEvents) {\n this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n if (!this.featuresTimeupdateEvents) {\n this.manualTimeUpdatesOn();\n }\n\n this.initControlsListeners();\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n this.featuresNativeTextTracks = false;\n }\n\n if (!this.featuresNativeTextTracks) {\n this.emulateTextTracks();\n }\n\n this.initTextTrackListeners();\n\n // Turn on component tap events\n this.emitTapEvents();\n }\n\n /**\n * Set up click and touch listeners for the playback element\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold on\n * any controls will still keep the user active\n *\n * @method initControlsListeners\n */\n initControlsListeners() {\n // if we're loading the playback object after it has started loading or playing the\n // video (often with autoplay on) then the loadstart event has already fired and we\n // need to fire it manually because many things rely on it.\n // Long term we might consider how we would do this for other events like 'canplay'\n // that may also have fired.\n this.ready(function(){\n if (this.networkState && this.networkState() > 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let textTracks = this.textTracks();\n\n if (textTracks) {\n let i = textTracks.length;\n while(i--) {\n this.removeRemoteTextTrack(textTracks[i]);\n }\n }\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * When invoked without an argument, returns a MediaError object\n * representing the current error state of the player or null if\n * there is no error. When invoked with an argument, set the current\n * error state of the player.\n * @param {MediaError=} err Optional an error object\n * @return {MediaError} the current error object or null\n * @method error\n */\n error(err) {\n if (err !== undefined) {\n if (err instanceof MediaError) {\n this.error_ = err;\n } else {\n this.error_ = new MediaError(err);\n }\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n", "/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n", "/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech && player.tech['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks \n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks \n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks \n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list \n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n // \n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n", "/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n", "/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n", "/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n", "/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n", - "/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err);\n }\n\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n", - "/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n", + "/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n", + "/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n", "/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n", "import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n", "/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // Not remembering why we were checking for dash\n // but using setAttribute means you have to use getAttribute\n\n // The check for dash checks for the aria- * attributes, like aria-label, aria-valuemin.\n // The additional check for \"role\" is because the default method for adding attributes does not\n // add the attribute \"role\". My guess is because it's not a valid attribute in some namespaces, although\n // browsers handle the attribute just fine. The W3C allows for aria- * attributes to be used in pre-HTML5 docs.\n // http://www.w3.org/TR/wai-aria-primer/#ariahtml. Using setAttribute gets around this problem.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n", @@ -254,6 +246,6 @@ "/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n", "/**\n * @file url.js\n */\nimport document from 'global/document';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n", "/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\n\nimport assign from 'object.assign';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport xhr from './xhr.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendsFn from './extends.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = stylesheet.createStyleElement('vjs-styles-defaults');\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);\nstylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n`);\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extends' doc for more info)\n * var MySpecialButton = videojs.extends(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extends` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extends(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extends\n */\nvideojs.extends = extendsFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = createTimeRange;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Simple http request for retrieving external files (e.g. text tracks)\n *\n * ##### Example\n *\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n *\n *\n * API is modeled after the Raynos/xhr.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @returns {Object} The request\n */\nvideojs.xhr = xhr;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n", - "/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err);\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n" + "/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err || 'XHR Failed with a response of: '+(request && (request.response || request.responseText)));\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n" ] } \ No newline at end of file diff --git a/node_modules/video.js/dist/video.min.js b/node_modules/video.js/dist/video.min.js index 8a93aec..fcf8146 100644 --- a/node_modules/video.js/dist/video.min.js +++ b/node_modules/video.js/dist/video.min.js @@ -1,6 +1,6 @@ /** * @license - * Video.js 5.0.0-rc.59 + * Video.js 5.0.0-rc.72 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * @@ -9,15 +9,14 @@ * Available under Apache License Version 2.0 * */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.videojs=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g2?c[g-2]:void 0,i=g>2?c[2]:void 0,j=g>1?c[g-1]:void 0;for("function"==typeof h?(h=d(h,j,5),g-=2):(h="function"==typeof j?j:void 0,g-=h?1:0),i&&e(c[0],c[1],i)&&(h=3>g?void 0:h,g=1);++f-1&&a%1==0&&b>a}var d=/^\d+$/,e=9007199254740991;b.exports=c},{}],23:[function(a,b){function c(a,b,c){if(!f(c))return!1;var g=typeof b;if("number"==g?d(c)&&e(b,c.length):"string"==g&&b in c){var h=c[b];return a===a?a===h:h!==h}return!1}var d=a("./isArrayLike"),e=a("./isIndex"),f=a("../lang/isObject");b.exports=c},{"../lang/isObject":33,"./isArrayLike":20,"./isIndex":22}],24:[function(a,b){function c(a){return"number"==typeof a&&a>-1&&a%1==0&&d>=a}var d=9007199254740991;b.exports=c},{}],25:[function(a,b){function c(a){return!!a&&"object"==typeof a}b.exports=c},{}],26:[function(a,b){function c(a){var b;if(!g(a)||l.call(a)!=i||f(a)||!k.call(a,"constructor")&&(b=a.constructor,"function"==typeof b&&!(b instanceof b))||!h.argsTag&&e(a))return!1;var c;return h.ownLast?(d(a,function(a,b,d){return c=k.call(d,b),!1}),c!==!1):(d(a,function(a,b){c=b}),void 0===c||k.call(a,c))}var d=a("./baseForIn"),e=a("../lang/isArguments"),f=a("./isHostObject"),g=a("./isObjectLike"),h=a("../support"),i="[object Object]",j=Object.prototype,k=j.hasOwnProperty,l=j.toString;b.exports=c},{"../lang/isArguments":29,"../support":42,"./baseForIn":9,"./isHostObject":21,"./isObjectLike":25}],27:[function(a,b){function c(a){for(var b=i(a),c=b.length,j=c&&a.length,l=!!j&&g(j)&&(e(a)||d(a)||h(a)),m=-1,n=[];++m0,r=l.enumErrorProps&&(a===w||a instanceof Error),t=l.enumPrototypes&&g(a);++d2?arguments[2]:{};d(c(b),function(c){i(a,c,b[c],e[c])})};j.supportsDescriptors=!!h,b.exports=j},{foreach:46,"object-keys":47}],46:[function(a,b){var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString;b.exports=function(a,b,e){if("[object Function]"!==d.call(b))throw new TypeError("iterator must be a function");var f=a.length;if(f===+f)for(var g=0;f>g;g++)b.call(e,a[g],g,a);else for(var h in a)c.call(a,h)&&b.call(e,a[h],h,a)}},{}],47:[function(a,b){"use strict";var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString,e=a("./isArguments"),f=!{toString:null}.propertyIsEnumerable("toString"),g=function(){}.propertyIsEnumerable("prototype"),h=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=function(a){var b=null!==a&&"object"==typeof a,i="[object Function]"===d.call(a),j=e(a),k=b&&"[object String]"===d.call(a),l=[];if(!b&&!i&&!j)throw new TypeError("Object.keys called on a non-object");var m=g&&i;if(k&&a.length>0&&!c.call(a,0))for(var n=0;n0)for(var o=0;o=0&&"[object Function]"===c.call(a.callee)),d}},{}],49:[function(a,b){function c(a,b){var c,d=null;try{c=JSON.parse(a,b)}catch(e){d=e}return[d,c]}b.exports=c},{}],50:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-big-play-button"},b.prototype.handleClick=function(){this.player_.play()},b}(h["default"]);k.prototype.controlText_="Play Video",j["default"].registerComponent("BigPlayButton",k),c["default"]=k,b.exports=c["default"]},{"./button.js":51,"./component.js":52}],51:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component"),h=d(g),i=a("./utils/dom.js"),j=d(i),k=a("./utils/events.js"),l=d(k),m=a("./utils/fn.js"),n=d(m),o=a("global/document"),p=d(o),q=a("object.assign"),r=d(q),s=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.emitTapEvents(),this.on("tap",this.handleClick),this.on("click",this.handleClick),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur)}return f(b,a),b.prototype.createEl=function(){var b=void 0===arguments[0]?"button":arguments[0],c=void 0===arguments[1]?{}:arguments[1];c=r["default"]({className:this.buildCSSClass(),role:"button",type:"button","aria-live":"polite",tabIndex:0},c);var d=a.prototype.createEl.call(this,b,c);return this.controlTextEl_=j.createEl("span",{className:"vjs-control-text"}),d.appendChild(this.controlTextEl_),this.controlText(this.controlText_),d},b.prototype.controlText=function(a){return a?(this.controlText_=a,this.controlTextEl_.innerHTML=this.localize(this.controlText_),this):this.controlText_||"Need Text"},b.prototype.buildCSSClass=function(){return"vjs-control vjs-button "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){},b.prototype.handleFocus=function(){l.on(p["default"],"keydown",n.bind(this,this.handleKeyPress))},b.prototype.handleKeyPress=function(a){(32===a.which||13===a.which)&&(a.preventDefault(),this.handleClick())},b.prototype.handleBlur=function(){l.off(p["default"],"keydown",n.bind(this,this.handleKeyPress))},b}(h["default"]);h["default"].registerComponent("Button",s),c["default"]=s,b.exports=c["default"]},{"./component":52,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"global/document":1,"object.assign":44}],52:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")};c.__esModule=!0;var f=a("global/window"),g=d(f),h=a("./utils/dom.js"),i=d(h),j=a("./utils/fn.js"),k=d(j),l=a("./utils/guid.js"),m=d(l),n=a("./utils/events.js"),o=d(n),p=a("./utils/log.js"),q=d(p),r=a("./utils/to-title-case.js"),s=d(r),t=a("object.assign"),u=d(t),v=a("./utils/merge-options.js"),w=d(v),x=function(){function a(b,c,d){if(e(this,a),this.player_=!b&&this.play?b=this:b,this.options_=w["default"]({},this.options_),c=this.options_=w["default"](this.options_,c),this.id_=c.id||c.el&&c.el.id,!this.id_){var f=b&&b.id&&b.id()||"no_player";this.id_=""+f+"_component_"+m.newGUID()}this.name_=c.name||null,c.el?this.el_=c.el:c.createEl!==!1&&(this.el_=this.createEl()),this.children_=[],this.childIndex_={},this.childNameIndex_={},c.initChildren!==!1&&this.initChildren(),this.ready(d),c.reportTouchActivity!==!1&&this.enableTouchActivity()}return a.prototype.dispose=function(){if(this.trigger({type:"dispose",bubbles:!1}),this.children_)for(var a=this.children_.length-1;a>=0;a--)this.children_[a].dispose&&this.children_[a].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.off(),this.el_.parentNode&&this.el_.parentNode.removeChild(this.el_),i.removeElData(this.el_),this.el_=null},a.prototype.player=function(){return this.player_},a.prototype.options=function(a){return q["default"].warn("this.options() has been deprecated and will be moved to the constructor in 6.0"),a?(this.options_=w["default"](this.options_,a),this.options_):this.options_},a.prototype.el=function(){return this.el_},a.prototype.createEl=function(a,b){return i.createEl(a,b)},a.prototype.localize=function(a){var b=this.player_.language&&this.player_.language(),c=this.player_.languages&&this.player_.languages();if(!b||!c)return a;var d=c[b];if(d&&d[a])return d[a];var e=b.split("-")[0],f=c[e];return f&&f[a]?f[a]:a},a.prototype.contentEl=function(){return this.contentEl_||this.el_},a.prototype.id=function(){return this.id_},a.prototype.name=function(){return this.name_},a.prototype.children=function(){return this.children_},a.prototype.getChildById=function(a){return this.childIndex_[a]},a.prototype.getChild=function(a){return this.childNameIndex_[a]},a.prototype.addChild=function(b){var c=void 0===arguments[1]?{}:arguments[1],d=void 0,e=void 0;if("string"==typeof b){e=b,c||(c={}),c===!0&&(q["default"].warn("Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`."),c={});var f=c.componentClass||s["default"](e);c.name=e;var g=a.getComponent(f);d=new g(this.player_||this,c)}else d=b;return this.children_.push(d),"function"==typeof d.id&&(this.childIndex_[d.id()]=d),e=e||d.name&&d.name(),e&&(this.childNameIndex_[e]=d),"function"==typeof d.el&&d.el()&&this.contentEl().appendChild(d.el()),d},a.prototype.removeChild=function(a){if("string"==typeof a&&(a=this.getChild(a)),a&&this.children_){for(var b=!1,c=this.children_.length-1;c>=0;c--)if(this.children_[c]===a){b=!0,this.children_.splice(c,1);break}if(b){this.childIndex_[a.id()]=null,this.childNameIndex_[a.name()]=null;var d=a.el();d&&d.parentNode===this.contentEl()&&this.contentEl().removeChild(a.el())}}},a.prototype.initChildren=function(){var a=this,b=this.options_.children;b&&!function(){var c=a.options_,d=function(b,d){void 0!==c[b]&&(d=c[b]),d!==!1&&(d===!0&&(d={}),d.playerOptions=a.options_.playerOptions,a[b]=a.addChild(b,d))};if(Array.isArray(b))for(var e=0;e0&&(a.forEach(function(a){a.call(this)},this),this.readyQueue_=[]),this.trigger("ready")},1)},a.prototype.hasClass=function(a){return i.hasElClass(this.el_,a)},a.prototype.addClass=function(a){return i.addElClass(this.el_,a),this},a.prototype.removeClass=function(a){return i.removeElClass(this.el_,a),this},a.prototype.show=function(){return this.removeClass("vjs-hidden"),this},a.prototype.hide=function(){return this.addClass("vjs-hidden"),this},a.prototype.lockShowing=function(){return this.addClass("vjs-lock-showing"),this},a.prototype.unlockShowing=function(){return this.removeClass("vjs-lock-showing"),this},a.prototype.width=function(a,b){return this.dimension("width",a,b)},a.prototype.height=function(a,b){return this.dimension("height",a,b)},a.prototype.dimensions=function(a,b){return this.width(a,!0).height(b)},a.prototype.dimension=function(a,b,c){if(void 0!==b)return(null===b||b!==b)&&(b=0),this.el_.style[a]=-1!==(""+b).indexOf("%")||-1!==(""+b).indexOf("px")?b:"auto"===b?"":b+"px",c||this.trigger("resize"),this;if(!this.el_)return 0;var d=this.el_.style[a],e=d.indexOf("px");return-1!==e?parseInt(d.slice(0,e),10):parseInt(this.el_["offset"+s["default"](a)],10)},a.prototype.emitTapEvents=function(){var a=0,b=null,c=10,d=200,e=void 0;this.on("touchstart",function(c){1===c.touches.length&&(b=u["default"]({},c.touches[0]),a=(new Date).getTime(),e=!0)}),this.on("touchmove",function(a){if(a.touches.length>1)e=!1;else if(b){var d=a.touches[0].pageX-b.pageX,f=a.touches[0].pageY-b.pageY,g=Math.sqrt(d*d+f*f);g>c&&(e=!1)}});var f=function(){e=!1};this.on("touchleave",f),this.on("touchcancel",f),this.on("touchend",function(c){if(b=null,e===!0){var f=(new Date).getTime()-a;d>f&&(c.preventDefault(),this.trigger("tap"))}})},a.prototype.enableTouchActivity=function(){if(this.player()&&this.player().reportUserActivity){var a=k.bind(this.player(),this.player().reportUserActivity),b=void 0;this.on("touchstart",function(){a(),this.clearInterval(b),b=this.setInterval(a,250)});var c=function(){a(),this.clearInterval(b)};this.on("touchmove",a),this.on("touchend",c),this.on("touchcancel",c)}},a.prototype.setTimeout=function(a,b){a=k.bind(this,a);var c=g["default"].setTimeout(a,b),d=function(){this.clearTimeout(c)};return d.guid="vjs-timeout-"+c,this.on("dispose",d),c},a.prototype.clearTimeout=function(a){g["default"].clearTimeout(a);var b=function(){};return b.guid="vjs-timeout-"+a,this.off("dispose",b),a},a.prototype.setInterval=function(a,b){a=k.bind(this,a);var c=g["default"].setInterval(a,b),d=function(){this.clearInterval(c)};return d.guid="vjs-interval-"+c,this.on("dispose",d),c},a.prototype.clearInterval=function(a){g["default"].clearInterval(a);var b=function(){};return b.guid="vjs-interval-"+a,this.off("dispose",b),a},a.registerComponent=function(b,c){return a.components_||(a.components_={}),a.components_[b]=c,c},a.getComponent=function(b){return a.components_&&a.components_[b]?a.components_[b]:g["default"]&&g["default"].videojs&&g["default"].videojs[b]?(q["default"].warn("The "+b+" component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)"),g["default"].videojs[b]):void 0},a.extend=function(b){b=b||{},q["default"].warn("Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead");var c=b.init||b.init||this.prototype.init||this.prototype.init||function(){},d=function(){c.apply(this,arguments)};d.prototype=Object.create(this.prototype),d.prototype.constructor=d,d.extend=a.extend;for(var e in b)b.hasOwnProperty(e)&&(d.prototype[e]=b[e]);return d},a}();x.registerComponent("Component",x),c["default"]=x,b.exports=c["default"]},{"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/to-title-case.js":120,"global/window":2,"object.assign":44}],53:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("./play-toggle.js"),j=(d(i),a("./time-controls/current-time-display.js")),k=(d(j),a("./time-controls/duration-display.js")),l=(d(k),a("./time-controls/time-divider.js")),m=(d(l),a("./time-controls/remaining-time-display.js")),n=(d(m),a("./live-display.js")),o=(d(n),a("./progress-control/progress-control.js")),p=(d(o),a("./fullscreen-toggle.js")),q=(d(p),a("./volume-control/volume-control.js")),r=(d(q),a("./volume-menu-button.js")),s=(d(r),a("./mute-toggle.js")),t=(d(s),a("./text-track-controls/chapters-button.js")),u=(d(t),a("./text-track-controls/subtitles-button.js")),v=(d(u),a("./text-track-controls/captions-button.js")),w=(d(v),a("./playback-rate-menu/playback-rate-menu-button.js")),x=(d(w),a("./spacer-controls/custom-control-spacer.js")),y=(d(x),function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-control-bar"})},b}(h["default"]));y.prototype.options_={loadEvent:"play",children:["playToggle","volumeMenuButton","currentTimeDisplay","timeDivider","durationDisplay","progressControl","liveDisplay","remainingTimeDisplay","customControlSpacer","playbackRateMenuButton","muteToggle","volumeControl","chaptersButton","subtitlesButton","captionsButton","fullscreenToggle"] -},h["default"].registerComponent("ControlBar",y),c["default"]=y,b.exports=c["default"]},{"../component.js":52,"./fullscreen-toggle.js":54,"./live-display.js":55,"./mute-toggle.js":56,"./play-toggle.js":57,"./playback-rate-menu/playback-rate-menu-button.js":58,"./progress-control/progress-control.js":62,"./spacer-controls/custom-control-spacer.js":64,"./text-track-controls/captions-button.js":67,"./text-track-controls/chapters-button.js":68,"./text-track-controls/subtitles-button.js":71,"./time-controls/current-time-display.js":74,"./time-controls/duration-display.js":75,"./time-controls/remaining-time-display.js":76,"./time-controls/time-divider.js":77,"./volume-control/volume-control.js":79,"./volume-menu-button.js":81}],54:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-fullscreen-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.isFullscreen()?(this.player_.exitFullscreen(),this.controlText("Fullscreen")):(this.player_.requestFullscreen(),this.controlText("Non-Fullscreen"))},b}(h["default"]);k.prototype.controlText_="Fullscreen",j["default"].registerComponent("FullscreenToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":51,"../component.js":52}],55:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-live-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-live-display",innerHTML:''+this.localize("Stream Type")+""+this.localize("LIVE"),"aria-live":"off"}),b.appendChild(this.contentEl_),b},b}(h["default"]);h["default"].registerComponent("LiveDisplay",k),c["default"]=k,b.exports=c["default"]},{"../component":52,"../utils/dom.js":111}],56:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button"),h=d(g),i=a("../component"),j=d(i),k=a("../utils/dom.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"volumechange",this.update),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){this.update(),c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-mute-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.muted(this.player_.muted()?!1:!0)},b.prototype.update=function(){var a=this.player_.volume(),b=3;0===a||this.player_.muted()?b=0:.33>a?b=1:.67>a&&(b=2);var c=this.player_.muted()?"Unmute":"Mute",d=this.localize(c);this.controlText()!==d&&this.controlText(d);for(var e=0;4>e;e++)l.removeElClass(this.el_,"vjs-vol-"+e);l.addElClass(this.el_,"vjs-vol-"+b)},b}(h["default"]);m.prototype.controlText_="Mute",j["default"].registerComponent("MuteToggle",m),c["default"]=m,b.exports=c["default"]},{"../button":51,"../component":52,"../utils/dom.js":111}],57:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"play",this.handlePlay),this.on(c,"pause",this.handlePause)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-play-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b.prototype.handlePlay=function(){this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")},b.prototype.handlePause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")},b}(h["default"]);k.prototype.controlText_="Play",j["default"].registerComponent("PlayToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":51,"../component.js":52}],58:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-button.js"),h=d(g),i=a("../../menu/menu.js"),j=d(i),k=a("./playback-rate-menu-item.js"),l=d(k),m=a("../../component.js"),n=d(m),o=a("../../utils/dom.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.updateVisibility(),this.updateLabel(),this.on(c,"loadstart",this.updateVisibility),this.on(c,"ratechange",this.updateLabel)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this);return this.labelEl_=p.createEl("div",{className:"vjs-playback-rate-value",innerHTML:1}),b.appendChild(this.labelEl_),b},b.prototype.buildCSSClass=function(){return"vjs-playback-rate "+a.prototype.buildCSSClass.call(this)},b.prototype.createMenu=function(){var a=new j["default"](this.player()),b=this.playbackRates();if(b)for(var c=b.length-1;c>=0;c--)a.addChild(new l["default"](this.player(),{rate:b[c]+"x"}));return a},b.prototype.updateARIAAttributes=function(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},b.prototype.handleClick=function(){for(var a=this.player().playbackRate(),b=this.playbackRates(),c=b[0],d=0;da){c=b[d];break}this.player().playbackRate(c)},b.prototype.playbackRates=function(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates},b.prototype.playbackRateSupported=function(){return this.player().tech&&this.player().tech.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0},b.prototype.updateVisibility=function(){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},b.prototype.updateLabel=function(){this.playbackRateSupported()&&(this.labelEl_.innerHTML=this.player().playbackRate()+"x")},b}(h["default"]);q.prototype.controlText_="Playback Rate",n["default"].registerComponent("PlaybackRateMenuButton",q),c["default"]=q,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu-button.js":88,"../../menu/menu.js":90,"../../utils/dom.js":111,"./playback-rate-menu-item.js":59}],59:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b);var f=d.rate,g=parseFloat(f,10);d.label=f,d.selected=1===g,a.call(this,c,d),this.label=f,this.rate=g,this.on(c,"ratechange",this.update)}return f(b,a),b.prototype.handleClick=function(){a.prototype.handleClick.call(this),this.player().playbackRate(this.rate)},b.prototype.update=function(){this.selected(this.player().playbackRate()===this.rate)},b}(h["default"]);k.prototype.contentElType="button",j["default"].registerComponent("PlaybackRateMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu-item.js":89}],60:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"progress",this.update)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-load-progress",innerHTML:''+this.localize("Loaded")+": 0%"})},b.prototype.update=function(){var a=this.player_.buffered(),b=this.player_.duration(),c=this.player_.bufferedEnd(),d=this.el_.children,e=function(a,b){var c=a/b||0;return 100*(c>=1?1:c)+"%"};this.el_.style.width=e(c,b);for(var f=0;fa.length;f--)this.el_.removeChild(d[f-1])},b}(h["default"]);h["default"].registerComponent("LoadProgressBar",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111}],61:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/fn.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateDataAttr),c.ready(j.bind(this,this.updateDataAttr))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-play-progress",innerHTML:''+this.localize("Progress")+": 0%"})},b.prototype.updateDataAttr=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("data-current-time",l["default"](a,this.player_.duration()))},b}(h["default"]);h["default"].registerComponent("PlayProgressBar",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/fn.js":113,"../../utils/format-time.js":114}],62:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./seek-bar.js"),j=(d(i),function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{seekBar:{}}},h["default"].registerComponent("ProgressControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":52,"./seek-bar.js":63}],63:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../slider/slider.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./load-progress-bar.js"),l=(d(k),a("./play-progress-bar.js")),m=(d(l),a("../../utils/fn.js")),n=d(m),o=a("../../utils/format-time.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateARIAAttributes),c.ready(n.bind(this,this.updateARIAAttributes))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})},b.prototype.updateARIAAttributes=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("aria-valuenow",(100*this.getPercent()).toFixed(2)),this.el_.setAttribute("aria-valuetext",p["default"](a,this.player_.duration()))},b.prototype.getPercent=function(){var a=this.player_.currentTime()/this.player_.duration();return a>=1?1:a},b.prototype.handleMouseDown=function(b){a.prototype.handleMouseDown.call(this,b),this.player_.scrubbing(!0),this.videoWasPlaying=!this.player_.paused(),this.player_.pause()},b.prototype.handleMouseMove=function(a){var b=this.calculateDistance(a)*this.player_.duration();b===this.player_.duration()&&(b-=.1),this.player_.currentTime(b)},b.prototype.handleMouseUp=function(b){a.prototype.handleMouseUp.call(this,b),this.player_.scrubbing(!1),this.videoWasPlaying&&this.player_.play()},b.prototype.stepForward=function(){this.player_.currentTime(this.player_.currentTime()+5)},b.prototype.stepBack=function(){this.player_.currentTime(this.player_.currentTime()-5)},b}(h["default"]);q.prototype.options_={children:{loadProgressBar:{},playProgressBar:{}},barName:"playProgressBar"},q.prototype.playerEvent="timeupdate",j["default"].registerComponent("SeekBar",q),c["default"]=q,b.exports=c["default"]},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"../../utils/format-time.js":114,"./load-progress-bar.js":60,"./play-progress-bar.js":61}],64:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./spacer.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-custom-control-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,{className:this.buildCSSClass()})},b}(h["default"]);j["default"].registerComponent("CustomControlSpacer",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./spacer.js":65}],65:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:this.buildCSSClass()})},b}(h["default"]);h["default"].registerComponent("Spacer",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],66:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),d.track={kind:d.kind,player:c,label:d.kind+" settings","default":!1,mode:"disabled"},a.call(this,c,d),this.addClass("vjs-texttrack-settings")}return f(b,a),b.prototype.handleClick=function(){this.player().getChild("textTrackSettings").show()},b}(h["default"]);j["default"].registerComponent("CaptionSettingsMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-menu-item.js":73}],67:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./caption-settings-menu-item.js"),l=d(k),m=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Captions Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-captions-button "+a.prototype.buildCSSClass.call(this)},b.prototype.update=function(){var b=2;a.prototype.update.call(this),this.player().tech&&this.player().tech.featuresNativeTextTracks&&(b=1),this.items&&this.items.length>b?this.show():this.hide()},b.prototype.createItems=function(){var b=[];return this.player().tech&&this.player().tech.featuresNativeTextTracks||b.push(new l["default"](this.player_,{kind:this.kind_})),a.prototype.createItems.call(this,b)},b}(h["default"]);m.prototype.kind_="captions",m.prototype.controlText_="Captions",j["default"].registerComponent("CaptionsButton",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"./caption-settings-menu-item.js":66,"./text-track-button.js":72}],68:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./text-track-menu-item.js"),l=d(k),m=a("./chapters-track-menu-item.js"),n=d(m),o=a("../../menu/menu.js"),p=d(o),q=a("../../utils/dom.js"),r=d(q),s=a("../../utils/fn.js"),t=d(s),u=a("../../utils/to-title-case.js"),v=d(u),w=a("global/window"),x=d(w),y=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Chapters Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-chapters-button "+a.prototype.buildCSSClass.call(this)},b.prototype.createItems=function(){var a=[],b=this.player_.textTracks();if(!b)return a;for(var c=0;cd;d++){var f=a[d];if(f.kind===this.kind_){if(f.cues){b=f;break}f.mode="hidden",x["default"].setTimeout(t.bind(this,function(){this.createMenu()}),100)}}var g=this.menu;if(void 0===g&&(g=new p["default"](this.player_),g.contentEl().appendChild(r.createEl("li",{className:"vjs-menu-title",innerHTML:v["default"](this.kind_),tabIndex:-1}))),b){for(var h=b.cues,i=void 0,d=0,e=h.length;e>d;d++){i=h[d];var j=new n["default"](this.player_,{track:b,cue:i});c.push(j),g.addChild(j)}this.addChild(g)}return this.items.length>0&&this.show(),g},b}(h["default"]);y.prototype.kind_="chapters",y.prototype.controlText_="Chapters",j["default"].registerComponent("ChaptersButton",y),c["default"]=y,b.exports=c["default"]},{"../../component.js":52,"../../menu/menu.js":90,"../../utils/dom.js":111,"../../utils/fn.js":113,"../../utils/to-title-case.js":120,"./chapters-track-menu-item.js":69,"./text-track-button.js":72,"./text-track-menu-item.js":73,"global/window":2}],69:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=function(a){function b(c,d){e(this,b);var f=d.track,g=d.cue,h=c.currentTime();d.label=g.text,d.selected=g.startTime<=h&&hc;c++){var e=a[c];if(e.kind===this.track.kind&&"showing"===e.mode){b=!1;break}}this.selected(b)},b}(h["default"]);j["default"].registerComponent("OffTextTrackMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-menu-item.js":73}],71:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Subtitles Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-subtitles-button "+a.prototype.buildCSSClass.call(this)},b}(h["default"]);k.prototype.kind_="subtitles",k.prototype.controlText_="Subtitles",j["default"].registerComponent("SubtitlesButton",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":52,"./text-track-button.js":72}],72:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../menu/menu-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=a("./text-track-menu-item.js"),n=d(m),o=a("./off-text-track-menu-item.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d);var f=this.player_.textTracks();if(this.items.length<=1&&this.hide(),f){var g=l.bind(this,this.update);f.addEventListener("removetrack",g),f.addEventListener("addtrack",g),this.player_.on("dispose",function(){f.removeEventListener("removetrack",g),f.removeEventListener("addtrack",g)})}}return f(b,a),b.prototype.createItems=function(){var a=void 0===arguments[0]?[]:arguments[0];a.push(new p["default"](this.player_,{kind:this.kind_}));var b=this.player_.textTracks();if(!b)return a;for(var c=0;cCurrent Time 0:00',"aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),b=this.localize("Current Time"),c=l["default"](a,this.player_.duration());this.contentEl_.innerHTML=''+b+" "+c},b}(h["default"]);h["default"].registerComponent("CurrentTimeDisplay",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],75:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent),this.on(c,"loadedmetadata",this.updateContent)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-duration vjs-time-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-duration-display",innerHTML:''+this.localize("Duration Time")+" 0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.duration();if(a){var b=this.localize("Duration Time"),c=l["default"](a);this.contentEl_.innerHTML=''+b+" "+c}},b}(h["default"]);h["default"].registerComponent("DurationDisplay",m),c["default"]=m,b.exports=c["default"]; +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.videojs=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g2?c[g-2]:void 0,i=g>2?c[2]:void 0,j=g>1?c[g-1]:void 0;for("function"==typeof h?(h=d(h,j,5),g-=2):(h="function"==typeof j?j:void 0,g-=h?1:0),i&&e(c[0],c[1],i)&&(h=3>g?void 0:h,g=1);++f-1&&a%1==0&&b>a}var d=/^\d+$/,e=9007199254740991;b.exports=c},{}],21:[function(a,b){function c(a,b,c){if(!f(c))return!1;var g=typeof b;if("number"==g?d(c)&&e(b,c.length):"string"==g&&b in c){var h=c[b];return a===a?a===h:h!==h}return!1}var d=a("./isArrayLike"),e=a("./isIndex"),f=a("../lang/isObject");b.exports=c},{"../lang/isObject":30,"./isArrayLike":18,"./isIndex":20}],22:[function(a,b){function c(a){return"number"==typeof a&&a>-1&&a%1==0&&d>=a}var d=9007199254740991;b.exports=c},{}],23:[function(a,b){function c(a){return!!a&&"object"==typeof a}b.exports=c},{}],24:[function(a,b){function c(a){for(var b=i(a),c=b.length,j=c&&a.length,l=!!j&&g(j)&&(e(a)||d(a)||h(a)),m=-1,n=[];++m0,r=l.enumErrorProps&&(a===w||a instanceof Error),t=l.enumPrototypes&&g(a);++d2?arguments[2]:{},g=c(b);e&&(g=g.concat(Object.getOwnPropertySymbols(b))),d(g,function(c){j(a,c,b[c],f[c])})};k.supportsDescriptors=!!i,b.exports=k},{foreach:42,"object-keys":43}],42:[function(a,b){var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString;b.exports=function(a,b,e){if("[object Function]"!==d.call(b))throw new TypeError("iterator must be a function");var f=a.length;if(f===+f)for(var g=0;f>g;g++)b.call(e,a[g],g,a);else for(var h in a)c.call(a,h)&&b.call(e,a[h],h,a)}},{}],43:[function(a,b){"use strict";var c=Object.prototype.hasOwnProperty,d=Object.prototype.toString,e=Array.prototype.slice,f=a("./isArguments"),g=!{toString:null}.propertyIsEnumerable("toString"),h=function(){}.propertyIsEnumerable("prototype"),i=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],j=function(a){var b=a.constructor;return b&&b.prototype===a},k={$window:!0,$console:!0,$parent:!0,$self:!0,$frames:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0},l=function(){if("undefined"==typeof window)return!1;for(var a in window)if(!k["$"+a]&&c.call(window,a)&&null!==window[a]&&"object"==typeof window[a])try{j(window[a])}catch(b){return!0}return!1}(),m=function(a){if("undefined"==typeof window&&!l)return j(a);try{return j(a)}catch(b){return!1}},n=function(a){var b=null!==a&&"object"==typeof a,e="[object Function]"===d.call(a),j=f(a),k=b&&"[object String]"===d.call(a),l=[];if(!b&&!e&&!j)throw new TypeError("Object.keys called on a non-object");var n=h&&e;if(k&&a.length>0&&!c.call(a,0))for(var o=0;o0)for(var p=0;p=0&&"[object Function]"===c.call(a.callee)),d}},{}],45:[function(a,b){function c(a,b){var c,d=null;try{c=JSON.parse(a,b)}catch(e){d=e}return[d,c]}b.exports=c},{}],46:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-big-play-button"},b.prototype.handleClick=function(){this.player_.play()},b}(h["default"]);k.prototype.controlText_="Play Video",j["default"].registerComponent("BigPlayButton",k),c["default"]=k,b.exports=c["default"]},{"./button.js":47,"./component.js":48}],47:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component"),i=e(h),j=a("./utils/dom.js"),k=d(j),l=a("./utils/events.js"),m=d(l),n=a("./utils/fn.js"),o=d(n),p=a("global/document"),q=e(p),r=a("object.assign"),s=e(r),t=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.emitTapEvents(),this.on("tap",this.handleClick),this.on("click",this.handleClick),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur)}return g(b,a),b.prototype.createEl=function(){var b=arguments.length<=0||void 0===arguments[0]?"button":arguments[0],c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];c=s["default"]({className:this.buildCSSClass(),role:"button",type:"button","aria-live":"polite",tabIndex:0},c);var d=a.prototype.createEl.call(this,b,c);return this.controlTextEl_=k.createEl("span",{className:"vjs-control-text"}),d.appendChild(this.controlTextEl_),this.controlText(this.controlText_),d},b.prototype.controlText=function(a){return a?(this.controlText_=a,this.controlTextEl_.innerHTML=this.localize(this.controlText_),this):this.controlText_||"Need Text"},b.prototype.buildCSSClass=function(){return"vjs-control vjs-button "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){},b.prototype.handleFocus=function(){m.on(q["default"],"keydown",o.bind(this,this.handleKeyPress))},b.prototype.handleKeyPress=function(a){(32===a.which||13===a.which)&&(a.preventDefault(),this.handleClick())},b.prototype.handleBlur=function(){m.off(q["default"],"keydown",o.bind(this,this.handleKeyPress))},b}(i["default"]);i["default"].registerComponent("Button",t),c["default"]=t,b.exports=c["default"]},{"./component":48,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"global/document":1,"object.assign":40}],48:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}c.__esModule=!0;var g=a("global/window"),h=e(g),i=a("./utils/dom.js"),j=d(i),k=a("./utils/fn.js"),l=d(k),m=a("./utils/guid.js"),n=d(m),o=a("./utils/events.js"),p=d(o),q=a("./utils/log.js"),r=e(q),s=a("./utils/to-title-case.js"),t=e(s),u=a("object.assign"),v=e(u),w=a("./utils/merge-options.js"),x=e(w),y=function(){function a(b,c,d){if(f(this,a),this.player_=!b&&this.play?b=this:b,this.options_=x["default"]({},this.options_),c=this.options_=x["default"](this.options_,c),this.id_=c.id||c.el&&c.el.id,!this.id_){var e=b&&b.id&&b.id()||"no_player";this.id_=e+"_component_"+n.newGUID()}this.name_=c.name||null,c.el?this.el_=c.el:c.createEl!==!1&&(this.el_=this.createEl()),this.children_=[],this.childIndex_={},this.childNameIndex_={},c.initChildren!==!1&&this.initChildren(),this.ready(d),c.reportTouchActivity!==!1&&this.enableTouchActivity()}return a.prototype.dispose=function(){if(this.trigger({type:"dispose",bubbles:!1}),this.children_)for(var a=this.children_.length-1;a>=0;a--)this.children_[a].dispose&&this.children_[a].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.off(),this.el_.parentNode&&this.el_.parentNode.removeChild(this.el_),j.removeElData(this.el_),this.el_=null},a.prototype.player=function(){return this.player_},a.prototype.options=function(a){return r["default"].warn("this.options() has been deprecated and will be moved to the constructor in 6.0"),a?(this.options_=x["default"](this.options_,a),this.options_):this.options_},a.prototype.el=function(){return this.el_},a.prototype.createEl=function(a,b){return j.createEl(a,b)},a.prototype.localize=function(a){var b=this.player_.language&&this.player_.language(),c=this.player_.languages&&this.player_.languages();if(!b||!c)return a;var d=c[b];if(d&&d[a])return d[a];var e=b.split("-")[0],f=c[e];return f&&f[a]?f[a]:a},a.prototype.contentEl=function(){return this.contentEl_||this.el_},a.prototype.id=function(){return this.id_},a.prototype.name=function(){return this.name_},a.prototype.children=function(){return this.children_},a.prototype.getChildById=function(a){return this.childIndex_[a]},a.prototype.getChild=function(a){return this.childNameIndex_[a]},a.prototype.addChild=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],d=void 0,e=void 0;if("string"==typeof b){e=b,c||(c={}),c===!0&&(r["default"].warn("Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`."),c={});var f=c.componentClass||t["default"](e);c.name=e;var g=a.getComponent(f);d=new g(this.player_||this,c)}else d=b;return this.children_.push(d),"function"==typeof d.id&&(this.childIndex_[d.id()]=d),e=e||d.name&&d.name(),e&&(this.childNameIndex_[e]=d),"function"==typeof d.el&&d.el()&&this.contentEl().appendChild(d.el()),d},a.prototype.removeChild=function(a){if("string"==typeof a&&(a=this.getChild(a)),a&&this.children_){for(var b=!1,c=this.children_.length-1;c>=0;c--)if(this.children_[c]===a){b=!0,this.children_.splice(c,1);break}if(b){this.childIndex_[a.id()]=null,this.childNameIndex_[a.name()]=null;var d=a.el();d&&d.parentNode===this.contentEl()&&this.contentEl().removeChild(a.el())}}},a.prototype.initChildren=function(){var a=this,b=this.options_.children;b&&!function(){var c=a.options_,d=function(b,d){void 0!==c[b]&&(d=c[b]),d!==!1&&(d===!0&&(d={}),d.playerOptions=a.options_.playerOptions,a[b]=a.addChild(b,d))};if(Array.isArray(b))for(var e=0;e0&&(a.forEach(function(a){a.call(this)},this),this.readyQueue_=[]),this.trigger("ready")},1)},a.prototype.hasClass=function(a){return j.hasElClass(this.el_,a)},a.prototype.addClass=function(a){return j.addElClass(this.el_,a),this},a.prototype.removeClass=function(a){return j.removeElClass(this.el_,a),this},a.prototype.show=function(){return this.removeClass("vjs-hidden"),this},a.prototype.hide=function(){return this.addClass("vjs-hidden"),this},a.prototype.lockShowing=function(){return this.addClass("vjs-lock-showing"),this},a.prototype.unlockShowing=function(){return this.removeClass("vjs-lock-showing"),this},a.prototype.width=function(a,b){return this.dimension("width",a,b)},a.prototype.height=function(a,b){return this.dimension("height",a,b)},a.prototype.dimensions=function(a,b){return this.width(a,!0).height(b)},a.prototype.dimension=function(a,b,c){if(void 0!==b)return(null===b||b!==b)&&(b=0),this.el_.style[a]=-1!==(""+b).indexOf("%")||-1!==(""+b).indexOf("px")?b:"auto"===b?"":b+"px",c||this.trigger("resize"),this;if(!this.el_)return 0;var d=this.el_.style[a],e=d.indexOf("px");return-1!==e?parseInt(d.slice(0,e),10):parseInt(this.el_["offset"+t["default"](a)],10)},a.prototype.emitTapEvents=function(){var a=0,b=null,c=10,d=200,e=void 0;this.on("touchstart",function(c){1===c.touches.length&&(b=v["default"]({},c.touches[0]),a=(new Date).getTime(),e=!0)}),this.on("touchmove",function(a){if(a.touches.length>1)e=!1;else if(b){var d=a.touches[0].pageX-b.pageX,f=a.touches[0].pageY-b.pageY,g=Math.sqrt(d*d+f*f);g>c&&(e=!1)}});var f=function(){e=!1};this.on("touchleave",f),this.on("touchcancel",f),this.on("touchend",function(c){if(b=null,e===!0){var f=(new Date).getTime()-a;d>f&&(c.preventDefault(),this.trigger("tap"))}})},a.prototype.enableTouchActivity=function(){if(this.player()&&this.player().reportUserActivity){var a=l.bind(this.player(),this.player().reportUserActivity),b=void 0;this.on("touchstart",function(){a(),this.clearInterval(b),b=this.setInterval(a,250)});var c=function(){a(),this.clearInterval(b)};this.on("touchmove",a),this.on("touchend",c),this.on("touchcancel",c)}},a.prototype.setTimeout=function(a,b){a=l.bind(this,a);var c=h["default"].setTimeout(a,b),d=function(){this.clearTimeout(c)};return d.guid="vjs-timeout-"+c,this.on("dispose",d),c},a.prototype.clearTimeout=function(a){h["default"].clearTimeout(a);var b=function(){};return b.guid="vjs-timeout-"+a,this.off("dispose",b),a},a.prototype.setInterval=function(a,b){a=l.bind(this,a);var c=h["default"].setInterval(a,b),d=function(){this.clearInterval(c)};return d.guid="vjs-interval-"+c,this.on("dispose",d),c},a.prototype.clearInterval=function(a){h["default"].clearInterval(a);var b=function(){};return b.guid="vjs-interval-"+a,this.off("dispose",b),a},a.registerComponent=function(b,c){return a.components_||(a.components_={}),a.components_[b]=c,c},a.getComponent=function(b){return a.components_&&a.components_[b]?a.components_[b]:h["default"]&&h["default"].videojs&&h["default"].videojs[b]?(r["default"].warn("The "+b+" component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)"),h["default"].videojs[b]):void 0},a.extend=function(b){b=b||{},r["default"].warn("Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead");var c=b.init||b.init||this.prototype.init||this.prototype.init||function(){},d=function(){c.apply(this,arguments)};d.prototype=Object.create(this.prototype),d.prototype.constructor=d,d.extend=a.extend;for(var e in b)b.hasOwnProperty(e)&&(d.prototype[e]=b[e]);return d},a}();y.registerComponent("Component",y),c["default"]=y,b.exports=c["default"]},{"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/to-title-case.js":116,"global/window":2,"object.assign":40}],49:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("./play-toggle.js"),j=(d(i),a("./time-controls/current-time-display.js")),k=(d(j),a("./time-controls/duration-display.js")),l=(d(k),a("./time-controls/time-divider.js")),m=(d(l),a("./time-controls/remaining-time-display.js")),n=(d(m),a("./live-display.js")),o=(d(n),a("./progress-control/progress-control.js")),p=(d(o),a("./fullscreen-toggle.js")),q=(d(p),a("./volume-control/volume-control.js")),r=(d(q),a("./volume-menu-button.js")),s=(d(r),a("./mute-toggle.js")),t=(d(s),a("./text-track-controls/chapters-button.js")),u=(d(t),a("./text-track-controls/subtitles-button.js")),v=(d(u),a("./text-track-controls/captions-button.js")),w=(d(v),a("./playback-rate-menu/playback-rate-menu-button.js")),x=(d(w),a("./spacer-controls/custom-control-spacer.js")),y=(d(x),function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-control-bar"})},b}(h["default"]));y.prototype.options_={loadEvent:"play",children:["playToggle","volumeMenuButton","currentTimeDisplay","timeDivider","durationDisplay","progressControl","liveDisplay","remainingTimeDisplay","customControlSpacer","playbackRateMenuButton","muteToggle","volumeControl","chaptersButton","subtitlesButton","captionsButton","fullscreenToggle"]},h["default"].registerComponent("ControlBar",y),c["default"]=y,b.exports=c["default"]},{"../component.js":48,"./fullscreen-toggle.js":50,"./live-display.js":51,"./mute-toggle.js":52,"./play-toggle.js":53,"./playback-rate-menu/playback-rate-menu-button.js":54,"./progress-control/progress-control.js":58,"./spacer-controls/custom-control-spacer.js":60,"./text-track-controls/captions-button.js":63, +"./text-track-controls/chapters-button.js":64,"./text-track-controls/subtitles-button.js":67,"./time-controls/current-time-display.js":70,"./time-controls/duration-display.js":71,"./time-controls/remaining-time-display.js":72,"./time-controls/time-divider.js":73,"./volume-control/volume-control.js":75,"./volume-menu-button.js":77}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-fullscreen-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.isFullscreen()?(this.player_.exitFullscreen(),this.controlText("Fullscreen")):(this.player_.requestFullscreen(),this.controlText("Non-Fullscreen"))},b}(h["default"]);k.prototype.controlText_="Fullscreen",j["default"].registerComponent("FullscreenToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":47,"../component.js":48}],51:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=function(a){function b(){f(this,b),a.apply(this,arguments)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-live-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-live-display",innerHTML:''+this.localize("Stream Type")+""+this.localize("LIVE"),"aria-live":"off"}),b.appendChild(this.contentEl_),b},b}(i["default"]);i["default"].registerComponent("LiveDisplay",l),c["default"]=l,b.exports=c["default"]},{"../component":48,"../utils/dom.js":107}],52:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../button"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"volumechange",this.update),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){this.update(),c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return g(b,a),b.prototype.buildCSSClass=function(){return"vjs-mute-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.muted(this.player_.muted()?!1:!0)},b.prototype.update=function(){var a=this.player_.volume(),b=3;0===a||this.player_.muted()?b=0:.33>a?b=1:.67>a&&(b=2);var c=this.player_.muted()?"Unmute":"Mute",d=this.localize(c);this.controlText()!==d&&this.controlText(d);for(var e=0;4>e;e++)m.removeElClass(this.el_,"vjs-vol-"+e);m.addElClass(this.el_,"vjs-vol-"+b)},b}(i["default"]);n.prototype.controlText_="Mute",k["default"].registerComponent("MuteToggle",n),c["default"]=n,b.exports=c["default"]},{"../button":47,"../component":48,"../utils/dom.js":107}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"play",this.handlePlay),this.on(c,"pause",this.handlePause)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-play-control "+a.prototype.buildCSSClass.call(this)},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b.prototype.handlePlay=function(){this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")},b.prototype.handlePause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")},b}(h["default"]);k.prototype.controlText_="Play",j["default"].registerComponent("PlayToggle",k),c["default"]=k,b.exports=c["default"]},{"../button.js":47,"../component.js":48}],54:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-button.js"),i=e(h),j=a("../../menu/menu.js"),k=e(j),l=a("./playback-rate-menu-item.js"),m=e(l),n=a("../../component.js"),o=e(n),p=a("../../utils/dom.js"),q=d(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.updateVisibility(),this.updateLabel(),this.on(c,"loadstart",this.updateVisibility),this.on(c,"ratechange",this.updateLabel)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this);return this.labelEl_=q.createEl("div",{className:"vjs-playback-rate-value",innerHTML:1}),b.appendChild(this.labelEl_),b},b.prototype.buildCSSClass=function(){return"vjs-playback-rate "+a.prototype.buildCSSClass.call(this)},b.prototype.createMenu=function(){var a=new k["default"](this.player()),b=this.playbackRates();if(b)for(var c=b.length-1;c>=0;c--)a.addChild(new m["default"](this.player(),{rate:b[c]+"x"}));return a},b.prototype.updateARIAAttributes=function(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},b.prototype.handleClick=function(){for(var a=this.player().playbackRate(),b=this.playbackRates(),c=b[0],d=0;da){c=b[d];break}this.player().playbackRate(c)},b.prototype.playbackRates=function(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates},b.prototype.playbackRateSupported=function(){return this.player().tech&&this.player().tech.featuresPlaybackRate&&this.playbackRates()&&this.playbackRates().length>0},b.prototype.updateVisibility=function(){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},b.prototype.updateLabel=function(){this.playbackRateSupported()&&(this.labelEl_.innerHTML=this.player().playbackRate()+"x")},b}(i["default"]);r.prototype.controlText_="Playback Rate",o["default"].registerComponent("PlaybackRateMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu-button.js":84,"../../menu/menu.js":86,"../../utils/dom.js":107,"./playback-rate-menu-item.js":55}],55:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../menu/menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b);var f=d.rate,g=parseFloat(f,10);d.label=f,d.selected=1===g,a.call(this,c,d),this.label=f,this.rate=g,this.on(c,"ratechange",this.update)}return f(b,a),b.prototype.handleClick=function(){a.prototype.handleClick.call(this),this.player().playbackRate(this.rate)},b.prototype.update=function(){this.selected(this.player().playbackRate()===this.rate)},b}(h["default"]);k.prototype.contentElType="button",j["default"].registerComponent("PlaybackRateMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu-item.js":85}],56:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"progress",this.update)}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-load-progress",innerHTML:''+this.localize("Loaded")+": 0%"})},b.prototype.update=function(){var a=this.player_.buffered(),b=this.player_.duration(),c=this.player_.bufferedEnd(),d=this.el_.children,e=function(a,b){var c=a/b||0;return 100*(c>=1?1:c)+"%"};this.el_.style.width=e(c,b);for(var f=0;fa.length;f--)this.el_.removeChild(d[f-1])},b}(i["default"]);i["default"].registerComponent("LoadProgressBar",l),c["default"]=l,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107}],57:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/fn.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateDataAttr),c.ready(k.bind(this,this.updateDataAttr))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-play-progress",innerHTML:''+this.localize("Progress")+": 0%"})},b.prototype.updateDataAttr=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("data-current-time",m["default"](a,this.player_.duration()))},b}(i["default"]);i["default"].registerComponent("PlayProgressBar",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/fn.js":109,"../../utils/format-time.js":110}],58:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./seek-bar.js"),j=(d(i),function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{seekBar:{}}},h["default"].registerComponent("ProgressControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":48,"./seek-bar.js":59}],59:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../slider/slider.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("./load-progress-bar.js"),m=(e(l),a("./play-progress-bar.js")),n=(e(m),a("../../utils/fn.js")),o=d(n),p=a("../../utils/format-time.js"),q=e(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateARIAAttributes),c.ready(o.bind(this,this.updateARIAAttributes))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})},b.prototype.updateARIAAttributes=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime();this.el_.setAttribute("aria-valuenow",(100*this.getPercent()).toFixed(2)),this.el_.setAttribute("aria-valuetext",q["default"](a,this.player_.duration()))},b.prototype.getPercent=function(){var a=this.player_.currentTime()/this.player_.duration();return a>=1?1:a},b.prototype.handleMouseDown=function(b){a.prototype.handleMouseDown.call(this,b),this.player_.scrubbing(!0),this.videoWasPlaying=!this.player_.paused(),this.player_.pause()},b.prototype.handleMouseMove=function(a){var b=this.calculateDistance(a)*this.player_.duration();b===this.player_.duration()&&(b-=.1),this.player_.currentTime(b)},b.prototype.handleMouseUp=function(b){a.prototype.handleMouseUp.call(this,b),this.player_.scrubbing(!1),this.videoWasPlaying&&this.player_.play()},b.prototype.stepForward=function(){this.player_.currentTime(this.player_.currentTime()+5)},b.prototype.stepBack=function(){this.player_.currentTime(this.player_.currentTime()-5)},b}(i["default"]);r.prototype.options_={children:{loadProgressBar:{},playProgressBar:{}},barName:"playProgressBar"},r.prototype.playerEvent="timeupdate",k["default"].registerComponent("SeekBar",r),c["default"]=r,b.exports=c["default"]},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"../../utils/format-time.js":110,"./load-progress-bar.js":56,"./play-progress-bar.js":57}],60:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./spacer.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-custom-control-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,{className:this.buildCSSClass()})},b}(h["default"]);j["default"].registerComponent("CustomControlSpacer",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./spacer.js":61}],61:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-spacer "+a.prototype.buildCSSClass.call(this)},b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:this.buildCSSClass()})},b}(h["default"]);h["default"].registerComponent("Spacer",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],62:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-menu-item.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d){e(this,b),d.track={kind:d.kind,player:c,label:d.kind+" settings","default":!1,mode:"disabled"},a.call(this,c,d),this.addClass("vjs-texttrack-settings")}return f(b,a),b.prototype.handleClick=function(){this.player().getChild("textTrackSettings").show()},b}(h["default"]);j["default"].registerComponent("CaptionSettingsMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-menu-item.js":69}],63:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("./caption-settings-menu-item.js"),l=d(k),m=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Captions Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-captions-button "+a.prototype.buildCSSClass.call(this)},b.prototype.update=function(){var b=2;a.prototype.update.call(this),this.player().tech&&this.player().tech.featuresNativeTextTracks&&(b=1),this.items&&this.items.length>b?this.show():this.hide()},b.prototype.createItems=function(){var b=[];return this.player().tech&&this.player().tech.featuresNativeTextTracks||b.push(new l["default"](this.player_,{kind:this.kind_})),a.prototype.createItems.call(this,b)},b}(h["default"]);m.prototype.kind_="captions",m.prototype.controlText_="Captions",j["default"].registerComponent("CaptionsButton",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":48,"./caption-settings-menu-item.js":62,"./text-track-button.js":68}],64:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./text-track-button.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("./text-track-menu-item.js"),m=e(l),n=a("./chapters-track-menu-item.js"),o=e(n),p=a("../../menu/menu.js"),q=e(p),r=a("../../utils/dom.js"),s=d(r),t=a("../../utils/fn.js"),u=d(t),v=a("../../utils/to-title-case.js"),w=e(v),x=a("global/window"),y=e(x),z=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),this.el_.setAttribute("aria-label","Chapters Menu")}return g(b,a),b.prototype.buildCSSClass=function(){return"vjs-chapters-button "+a.prototype.buildCSSClass.call(this)},b.prototype.createItems=function(){var a=[],b=this.player_.textTracks();if(!b)return a;for(var c=0;cd;d++){var f=a[d];if(f.kind===this.kind_){if(f.cues){b=f;break}f.mode="hidden",y["default"].setTimeout(u.bind(this,function(){this.createMenu()}),100)}}var g=this.menu;if(void 0===g&&(g=new q["default"](this.player_),g.contentEl().appendChild(s.createEl("li",{className:"vjs-menu-title",innerHTML:w["default"](this.kind_),tabIndex:-1}))),b){for(var h=b.cues,i=void 0,d=0,e=h.length;e>d;d++){i=h[d];var j=new o["default"](this.player_,{track:b,cue:i});c.push(j),g.addChild(j)}this.addChild(g)}return this.items.length>0&&this.show(),g},b}(i["default"]);z.prototype.kind_="chapters",z.prototype.controlText_="Chapters",k["default"].registerComponent("ChaptersButton",z),c["default"]=z,b.exports=c["default"]},{"../../component.js":48,"../../menu/menu.js":86,"../../utils/dom.js":107,"../../utils/fn.js":109,"../../utils/to-title-case.js":116,"./chapters-track-menu-item.js":65,"./text-track-button.js":68,"./text-track-menu-item.js":69,"global/window":2}],65:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-item.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=function(a){function b(c,d){f(this,b);var e=d.track,g=d.cue,h=c.currentTime();d.label=g.text,d.selected=g.startTime<=h&&hc;c++){var e=a[c];if(e.kind===this.track.kind&&"showing"===e.mode){b=!1;break}}this.selected(b)},b}(h["default"]);j["default"].registerComponent("OffTextTrackMenuItem",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-menu-item.js":69}],67:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("./text-track-button.js"),h=d(g),i=a("../../component.js"),j=d(i),k=function(a){function b(c,d,f){e(this,b),a.call(this,c,d,f),this.el_.setAttribute("aria-label","Subtitles Menu")}return f(b,a),b.prototype.buildCSSClass=function(){return"vjs-subtitles-button "+a.prototype.buildCSSClass.call(this)},b}(h["default"]);k.prototype.kind_="subtitles",k.prototype.controlText_="Subtitles",j["default"].registerComponent("SubtitlesButton",k),c["default"]=k,b.exports=c["default"]},{"../../component.js":48,"./text-track-button.js":68}],68:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../menu/menu-button.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=a("./text-track-menu-item.js"),o=e(n),p=a("./off-text-track-menu-item.js"),q=e(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=this.player_.textTracks();if(this.items.length<=1&&this.hide(),e){var g=m.bind(this,this.update);e.addEventListener("removetrack",g),e.addEventListener("addtrack",g),this.player_.on("dispose",function(){e.removeEventListener("removetrack",g),e.removeEventListener("addtrack",g)})}}return g(b,a),b.prototype.createItems=function(){var a=arguments.length<=0||void 0===arguments[0]?[]:arguments[0];a.push(new q["default"](this.player_,{kind:this.kind_}));var b=this.player_.textTracks();if(!b)return a;for(var c=0;cCurrent Time 0:00',"aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),b=this.localize("Current Time"),c=m["default"](a,this.player_.duration());this.contentEl_.innerHTML=''+b+" "+c},b}(i["default"]);i["default"].registerComponent("CurrentTimeDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],71:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent),this.on(c,"loadedmetadata",this.updateContent)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-duration vjs-time-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-duration-display",innerHTML:''+this.localize("Duration Time")+" 0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){var a=this.player_.duration();if(a){var b=this.localize("Duration Time"),c=m["default"](a);this.contentEl_.innerHTML=''+b+" "+c}},b}(i["default"]);i["default"].registerComponent("DurationDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],72:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../component.js"),i=e(h),j=a("../../utils/dom.js"),k=d(j),l=a("../../utils/format-time.js"),m=e(l),n=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-remaining-time vjs-time-control vjs-control"});return this.contentEl_=k.createEl("div",{className:"vjs-remaining-time-display",innerHTML:''+this.localize("Remaining Time")+" -0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){if(this.player_.duration()){var a=this.localize("Remaining Time"),b=m["default"](this.player_.remainingTime());this.contentEl_.innerHTML=''+a+" -"+b}},b}(i["default"]);i["default"].registerComponent("RemainingTimeDisplay",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],73:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-time-control vjs-time-divider",innerHTML:"
    /
    "})},b}(h["default"]);h["default"].registerComponent("TimeDivider",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],74:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../../slider/slider.js"),i=e(h),j=a("../../component.js"),k=e(j),l=a("../../utils/fn.js"),m=d(l),n=a("./volume-level.js"),o=(e(n),function(a){function b(c,d){f(this,b),a.call(this,c,d),this.on(c,"volumechange",this.updateARIAAttributes),c.ready(m.bind(this,this.updateARIAAttributes))}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})},b.prototype.handleMouseMove=function(a){this.player_.muted()&&this.player_.muted(!1),this.player_.volume(this.calculateDistance(a))},b.prototype.getPercent=function(){return this.player_.muted()?0:this.player_.volume()},b.prototype.stepForward=function(){this.player_.volume(this.player_.volume()+.1)},b.prototype.stepBack=function(){this.player_.volume(this.player_.volume()-.1)},b.prototype.updateARIAAttributes=function(){var a=(100*this.player_.volume()).toFixed(2);this.el_.setAttribute("aria-valuenow",a),this.el_.setAttribute("aria-valuetext",a+"%")},b}(i["default"]));o.prototype.options_={children:{volumeLevel:{}},barName:"volumeLevel"},o.prototype.playerEvent="volumechange",k["default"].registerComponent("VolumeBar",o),c["default"]=o,b.exports=c["default"]},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"./volume-level.js":76}],75:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./volume-bar.js"),j=(d(i),function(a){function b(c,d){e(this,b),a.call(this,c,d),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{volumeBar:{}}},h["default"].registerComponent("VolumeControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":48,"./volume-bar.js":74}],76:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-level",innerHTML:''})},b}(h["default"]);h["default"].registerComponent("VolumeLevel",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":48}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=(d(g),a("../component.js")),i=d(h),j=a("../menu/menu.js"),k=d(j),l=a("../menu/menu-button.js"),m=d(l),n=a("./mute-toggle.js"),o=d(n),p=a("./volume-control/volume-bar.js"),q=d(p),r=function(a){function b(c){var d=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];e(this,b),void 0===d.vertical&&(d.vertical=d.inline?!1:!0),d.volumeBar=d.volumeBar||{},d.volumeBar.vertical=!!d.vertical,a.call(this,c,d),this.on(c,"volumechange",this.volumeUpdate),this.on(c,"loadstart",this.volumeUpdate),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")}),this.addClass("vjs-menu-button")}return f(b,a),b.prototype.buildCSSClass=function(){var b="";return b=this.options_.vertical?"vjs-volume-menu-button-vertical":"vjs-volume-menu-button-horizontal","vjs-volume-menu-button "+a.prototype.buildCSSClass.call(this)+" "+b},b.prototype.createMenu=function(){var a=new k["default"](this.player_,{contentElType:"div"}),b=new q["default"](this.player_,this.options_.volumeBar);return b.on("focus",function(){a.lockShowing()}),b.on("blur",function(){a.unlockShowing()}),a.addChild(b),a},b.prototype.handleClick=function(){o["default"].prototype.handleClick.call(this),a.prototype.handleClick.call(this)},b}(m["default"]);r.prototype.volumeUpdate=o["default"].prototype.update,r.prototype.controlText_="Mute",i["default"].registerComponent("VolumeMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"../menu/menu-button.js":84,"../menu/menu.js":86,"./mute-toggle.js":52,"./volume-control/volume-bar.js":74}],78:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component"),i=e(h),j=a("./utils/dom.js"),k=d(j),l=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.update(),this.on(c,"error",this.update)}return g(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-error-display"});return this.contentEl_=k.createEl("div"),b.appendChild(this.contentEl_),b},b.prototype.update=function(){this.player().error()&&(this.contentEl_.innerHTML=this.localize(this.player().error().message))},b}(i["default"]);i["default"].registerComponent("ErrorDisplay",l),c["default"]=l,b.exports=c["default"]},{"./component":48,"./utils/dom.js":107}],79:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=function(){};g.prototype.allowedEvents_={},g.prototype.on=function(a,b){var c=this.addEventListener;this.addEventListener=Function.prototype,f.on(this,a,b),this.addEventListener=c},g.prototype.addEventListener=g.prototype.on,g.prototype.off=function(a,b){f.off(this,a,b)},g.prototype.removeEventListener=g.prototype.off,g.prototype.one=function(a,b){f.one(this,a,b)},g.prototype.trigger=function(a){var b=a.type||a;"string"==typeof a&&(a={type:b}),a=f.fixEvent(a),this.allowedEvents_[b]&&this["on"+b]&&this["on"+b](a),f.trigger(this,a)},g.prototype.dispatchEvent=g.prototype.trigger,c["default"]=g,b.exports=c["default"]},{"./utils/events.js":108}],80:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./utils/log"),f=d(e),g=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.super_=b)},h=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=function(){a.apply(this,arguments)},d={};"object"==typeof b?("function"==typeof b.init&&(f["default"].warn("Constructor logic via init() is deprecated; please use constructor() instead."),b.constructor=b.init),b.constructor!==Object.prototype.constructor&&(c=b.constructor),d=b):"function"==typeof b&&(c=b),g(c,a);for(var e in d)d.hasOwnProperty(e)&&(c.prototype[e]=d[e]);return c};c["default"]=h,b.exports=c["default"]},{"./utils/log":112}],81:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;for(var e=a("global/document"),f=d(e),g={},h=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=h[0],j=void 0,k=0;k1&&this.show()},b.prototype.createMenu=function(){var a=new m["default"](this.player_);if(this.options_.title&&a.contentEl().appendChild(o.createEl("li",{className:"vjs-menu-title",innerHTML:s["default"](this.options_.title),tabIndex:-1})),this.items=this.createItems(),this.items)for(var b=0;b0&&this.items[0].el().focus()},b.prototype.unpressButton=function(){this.buttonPressed_=!1,this.menu.unlockShowing(),this.el_.setAttribute("aria-pressed",!1)},b}(i["default"]);k["default"].registerComponent("MenuButton",t),c["default"]=t,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/to-title-case.js":116,"./menu.js":86}],85:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=a("object.assign"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.selected(d.selected)}return f(b,a),b.prototype.createEl=function(b,c){return a.prototype.createEl.call(this,"li",l["default"]({className:"vjs-menu-item",innerHTML:this.localize(this.options_.label)},c))},b.prototype.handleClick=function(){this.selected(!0)},b.prototype.selected=function(a){a?(this.addClass("vjs-selected"),this.el_.setAttribute("aria-selected",!0)):(this.removeClass("vjs-selected"),this.el_.setAttribute("aria-selected",!1))},b}(h["default"]);j["default"].registerComponent("MenuItem",m),c["default"]=m,b.exports=c["default"]},{"../button.js":47,"../component.js":48,"object.assign":40}],86:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component.js"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=a("../utils/fn.js"),m=d(l),n=a("../utils/events.js"),o=d(n),p=function(a){function b(){f(this,b),a.apply(this,arguments)}return g(b,a),b.prototype.addItem=function(a){this.addChild(a),a.on("click",m.bind(this,function(){this.unlockShowing()}))},b.prototype.createEl=function(){var b=this.options_.contentElType||"ul";this.contentEl_=k.createEl(b,{className:"vjs-menu-content"});var c=a.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return c.appendChild(this.contentEl_),o.on(c,"click",function(a){a.preventDefault(),a.stopImmediatePropagation()}),c},b}(i["default"]);i["default"].registerComponent("Menu",p),c["default"]=p,b.exports=c["default"]},{"../component.js":48,"../utils/dom.js":107,"../utils/events.js":108,"../utils/fn.js":109}],87:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./component.js"),i=e(h),j=a("global/document"),k=e(j),l=a("global/window"),m=e(l),n=a("./utils/events.js"),o=d(n),p=a("./utils/dom.js"),q=d(p),r=a("./utils/fn.js"),s=d(r),t=a("./utils/guid.js"),u=d(t),v=a("./utils/browser.js"),w=(d(v),a("./utils/log.js")),x=e(w),y=a("./utils/to-title-case.js"),z=e(y),A=a("./utils/time-ranges.js"),B=a("./utils/buffer.js"),C=a("./utils/stylesheet.js"),D=d(C),E=a("./fullscreen-api.js"),F=e(E),G=a("./media-error.js"),H=e(G),I=a("safe-json-parse/tuple"),J=e(I),K=a("object.assign"),L=e(K),M=a("./utils/merge-options.js"),N=e(M),O=a("./tracks/text-track-list-converter.js"),P=e(O),Q=a("./tech/loader.js"),R=(e(Q),a("./poster-image.js")),S=(e(R),a("./tracks/text-track-display.js")),T=(e(S),a("./loading-spinner.js")),U=(e(T),a("./big-play-button.js")),V=(e(U),a("./control-bar/control-bar.js")),W=(e(V),a("./error-display.js")),X=(e(W),a("./tracks/text-track-settings.js")),Y=(e(X),a("./tech/html5.js")),Z=(e(Y),function(a){function b(c,d,e){var g=this;if(f(this,b),c.id=c.id||"vjs_video_"+u.newGUID(),d=L["default"](b.getTagSettings(c),d),d.initChildren=!1,d.createEl=!1,d.reportTouchActivity=!1,a.call(this,null,d,e),!this.options_||!this.options_.techOrder||!this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");this.tag=c,this.tagAttributes=c&&q.getElAttributes(c),this.language(this.options_.language),d.languages?!function(){var a={};Object.getOwnPropertyNames(d.languages).forEach(function(b){a[b.toLowerCase()]=d.languages[b]}),g.languages_=a}():this.languages_=b.prototype.options_.languages,this.cache_={},this.poster_=d.poster||"",this.controls_=!!d.controls,c.controls=!1,this.scrubbing_=!1,this.el_=this.createEl();var h=N["default"](this.options_);d.plugins&&!function(){var a=d.plugins;Object.getOwnPropertyNames(a).forEach(function(b){"function"==typeof this[b]?this[b](a[b]):x["default"].error("Unable to find plugin:",b)},g)}(),this.options_.playerOptions=h,this.initChildren(),this.isAudio("audio"===c.nodeName.toLowerCase()),this.addClass(this.controls()?"vjs-controls-enabled":"vjs-controls-disabled"),this.isAudio()&&this.addClass("vjs-audio"),this.flexNotSupported_()&&this.addClass("vjs-no-flex"),b.players[this.id_]=this,this.userActive_=!0,this.reportUserActivity(),this.listenForUserActivity(),this.on("fullscreenchange",this.handleFullscreenChange),this.on("stageclick",this.handleStageClick)}return g(b,a),b.prototype.dispose=function(){this.trigger("dispose"),this.off("dispose"),this.styleEl_&&this.styleEl_.parentNode.removeChild(this.styleEl_),b.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech&&this.tech.dispose(),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var b=this.el_=a.prototype.createEl.call(this,"div"),c=this.tag;c.removeAttribute("width"),c.removeAttribute("height");var d=q.getElAttributes(c);Object.getOwnPropertyNames(d).forEach(function(a){"class"===a?b.className=d[a]:b.setAttribute(a,d[a])}),c.id+="_html5_api",c.className="vjs-tech",c.player=b.player=this,this.addClass("vjs-paused"),this.styleEl_=D.createStyleElement("vjs-styles-dimensions");var e=k["default"].querySelector(".vjs-styles-defaults"),f=k["default"].querySelector("head");return f.insertBefore(this.styleEl_,e?e.nextSibling:f.firstChild),this.width(this.options_.width),this.height(this.options_.height),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),c.initNetworkState_=c.networkState,c.parentNode&&c.parentNode.insertBefore(b,c),q.insertElFirst(c,b),this.el_=b,b},b.prototype.width=function(a){return this.dimension("width",a)},b.prototype.height=function(a){return this.dimension("height",a)},b.prototype.dimension=function(a,b){var c=a+"_";if(void 0===b)return this[c]||0;if(""===b)this[c]=void 0;else{var d=parseFloat(b);if(isNaN(d))return x["default"].error('Improper value "'+b+'" supplied for for '+a),this;this[c]=d}return this.updateStyleEl_(),this},b.prototype.fluid=function(a){return void 0===a?!!this.fluid_:(this.fluid_=!!a,void(a?this.addClass("vjs-fluid"):this.removeClass("vjs-fluid")))},b.prototype.aspectRatio=function(a){if(void 0===a)return this.aspectRatio_;if(!/^\d+\:\d+$/.test(a))throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");this.aspectRatio_=a,this.fluid(!0),this.updateStyleEl_()},b.prototype.updateStyleEl_=function(){var a=void 0,b=void 0,c=void 0;c=void 0!==this.aspectRatio_&&"auto"!==this.aspectRatio_?this.aspectRatio_:this.videoWidth()?this.videoWidth()+":"+this.videoHeight():"16:9";var d=c.split(":"),e=d[1]/d[0];a=void 0!==this.width_?this.width_:void 0!==this.height_?this.height_/e:this.videoWidth()||300,b=void 0!==this.height_?this.height_:a*e;var f=this.id()+"-dimensions";this.addClass(f),D.setTextContent(this.styleEl_,"\n ."+f+" {\n width: "+a+"px;\n height: "+b+"px;\n }\n\n ."+f+".vjs-fluid {\n padding-top: "+100*e+"%;\n }\n ")},b.prototype.loadTech=function(a,b){this.tech&&this.unloadTech(),"Html5"!==a&&this.tag&&(i["default"].getComponent("Html5").disposeMediaElement(this.tag),this.tag.player=null,this.tag=null),this.techName=a,this.isReady_=!1;var c=s.bind(this,function(){this.triggerReady()}),d=L["default"]({nativeControlsForTouch:this.options_.nativeControlsForTouch,source:b,playerId:this.id(),techId:this.id()+"_"+a+"_api",textTracks:this.textTracks_,autoplay:this.options_.autoplay,preload:this.options_.preload,loop:this.options_.loop,muted:this.options_.muted,poster:this.poster(),language:this.language(),"vtt.js":this.options_["vtt.js"]},this.options_[a.toLowerCase()]);this.tag&&(d.tag=this.tag),b&&(this.currentType_=b.type,b.src===this.cache_.src&&this.cache_.currentTime>0&&(d.startTime=this.cache_.currentTime),this.cache_.src=b.src);var e=i["default"].getComponent(a);this.tech=new e(d),P["default"].jsonToTextTracks(this.textTracksJson_||[],this.tech),this.on(this.tech,"ready",this.handleTechReady),this.on(this.tech,"loadstart",this.handleTechLoadStart),this.on(this.tech,"waiting",this.handleTechWaiting),this.on(this.tech,"canplay",this.handleTechCanPlay),this.on(this.tech,"canplaythrough",this.handleTechCanPlayThrough),this.on(this.tech,"playing",this.handleTechPlaying),this.on(this.tech,"ended",this.handleTechEnded),this.on(this.tech,"seeking",this.handleTechSeeking),this.on(this.tech,"seeked",this.handleTechSeeked),this.on(this.tech,"play",this.handleTechPlay),this.on(this.tech,"firstplay",this.handleTechFirstPlay),this.on(this.tech,"pause",this.handleTechPause),this.on(this.tech,"progress",this.handleTechProgress),this.on(this.tech,"durationchange",this.handleTechDurationChange),this.on(this.tech,"fullscreenchange",this.handleTechFullscreenChange),this.on(this.tech,"error",this.handleTechError),this.on(this.tech,"suspend",this.handleTechSuspend),this.on(this.tech,"abort",this.handleTechAbort),this.on(this.tech,"emptied",this.handleTechEmptied),this.on(this.tech,"stalled",this.handleTechStalled),this.on(this.tech,"loadedmetadata",this.handleTechLoadedMetaData),this.on(this.tech,"loadeddata",this.handleTechLoadedData),this.on(this.tech,"timeupdate",this.handleTechTimeUpdate),this.on(this.tech,"ratechange",this.handleTechRateChange),this.on(this.tech,"volumechange",this.handleTechVolumeChange),this.on(this.tech,"texttrackchange",this.onTextTrackChange),this.on(this.tech,"loadedmetadata",this.updateStyleEl_),this.usingNativeControls(this.techGet("controls")),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners(),this.tech.el().parentNode===this.el()||"Html5"===a&&this.tag||q.insertElFirst(this.tech.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null),this.tech.ready(c,!0)},b.prototype.unloadTech=function(){this.textTracks_=this.textTracks(),this.textTracksJson_=P["default"].textTracksToJson(this),this.isReady_=!1,this.tech.dispose(),this.tech=!1},b.prototype.addTechControlsListeners=function(){ +this.removeTechControlsListeners(),this.on(this.tech,"mousedown",this.handleTechClick),this.on(this.tech,"touchstart",this.handleTechTouchStart),this.on(this.tech,"touchmove",this.handleTechTouchMove),this.on(this.tech,"touchend",this.handleTechTouchEnd),this.on(this.tech,"tap",this.handleTechTap)},b.prototype.removeTechControlsListeners=function(){this.off(this.tech,"tap",this.handleTechTap),this.off(this.tech,"touchstart",this.handleTechTouchStart),this.off(this.tech,"touchmove",this.handleTechTouchMove),this.off(this.tech,"touchend",this.handleTechTouchEnd),this.off(this.tech,"mousedown",this.handleTechClick)},b.prototype.handleTechReady=function(){this.triggerReady(),this.cache_.volume&&this.techCall("setVolume",this.cache_.volume),this.tag&&this.options_.autoplay&&this.paused()&&(delete this.tag.poster,this.play())},b.prototype.handleTechLoadStart=function(){this.removeClass("vjs-ended"),this.error(null),this.paused()?(this.hasStarted(!1),this.trigger("loadstart")):(this.trigger("loadstart"),this.trigger("firstplay"))},b.prototype.hasStarted=function(a){return void 0!==a?(this.hasStarted_!==a&&(this.hasStarted_=a,a?(this.addClass("vjs-has-started"),this.trigger("firstplay")):this.removeClass("vjs-has-started")),this):!!this.hasStarted_},b.prototype.handleTechPlay=function(){this.removeClass("vjs-ended"),this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.hasStarted(!0),this.trigger("play")},b.prototype.handleTechWaiting=function(){this.addClass("vjs-waiting"),this.trigger("waiting")},b.prototype.handleTechCanPlay=function(){this.removeClass("vjs-waiting"),this.trigger("canplay")},b.prototype.handleTechCanPlayThrough=function(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")},b.prototype.handleTechPlaying=function(){this.removeClass("vjs-waiting"),this.trigger("playing")},b.prototype.handleTechSeeking=function(){this.addClass("vjs-seeking"),this.trigger("seeking")},b.prototype.handleTechSeeked=function(){this.removeClass("vjs-seeking"),this.trigger("seeked")},b.prototype.handleTechFirstPlay=function(){this.options_.starttime&&this.currentTime(this.options_.starttime),this.addClass("vjs-has-started"),this.trigger("firstplay")},b.prototype.handleTechPause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")},b.prototype.handleTechProgress=function(){this.trigger("progress"),1===this.bufferedPercent()&&this.trigger("loadedalldata")},b.prototype.handleTechEnded=function(){this.addClass("vjs-ended"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")},b.prototype.handleTechDurationChange=function(){this.updateDuration(),this.trigger("durationchange")},b.prototype.handleTechClick=function(a){0===a.button&&this.controls()&&(this.paused()?this.play():this.pause())},b.prototype.handleTechTap=function(){this.userActive(!this.userActive())},b.prototype.handleTechTouchStart=function(){this.userWasActive=this.userActive()},b.prototype.handleTechTouchMove=function(){this.userWasActive&&this.reportUserActivity()},b.prototype.handleTechTouchEnd=function(a){a.preventDefault()},b.prototype.updateDuration=function(){var a=this.techGet("duration");a&&(0>a&&(a=1/0),this.duration(a),a===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"))},b.prototype.handleFullscreenChange=function(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")},b.prototype.handleStageClick=function(){this.reportUserActivity()},b.prototype.handleTechFullscreenChange=function(a,b){b&&this.isFullscreen(b.isFullscreen),this.trigger("fullscreenchange")},b.prototype.handleTechError=function(){var a=this.tech.error();this.error(a&&a.code)},b.prototype.handleTechSuspend=function(){this.trigger("suspend")},b.prototype.handleTechAbort=function(){this.trigger("abort")},b.prototype.handleTechEmptied=function(){this.trigger("emptied")},b.prototype.handleTechStalled=function(){this.trigger("stalled")},b.prototype.handleTechLoadedMetaData=function(){this.trigger("loadedmetadata")},b.prototype.handleTechLoadedData=function(){this.trigger("loadeddata")},b.prototype.handleTechTimeUpdate=function(){this.trigger("timeupdate")},b.prototype.handleTechRateChange=function(){this.trigger("ratechange")},b.prototype.handleTechVolumeChange=function(){this.trigger("volumechange")},b.prototype.onTextTrackChange=function(){this.trigger("texttrackchange")},b.prototype.getCache=function(){return this.cache_},b.prototype.techCall=function(a,b){if(this.tech&&!this.tech.isReady_)this.tech.ready(function(){this[a](b)},!0);else try{this.tech[a](b)}catch(c){throw x["default"](c),c}},b.prototype.techGet=function(a){if(this.tech&&this.tech.isReady_)try{return this.tech[a]()}catch(b){throw void 0===this.tech[a]?x["default"]("Video.js: "+a+" method not defined for "+this.techName+" playback technology.",b):"TypeError"===b.name?(x["default"]("Video.js: "+a+" unavailable on "+this.techName+" playback technology element.",b),this.tech.isReady_=!1):x["default"](b),b}},b.prototype.play=function(){return this.techCall("play"),this},b.prototype.pause=function(){return this.techCall("pause"),this},b.prototype.paused=function(){return this.techGet("paused")===!1?!1:!0},b.prototype.scrubbing=function(a){return void 0!==a?(this.scrubbing_=!!a,a?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing"),this):this.scrubbing_},b.prototype.currentTime=function(a){return void 0!==a?(this.techCall("setCurrentTime",a),this):this.cache_.currentTime=this.techGet("currentTime")||0},b.prototype.duration=function(a){return void 0!==a?(this.cache_.duration=parseFloat(a),this):(void 0===this.cache_.duration&&this.updateDuration(),this.cache_.duration||0)},b.prototype.remainingTime=function(){return this.duration()-this.currentTime()},b.prototype.buffered=function c(){var c=this.techGet("buffered");return c&&c.length||(c=A.createTimeRange(0,0)),c},b.prototype.bufferedPercent=function(){return B.bufferedPercent(this.buffered(),this.duration())},b.prototype.bufferedEnd=function(){var a=this.buffered(),b=this.duration(),c=a.end(a.length-1);return c>b&&(c=b),c},b.prototype.volume=function(a){var b=void 0;return void 0!==a?(b=Math.max(0,Math.min(1,parseFloat(a))),this.cache_.volume=b,this.techCall("setVolume",b),this):(b=parseFloat(this.techGet("volume")),isNaN(b)?1:b)},b.prototype.muted=function(a){return void 0!==a?(this.techCall("setMuted",a),this):this.techGet("muted")||!1},b.prototype.supportsFullScreen=function(){return this.techGet("supportsFullScreen")||!1},b.prototype.isFullscreen=function(a){return void 0!==a?(this.isFullscreen_=!!a,this):!!this.isFullscreen_},b.prototype.requestFullscreen=function(){var a=F["default"];return this.isFullscreen(!0),a.requestFullscreen?(o.on(k["default"],a.fullscreenchange,s.bind(this,function b(){this.isFullscreen(k["default"][a.fullscreenElement]),this.isFullscreen()===!1&&o.off(k["default"],a.fullscreenchange,b),this.trigger("fullscreenchange")})),this.el_[a.requestFullscreen]()):this.tech.supportsFullScreen()?this.techCall("enterFullScreen"):(this.enterFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.exitFullscreen=function(){var a=F["default"];return this.isFullscreen(!1),a.requestFullscreen?k["default"][a.exitFullscreen]():this.tech.supportsFullScreen()?this.techCall("exitFullScreen"):(this.exitFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.enterFullWindow=function(){this.isFullWindow=!0,this.docOrigOverflow=k["default"].documentElement.style.overflow,o.on(k["default"],"keydown",s.bind(this,this.fullWindowOnEscKey)),k["default"].documentElement.style.overflow="hidden",q.addElClass(k["default"].body,"vjs-full-window"),this.trigger("enterFullWindow")},b.prototype.fullWindowOnEscKey=function(a){27===a.keyCode&&(this.isFullscreen()===!0?this.exitFullscreen():this.exitFullWindow())},b.prototype.exitFullWindow=function(){this.isFullWindow=!1,o.off(k["default"],"keydown",this.fullWindowOnEscKey),k["default"].documentElement.style.overflow=this.docOrigOverflow,q.removeElClass(k["default"].body,"vjs-full-window"),this.trigger("exitFullWindow")},b.prototype.selectSource=function(a){for(var b=0,c=this.options_.techOrder;b0&&(h=this.setTimeout(function(){this.userActivity_||this.userActive(!1)},a))}},250)}},b.prototype.playbackRate=function(a){return void 0!==a?(this.techCall("setPlaybackRate",a),this):this.tech&&this.tech.featuresPlaybackRate?this.techGet("playbackRate"):1},b.prototype.isAudio=function(a){return void 0!==a?(this.isAudio_=!!a,this):!!this.isAudio_},b.prototype.networkState=function(){return this.techGet("networkState")},b.prototype.readyState=function(){return this.techGet("readyState")},b.prototype.textTracks=function(){return this.tech&&this.tech.textTracks()},b.prototype.remoteTextTracks=function(){return this.tech&&this.tech.remoteTextTracks()},b.prototype.addTextTrack=function(a,b,c){return this.tech&&this.tech.addTextTrack(a,b,c)},b.prototype.addRemoteTextTrack=function(a){return this.tech&&this.tech.addRemoteTextTrack(a)},b.prototype.removeRemoteTextTrack=function(a){this.tech&&this.tech.removeRemoteTextTrack(a)},b.prototype.videoWidth=function(){return this.tech&&this.tech.videoWidth&&this.tech.videoWidth()||0},b.prototype.videoHeight=function(){return this.tech&&this.tech.videoHeight&&this.tech.videoHeight()||0},b.prototype.language=function(a){return void 0===a?this.language_:(this.language_=(""+a).toLowerCase(),this)},b.prototype.languages=function(){return N["default"](b.prototype.options_.languages,this.languages_)},b.prototype.toJSON=function(){var a=N["default"](this.options_),b=a.tracks;a.tracks=[];for(var c=0;ci;i++){var k=h[i],l=k.nodeName.toLowerCase();"source"===l?b.sources.push(q.getElAttributes(k)):"track"===l&&b.tracks.push(q.getElAttributes(k))}return b},b}(i["default"]));Z.players={};var $=m["default"].navigator;Z.prototype.options_={techOrder:["html5","flash"],html5:{},flash:{},defaultVolume:0,inactivityTimeout:2e3,playbackRates:[],children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{},textTrackSettings:{}},language:k["default"].getElementsByTagName("html")[0].getAttribute("lang")||$.languages&&$.languages[0]||$.userLanguage||$.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."},Z.prototype.handleLoadedMetaData,Z.prototype.handleLoadedData,Z.prototype.handleLoadedAllData,Z.prototype.handleUserActive,Z.prototype.handleUserInactive,Z.prototype.handleTimeUpdate,Z.prototype.handleVolumeChange,Z.prototype.handleError,Z.prototype.flexNotSupported_=function(){var a=k["default"].createElement("i");return!("flexBasis"in a.style||"webkitFlexBasis"in a.style||"mozFlexBasis"in a.style||"msFlexBasis"in a.style||"msFlexOrder"in a.style)},i["default"].registerComponent("Player",Z),c["default"]=Z,b.exports=c["default"]},{"./big-play-button.js":46,"./component.js":48,"./control-bar/control-bar.js":49,"./error-display.js":78,"./fullscreen-api.js":81,"./loading-spinner.js":82,"./media-error.js":83,"./poster-image.js":89,"./tech/html5.js":94,"./tech/loader.js":95,"./tracks/text-track-display.js":98,"./tracks/text-track-list-converter.js":100,"./tracks/text-track-settings.js":102,"./utils/browser.js":104,"./utils/buffer.js":105,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/to-title-case.js":116,"global/document":1,"global/window":2,"object.assign":40,"safe-json-parse/tuple":45}],88:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./player.js"),f=d(e),g=function(a,b){f["default"].prototype[a]=b};c["default"]=g,b.exports=c["default"]},{"./player.js":87}],89:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./button.js"),i=e(h),j=a("./component.js"),k=e(j),l=a("./utils/fn.js"),m=d(l),n=a("./utils/dom.js"),o=d(n),p=a("./utils/browser.js"),q=d(p),r=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.update(),c.on("posterchange",m.bind(this,this.update))}return g(b,a),b.prototype.dispose=function(){this.player().off("posterchange",this.update),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var a=o.createEl("div",{className:"vjs-poster",tabIndex:-1});return q.BACKGROUND_SIZE_SUPPORTED||(this.fallbackImg_=o.createEl("img"),a.appendChild(this.fallbackImg_)),a},b.prototype.update=function(){var a=this.player().poster();this.setSrc(a),a?this.show():this.hide()},b.prototype.setSrc=function(a){if(this.fallbackImg_)this.fallbackImg_.src=a;else{var b="";a&&(b='url("'+a+'")'),this.el_.style.backgroundImage=b}},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b}(i["default"]);k["default"].registerComponent("PosterImage",r),c["default"]=r,b.exports=c["default"]},{"./button.js":47,"./component.js":48,"./utils/browser.js":104,"./utils/dom.js":107,"./utils/fn.js":109}],90:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var f=a("./utils/events.js"),g=e(f),h=a("global/document"),i=d(h),j=a("global/window"),k=d(j),l=!1,m=void 0,n=function(){var a=i["default"].getElementsByTagName("video"),b=i["default"].getElementsByTagName("audio"),c=[];if(a&&a.length>0)for(var d=0,e=a.length;e>d;d++)c.push(a[d]);if(b&&b.length>0)for(var d=0,e=b.length;e>d;d++)c.push(b[d]);if(c&&c.length>0)for(var d=0,e=c.length;e>d;d++){var f=c[d];if(!f||!f.getAttribute){o(1);break}if(void 0===f.player){var g=f.getAttribute("data-setup");if(null!==g){m(f)}}}else l||o(1)},o=function(a,b){m=b,setTimeout(n,a)};"complete"===i["default"].readyState?l=!0:g.one(k["default"],"load",function(){l=!0});var p=function(){return l};c.autoSetup=n,c.autoSetupTimeout=o,c.hasLoaded=p},{"./utils/events.js":108,"global/document":1,"global/window":2}],91:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("../component.js"),i=e(h),j=a("../utils/dom.js"),k=d(j),l=a("global/document"),m=e(l),n=a("object.assign"),o=e(n),p=function(a){function b(c,d){f(this,b),a.call(this,c,d),this.bar=this.getChild(this.options_.barName),this.vertical(!!this.options_.vertical),this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur),this.on("click",this.handleClick),this.on(c,"controlsvisible",this.update),this.on(c,this.playerEvent,this.update)}return g(b,a),b.prototype.createEl=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.className=c.className+" vjs-slider",c=o["default"]({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c),a.prototype.createEl.call(this,b,c)},b.prototype.handleMouseDown=function(a){a.preventDefault(),k.blockTextSelection(),this.addClass("vjs-sliding"),this.on(m["default"],"mousemove",this.handleMouseMove),this.on(m["default"],"mouseup",this.handleMouseUp),this.on(m["default"],"touchmove",this.handleMouseMove),this.on(m["default"],"touchend",this.handleMouseUp),this.handleMouseMove(a)},b.prototype.handleMouseMove=function(){},b.prototype.handleMouseUp=function(){k.unblockTextSelection(),this.removeClass("vjs-sliding"),this.off(m["default"],"mousemove",this.handleMouseMove),this.off(m["default"],"mouseup",this.handleMouseUp),this.off(m["default"],"touchmove",this.handleMouseMove),this.off(m["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=this.el_,c=k.findElPosition(b),d=b.offsetWidth,e=b.offsetHeight;if(this.vertical()){var f=c.top,g=void 0;return g=a.changedTouches?a.changedTouches[0].pageY:a.pageY,Math.max(0,Math.min(1,(f-g+e)/e))}var h=c.left,i=void 0;return i=a.changedTouches?a.changedTouches[0].pageX:a.pageX,Math.max(0,Math.min(1,(i-h)/d))},b.prototype.handleFocus=function(){this.on(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(i["default"]);i["default"].registerComponent("Slider",p),c["default"]=p,b.exports=c["default"]},{"../component.js":48,"../utils/dom.js":107,"global/document":1,"object.assign":40}],92:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],93:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=a.charAt(0).toUpperCase()+a.slice(1);A["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function i(a){A[a]=function(){return this.el_.vjs_getProperty(a)}}c.__esModule=!0;for(var j=a("./tech"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/time-ranges.js"),q=a("./flash-rtmp"),r=e(q),s=a("../component"),t=e(s),u=a("global/window"),v=e(u),w=a("object.assign"),x=e(w),y=v["default"].navigator,z=function(a){function b(c,d){f(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),v["default"].videojs=v["default"].videojs||{},v["default"].videojs.Flash=v["default"].videojs.Flash||{},v["default"].videojs.Flash.onReady=b.onReady,v["default"].videojs.Flash.onEvent=b.onEvent,v["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return g(b,a),b.prototype.createEl=function(){var a=this.options_,c=a.techId,d=x["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=x["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=x["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.ended()&&this.setCurrentTime(0),this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){return void 0===a?this.currentSrc():this.setSrc(a)},b.prototype.setSrc=function(a){if(a=o.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},k["default"].withSourceHandlers(z),z.nativeSourceHandler={},z.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=o.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in z.formats?"maybe":""},z.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},z.nativeSourceHandler.dispose=function(){},z.registerSourceHandler(z.nativeSourceHandler),z.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},z.onReady=function(a){var b=m.getEl(a),c=b&&b.tech;c&&c.el()&&z.checkReady(c)},z.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){z.checkReady(a)},50))},z.onEvent=function(a,b){var c=m.getEl(a).tech;c.trigger(b)},z.onError=function(a,b){var c=m.getEl(a).tech;return"srcnotfound"===b?c.error(4):void c.error("FLASH: "+b)},z.version=function(){var a="0,0,0";try{a=new v["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{y.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(y.plugins["Shockwave Flash 2.0"]||y.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},z.embed=function(a,b,c,d){var e=z.getEmbedCode(a,b,c,d),f=m.createEl("div",{innerHTML:e}).childNodes[0];return f},z.getEmbedCode=function(a,b,c,d){var e=''}),d=x["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=a+'="'+d[a]+'" '}),""+e+h+">"+g+""},r["default"](z),t["default"].registerComponent("Flash",z),c["default"]=z,b.exports=c["default"]},{"../component":48,"../utils/dom.js":107,"../utils/time-ranges.js":115,"../utils/url.js":117,"./flash-rtmp":92,"./tech":96,"global/window":2,"object.assign":40}],94:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./tech.js"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/fn.js"),q=d(p),r=a("../utils/log.js"),s=e(r),t=a("../utils/browser.js"),u=d(t),v=a("global/document"),w=e(v),x=a("global/window"),y=e(x),z=a("object.assign"),A=e(z),B=a("../utils/merge-options.js"),C=e(B),D=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=c.source;if(e&&(this.el_.currentSrc!==e.src||c.tag&&3===c.tag.initNetworkState_)&&this.setSource(e),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),m.setElAttributes(a,i)}return a},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){s["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=y["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){return void 0===a?this.el_.src:void this.setSrc(a)},b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=w["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(i["default"]);D.TEST_VID=w["default"].createElement("video");var E=w["default"].createElement("track");E.kind="captions",E.srclang="en",E.label="English",D.TEST_VID.appendChild(E),D.isSupported=function(){try{D.TEST_VID.volume=.5}catch(a){return!1}return!!D.TEST_VID.canPlayType},i["default"].withSourceHandlers(D),D.nativeSourceHandler={},D.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return D.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=o.getFileExtension(a.src),b("video/"+c)):""},D.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},D.nativeSourceHandler.dispose=function(){},D.registerSourceHandler(D.nativeSourceHandler),D.canControlVolume=function(){var a=D.TEST_VID.volume;return D.TEST_VID.volume=a/2+.1,a!==D.TEST_VID.volume},D.canControlPlaybackRate=function(){var a=D.TEST_VID.playbackRate;return D.TEST_VID.playbackRate=a/2+.1,a!==D.TEST_VID.playbackRate},D.supportsNativeTextTracks=function(){var a;return a=!!D.TEST_VID.textTracks,a&&D.TEST_VID.textTracks.length>0&&(a="number"!=typeof D.TEST_VID.textTracks[0].mode),a&&u.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in D.TEST_VID.textTracks||(a=!1),a},D.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],D.prototype.featuresVolumeControl=D.canControlVolume(),D.prototype.featuresPlaybackRate=D.canControlPlaybackRate(),D.prototype.movingMediaElementInDOM=!u.IS_IOS,D.prototype.featuresFullscreenResize=!0,D.prototype.featuresProgressEvents=!0,D.prototype.featuresNativeTextTracks=D.supportsNativeTextTracks();var F=void 0,G=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,H=/^video\/mp4/i;D.patchCanPlayType=function(){u.ANDROID_VERSION>=4&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":F.call(this,a)}),u.IS_OLD_ANDROID&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&H.test(a)?"maybe":F.call(this,a)})},D.unpatchCanPlayType=function(){var a=D.TEST_VID.constructor.prototype.canPlayType;return D.TEST_VID.constructor.prototype.canPlayType=F,F=null,a},D.patchCanPlayType(),D.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},k["default"].registerComponent("Html5",D),c["default"]=D,b.exports=c["default"]},{"../component":48,"../utils/browser.js":104,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/log.js":112,"../utils/merge-options.js":113,"../utils/url.js":117,"./tech.js":96,"global/document":1,"global/window":2,"object.assign":40}],95:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;g0&&this.trigger("loadstart")},!0)},b.prototype.manualProgressOn=function(){this.on("durationchange",this.onDurationChange),this.manualProgress=!0,this.one("ready",this.trackProgress)},b.prototype.manualProgressOff=function(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange)},b.prototype.trackProgress=function(){this.stopTrackingProgress(),this.progressInterval=this.setInterval(o.bind(this,function(){var a=this.bufferedPercent();this.bufferedPercent_!==a&&this.trigger("progress"),this.bufferedPercent_=a,1===a&&this.stopTrackingProgress()}),500)},b.prototype.onDurationChange=function(){this.duration_=this.duration()},b.prototype.buffered=function(){return r.createTimeRange(0,0)},b.prototype.bufferedPercent=function(){return s.bufferedPercent(this.buffered(),this.duration_)},b.prototype.stopTrackingProgress=function(){this.clearInterval(this.progressInterval)},b.prototype.manualTimeUpdatesOn=function(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime),this.on("pause",this.stopTrackingCurrentTime)},b.prototype.manualTimeUpdatesOff=function(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime),this.off("pause",this.stopTrackingCurrentTime)},b.prototype.trackCurrentTime=function(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval(function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},250)},b.prototype.stopTrackingCurrentTime=function(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.dispose=function(){var b=this.textTracks();if(b)for(var c=b.length;c--;)this.removeRemoteTextTrack(b[c]);this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),a.prototype.dispose.call(this)},b.prototype.error=function(a){return void 0!==a&&(this.error_=a instanceof u["default"]?a:new u["default"](a),this.trigger("error")),this.error_},b.prototype.played=function(){return this.hasStarted_?r.createTimeRange(0,0):r.createTimeRange()},b.prototype.setCurrentTime=function(){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.initTextTrackListeners=function(){var a=o.bind(this,function(){this.trigger("texttrackchange")}),b=this.textTracks();b&&(b.addEventListener("removetrack",a),b.addEventListener("addtrack",a),this.on("dispose",o.bind(this,function(){b.removeEventListener("removetrack",a),b.removeEventListener("addtrack",a)})))},b.prototype.emulateTextTracks=function(){if(!w["default"].WebVTT&&null!=this.el().parentNode){var a=y["default"].createElement("script");a.src=this.options_["vtt.js"]||"../node_modules/vtt.js/dist/vtt.js",this.el().parentNode.appendChild(a),w["default"].WebVTT=!0}var b=this.textTracks();if(b){var c=o.bind(this,function(){var a=this,c=function(){return a.trigger("texttrackchange")};c();for(var d=0;db)for(c=b;d>c;c++)e.call(this,c)},j.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=j,b.exports=c["default"]},{"../utils/browser.js":104,"global/document":1}],98:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function i(a,b,c){try{a.style[b]=c}catch(d){}}c.__esModule=!0;var j=a("../component"),k=e(j),l=a("../menu/menu.js"),m=(e(l),a("../menu/menu-item.js")),n=(e(m),a("../menu/menu-button.js")),o=(e(n),a("../utils/fn.js")),p=d(o),q=a("global/document"),r=(e(q),a("global/window")),s=e(r),t="#222",u="#ccc",v={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},w=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),c.on("loadstart",p.bind(this,this.toggleDisplay)),c.on("texttrackchange",p.bind(this,this.updateDisplay)),c.ready(p.bind(this,function(){if(c.tech&&c.tech.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",p.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},n.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=n,b.exports=c["default"]},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"global/document":1}],102:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function i(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),n.on(this.el().querySelector(".vjs-fg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".window-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-text-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-window-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-percent select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-edge-style select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-family select"),"change",p.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:j()})},b.prototype.getValues=function(){var a=this.el(),b=h(a.querySelector(".vjs-edge-style select")),c=h(a.querySelector(".vjs-font-family select")),d=h(a.querySelector(".vjs-fg-color > select")),e=h(a.querySelector(".vjs-text-opacity > select")),f=h(a.querySelector(".vjs-bg-color > select")),g=h(a.querySelector(".vjs-bg-opacity > select")),i=h(a.querySelector(".window-color > select")),j=h(a.querySelector(".vjs-window-opacity > select")),k=v["default"].parseFloat(h(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:g,textOpacity:e,windowOpacity:j,edgeStyle:b,fontFamily:c,color:d,backgroundColor:f,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();i(b.querySelector(".vjs-edge-style select"),a.edgeStyle),i(b.querySelector(".vjs-font-family select"),a.fontFamily),i(b.querySelector(".vjs-fg-color > select"),a.color),i(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),i(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),i(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),i(b.querySelector(".window-color > select"),a.windowColor),i(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),i(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=t["default"](v["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&r["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?v["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):v["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(l["default"]);l["default"].registerComponent("TextTrackSettings",w),c["default"]=w,b.exports=c["default"]},{"../component":48,"../utils/events.js":108,"../utils/fn.js":109,"../utils/log.js":112,"global/window":2,"safe-json-parse/tuple":45}],103:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var f=a("./text-track-cue-list"),g=e(f),h=a("../utils/fn.js"),i=d(h),j=a("../utils/guid.js"),k=d(j),l=a("../utils/browser.js"),m=d(l),n=a("./text-track-enums"),o=d(n),p=a("../utils/log.js"),q=e(p),r=a("../event-target"),s=e(r),t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("../xhr.js"),y=e(x),z=function D(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(m.IS_IE8){b=u["default"].createElement("custom");for(var c in D.prototype)b[c]=D.prototype[c]}b.tech_=a.tech;var d=o.TextTrackMode[a.mode]||"disabled",e=o.TextTrackKind[a.kind]||"subtitles",f=a.label||"",h=a.language||a.srclang||"",j=a.id||"vjs_text_track_"+k.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var l=new g["default"](b.cues_),n=new g["default"](b.activeCues_),p=!1,q=i.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return f},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return h},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return j},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){o.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?l:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return n;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var A=function E(a,b){if("function"!=typeof w["default"].WebVTT)return w["default"].setTimeout(function(){E(a,b)},25);var c=new w["default"].WebVTT.Parser(w["default"],w["default"].vttjs,w["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){q["default"].error(a)},c.parse(a),c.flush()},B=function(a,b){y["default"](a,i.bind(this,function(a,c,d){return a?q["default"].error(a,c):(b.loaded_=!0,void A(d,b))}))},C=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=z,b.exports=c["default"]},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"../utils/guid.js":111,"../utils/log.js":112,"../xhr.js":119,"./text-track-cue-list":97,"./text-track-enums":99,"global/document":1,"global/window":2}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/AppleWebKit\/([\d.]+)/i.exec(i),k=j?parseFloat(j.pop()):null,l=/iPhone/i.test(i);c.IS_IPHONE=l;var m=/iPad/i.test(i);c.IS_IPAD=m;var n=/iPod/i.test(i);c.IS_IPOD=n;var o=l||m||n;c.IS_IOS=o;var p=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=p;var q=/Android/i.test(i);c.IS_ANDROID=q;var r=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=r;var s=q&&/webkit/i.test(i)&&2.3>r;c.IS_OLD_ANDROID=s;var t=q&&5>r&&537>k;c.IS_NATIVE_ANDROID=t;var u=/Firefox/i.test(i);c.IS_FIREFOX=u;var v=/Chrome/i.test(i);c.IS_CHROME=v;var w=/MSIE\s8\.0/.test(i);c.IS_IE8=w;var x=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=x;var y="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=y},{"global/document":1,"global/window":2}],105:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":115}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":112}],107:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a){return 0===a.indexOf("#")&&(a=a.slice(1)),u["default"].getElementById(a)}function g(){var a=arguments.length<=0||void 0===arguments[0]?"div":arguments[0],b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=u["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var d=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?c.setAttribute(a,d):c[a]=d}),c}function h(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function i(a){var b=a[A];return b||(b=a[A]=y.newGUID()),z[b]||(z[b]={}),z[b]}function j(a){var b=a[A];return b?!!Object.getOwnPropertyNames(z[b]).length:!1}function k(a){var b=a[A];if(b){delete z[b];try{delete a[A]}catch(c){a.removeAttribute?a.removeAttribute(A):a[A]=null}}}function l(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function m(a,b){l(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function n(a,b){if(l(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);a.className=c.join(" ")}}function o(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d); -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],76:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("../../utils/dom.js"),j=d(i),k=a("../../utils/format-time.js"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"timeupdate",this.updateContent)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-remaining-time vjs-time-control vjs-control"});return this.contentEl_=j.createEl("div",{className:"vjs-remaining-time-display",innerHTML:''+this.localize("Remaining Time")+" -0:00","aria-live":"off"}),b.appendChild(this.contentEl_),b},b.prototype.updateContent=function(){if(this.player_.duration()){var a=this.localize("Remaining Time"),b=l["default"](this.player_.remainingTime());this.contentEl_.innerHTML=''+a+" -"+b}},b}(h["default"]);h["default"].registerComponent("RemainingTimeDisplay",m),c["default"]=m,b.exports=c["default"]},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],77:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-time-control vjs-time-divider",innerHTML:"
    /
    "})},b}(h["default"]);h["default"].registerComponent("TimeDivider",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],78:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../slider/slider.js"),h=d(g),i=a("../../component.js"),j=d(i),k=a("../../utils/fn.js"),l=d(k),m=a("./volume-level.js"),n=(d(m),function(a){function b(c,d){e(this,b),a.call(this,c,d),this.on(c,"volumechange",this.updateARIAAttributes),c.ready(l.bind(this,this.updateARIAAttributes))}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})},b.prototype.handleMouseMove=function(a){this.player_.muted()&&this.player_.muted(!1),this.player_.volume(this.calculateDistance(a))},b.prototype.getPercent=function(){return this.player_.muted()?0:this.player_.volume()},b.prototype.stepForward=function(){this.player_.volume(this.player_.volume()+.1)},b.prototype.stepBack=function(){this.player_.volume(this.player_.volume()-.1)},b.prototype.updateARIAAttributes=function(){var a=(100*this.player_.volume()).toFixed(2);this.el_.setAttribute("aria-valuenow",a),this.el_.setAttribute("aria-valuetext",a+"%")},b}(h["default"]));n.prototype.options_={children:{volumeLevel:{}},barName:"volumeLevel"},n.prototype.playerEvent="volumechange",j["default"].registerComponent("VolumeBar",n),c["default"]=n,b.exports=c["default"]},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"./volume-level.js":80}],79:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=a("./volume-bar.js"),j=(d(i),function(a){function b(c,d){e(this,b),a.call(this,c,d),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")})}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-control vjs-control"})},b}(h["default"]));j.prototype.options_={children:{volumeBar:{}}},h["default"].registerComponent("VolumeControl",j),c["default"]=j,b.exports=c["default"]},{"../../component.js":52,"./volume-bar.js":78}],80:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../../component.js"),h=d(g),i=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-volume-level",innerHTML:''})},b}(h["default"]);h["default"].registerComponent("VolumeLevel",i),c["default"]=i,b.exports=c["default"]},{"../../component.js":52}],81:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=(d(g),a("../component.js")),i=d(h),j=a("../menu/menu.js"),k=d(j),l=a("../menu/menu-button.js"),m=d(l),n=a("./mute-toggle.js"),o=d(n),p=a("./volume-control/volume-bar.js"),q=d(p),r=function(a){function b(c){var d=void 0===arguments[1]?{}:arguments[1];e(this,b),void 0===d.vertical&&(d.vertical=d.inline?!1:!0),d.volumeBar=d.volumeBar||{},d.volumeBar.vertical=!!d.vertical,a.call(this,c,d),this.on(c,"volumechange",this.volumeUpdate),this.on(c,"loadstart",this.volumeUpdate),c.tech&&c.tech.featuresVolumeControl===!1&&this.addClass("vjs-hidden"),this.on(c,"loadstart",function(){c.tech.featuresVolumeControl===!1?this.addClass("vjs-hidden"):this.removeClass("vjs-hidden")}),this.addClass("vjs-menu-button")}return f(b,a),b.prototype.buildCSSClass=function(){var b="";return b=this.options_.vertical?"vjs-volume-menu-button-vertical":"vjs-volume-menu-button-horizontal","vjs-volume-menu-button "+a.prototype.buildCSSClass.call(this)+" "+b},b.prototype.createMenu=function(){var a=new k["default"](this.player_,{contentElType:"div"}),b=new q["default"](this.player_,this.options_.volumeBar);return b.on("focus",function(){a.lockShowing()}),b.on("blur",function(){a.unlockShowing()}),a.addChild(b),a},b.prototype.handleClick=function(){o["default"].prototype.handleClick.call(this),a.prototype.handleClick.call(this)},b}(m["default"]);r.prototype.volumeUpdate=o["default"].prototype.update,r.prototype.controlText_="Mute",i["default"].registerComponent("VolumeMenuButton",r),c["default"]=r,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"../menu/menu-button.js":88,"../menu/menu.js":90,"./mute-toggle.js":56,"./volume-control/volume-bar.js":78}],82:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component"),h=d(g),i=a("./utils/dom.js"),j=d(i),k=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.update(),this.on(c,"error",this.update)}return f(b,a),b.prototype.createEl=function(){var b=a.prototype.createEl.call(this,"div",{className:"vjs-error-display"});return this.contentEl_=j.createEl("div"),b.appendChild(this.contentEl_),b},b.prototype.update=function(){this.player().error()&&(this.contentEl_.innerHTML=this.localize(this.player().error().message))},b}(h["default"]);h["default"].registerComponent("ErrorDisplay",k),c["default"]=k,b.exports=c["default"]},{"./component":52,"./utils/dom.js":111}],83:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=function(){};g.prototype.allowedEvents_={},g.prototype.on=function(a,b){var c=this.addEventListener;this.addEventListener=Function.prototype,f.on(this,a,b),this.addEventListener=c},g.prototype.addEventListener=g.prototype.on,g.prototype.off=function(a,b){f.off(this,a,b)},g.prototype.removeEventListener=g.prototype.off,g.prototype.one=function(a,b){f.one(this,a,b)},g.prototype.trigger=function(a){var b=a.type||a;"string"==typeof a&&(a={type:b}),a=f.fixEvent(a),this.allowedEvents_[b]&&this["on"+b]&&this["on"+b](a),f.trigger(this,a)},g.prototype.dispatchEvent=g.prototype.trigger,c["default"]=g,b.exports=c["default"]},{"./utils/events.js":112}],84:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/log"),f=d(e),g=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.super_=b)},h=function(a){var b=void 0===arguments[1]?{}:arguments[1],c=function(){a.apply(this,arguments)},d={};"object"==typeof b?("function"==typeof b.init&&(f["default"].warn("Constructor logic via init() is deprecated; please use constructor() instead."),b.constructor=b.init),b.constructor!==Object.prototype.constructor&&(c=b.constructor),d=b):"function"==typeof b&&(c=b),g(c,a);for(var e in d)d.hasOwnProperty(e)&&(c.prototype[e]=d[e]);return c};c["default"]=h,b.exports=c["default"]},{"./utils/log":116}],85:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;for(var e=a("global/document"),f=d(e),g={},h=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=h[0],j=void 0,k=0;k1&&this.show()},b.prototype.createMenu=function(){var a=new l["default"](this.player_);if(this.options_.title&&a.contentEl().appendChild(n.createEl("li",{className:"vjs-menu-title",innerHTML:r["default"](this.options_.title),tabIndex:-1})),this.items=this.createItems(),this.items)for(var b=0;b0&&this.items[0].el().focus()},b.prototype.unpressButton=function(){this.buttonPressed_=!1,this.menu.unlockShowing(),this.el_.setAttribute("aria-pressed",!1)},b}(h["default"]);j["default"].registerComponent("MenuButton",s),c["default"]=s,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/to-title-case.js":120,"./menu.js":90}],89:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../button.js"),h=d(g),i=a("../component.js"),j=d(i),k=a("object.assign"),l=d(k),m=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.selected(d.selected)}return f(b,a),b.prototype.createEl=function(b,c){return a.prototype.createEl.call(this,"li",l["default"]({className:"vjs-menu-item",innerHTML:this.localize(this.options_.label)},c))},b.prototype.handleClick=function(){this.selected(!0)},b.prototype.selected=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){a?(this.addClass("vjs-selected"),this.el_.setAttribute("aria-selected",!0)):(this.removeClass("vjs-selected"),this.el_.setAttribute("aria-selected",!1))}),b}(h["default"]);j["default"].registerComponent("MenuItem",m),c["default"]=m,b.exports=c["default"]},{"../button.js":51,"../component.js":52,"object.assign":44}],90:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=a("../utils/fn.js"),l=d(k),m=a("../utils/events.js"),n=d(m),o=function(a){function b(){e(this,b),null!=a&&a.apply(this,arguments)}return f(b,a),b.prototype.addItem=function(a){this.addChild(a),a.on("click",l.bind(this,function(){this.unlockShowing()}))},b.prototype.createEl=function(){var b=this.options_.contentElType||"ul";this.contentEl_=j.createEl(b,{className:"vjs-menu-content"});var c=a.prototype.createEl.call(this,"div",{append:this.contentEl_,className:"vjs-menu"});return c.appendChild(this.contentEl_),n.on(c,"click",function(a){a.preventDefault(),a.stopImmediatePropagation()}),c},b}(h["default"]);h["default"].registerComponent("Menu",o),c["default"]=o,b.exports=c["default"]},{"../component.js":52,"../utils/dom.js":111,"../utils/events.js":112,"../utils/fn.js":113}],91:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./component.js"),h=d(g),i=a("global/document"),j=d(i),k=a("global/window"),l=d(k),m=a("./utils/events.js"),n=d(m),o=a("./utils/dom.js"),p=d(o),q=a("./utils/fn.js"),r=d(q),s=a("./utils/guid.js"),t=d(s),u=a("./utils/browser.js"),v=(d(u),a("./utils/log.js")),w=d(v),x=a("./utils/to-title-case.js"),y=d(x),z=a("./utils/time-ranges.js"),A=a("./utils/buffer.js"),B=a("./utils/stylesheet.js"),C=d(B),D=a("./fullscreen-api.js"),E=d(D),F=a("./media-error.js"),G=d(F),H=a("safe-json-parse/tuple"),I=d(H),J=a("object.assign"),K=d(J),L=a("./utils/merge-options.js"),M=d(L),N=a("./tracks/text-track-list-converter.js"),O=d(N),P=a("./tech/loader.js"),Q=(d(P),a("./poster-image.js")),R=(d(Q),a("./tracks/text-track-display.js")),S=(d(R),a("./loading-spinner.js")),T=(d(S),a("./big-play-button.js")),U=(d(T),a("./control-bar/control-bar.js")),V=(d(U),a("./error-display.js")),W=(d(V),a("./tracks/text-track-settings.js")),X=(d(W),a("./tech/html5.js")),Y=(d(X),function(a){function b(c,d,f){var g=this;if(e(this,b),c.id=c.id||"vjs_video_"+t.newGUID(),d=K["default"](b.getTagSettings(c),d),d.initChildren=!1,d.createEl=!1,d.reportTouchActivity=!1,a.call(this,null,d,f),!this.options_||!this.options_.techOrder||!this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");this.tag=c,this.tagAttributes=c&&p.getElAttributes(c),this.language(this.options_.language),d.languages?!function(){var a={};Object.getOwnPropertyNames(d.languages).forEach(function(b){a[b.toLowerCase()]=d.languages[b]}),g.languages_=a}():this.languages_=b.prototype.options_.languages,this.cache_={},this.poster_=d.poster||"",this.controls_=!!d.controls,c.controls=!1,this.scrubbing_=!1,this.el_=this.createEl();var h=M["default"](this.options_);d.plugins&&!function(){var a=d.plugins;Object.getOwnPropertyNames(a).forEach(function(b){a[b].playerOptions=h,"function"==typeof this[b]?this[b](a[b]):w["default"].error("Unable to find plugin:",b)},g)}(),this.options_.playerOptions=h,this.initChildren(),this.isAudio("audio"===c.nodeName.toLowerCase()),this.addClass(this.controls()?"vjs-controls-enabled":"vjs-controls-disabled"),this.isAudio()&&this.addClass("vjs-audio"),this.flexNotSupported_()&&this.addClass("vjs-no-flex"),b.players[this.id_]=this,this.userActive_=!0,this.reportUserActivity(),this.listenForUserActivity(),this.on("fullscreenchange",this.handleFullscreenChange),this.on("stageclick",this.handleStageClick)}return f(b,a),b.prototype.dispose=function(){this.trigger("dispose"),this.off("dispose"),this.styleEl_&&this.styleEl_.parentNode.removeChild(this.styleEl_),b.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech&&this.tech.dispose(),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var b=this.el_=a.prototype.createEl.call(this,"div"),c=this.tag;c.removeAttribute("width"),c.removeAttribute("height");var d=p.getElAttributes(c);Object.getOwnPropertyNames(d).forEach(function(a){"class"===a?b.className=d[a]:b.setAttribute(a,d[a])}),c.id+="_html5_api",c.className="vjs-tech",c.player=b.player=this,this.addClass("vjs-paused"),this.styleEl_=C.createStyleElement("vjs-styles-dimensions");var e=j["default"].querySelector(".vjs-styles-defaults"),f=j["default"].querySelector("head");return f.insertBefore(this.styleEl_,e?e.nextSibling:f.firstChild),this.width(this.options_.width),this.height(this.options_.height),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),c.initNetworkState_=c.networkState,c.parentNode&&c.parentNode.insertBefore(b,c),p.insertElFirst(c,b),this.el_=b,b},b.prototype.width=function(a){return this.dimension("width",a)},b.prototype.height=function(a){return this.dimension("height",a)},b.prototype.dimension=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b){var c=a+"_";if(void 0===b)return this[c]||0;if(""===b)this[c]=void 0;else{var d=parseFloat(b);if(isNaN(d))return w["default"].error('Improper value "'+b+'" supplied for for '+a),this;this[c]=d}return this.updateStyleEl_(),this}),b.prototype.fluid=function(a){return void 0===a?!!this.fluid_:(this.fluid_=!!a,void(a?this.addClass("vjs-fluid"):this.removeClass("vjs-fluid")))},b.prototype.aspectRatio=function(a){if(void 0===a)return this.aspectRatio_;if(!/^\d+\:\d+$/.test(a))throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");this.aspectRatio_=a,this.fluid(!0),this.updateStyleEl_()},b.prototype.updateStyleEl_=function(){var a=void 0,b=void 0,c=void 0;c=void 0!==this.aspectRatio_&&"auto"!==this.aspectRatio_?this.aspectRatio_:this.videoWidth()?this.videoWidth()+":"+this.videoHeight():"16:9";var d=c.split(":"),e=d[1]/d[0];a=void 0!==this.width_?this.width_:void 0!==this.height_?this.height_/e:this.videoWidth()||300,b=void 0!==this.height_?this.height_:a*e;var f=this.id()+"-dimensions";this.addClass(f),C.setTextContent(this.styleEl_,"\n ."+f+" {\n width: "+a+"px;\n height: "+b+"px;\n }\n\n ."+f+".vjs-fluid {\n padding-top: "+100*e+"%;\n }\n ")},b.prototype.loadTech=function(a,b){this.tech&&this.unloadTech(),"Html5"!==a&&this.tag&&(h["default"].getComponent("Html5").disposeMediaElement(this.tag),this.tag.player=null,this.tag=null),this.techName=a,this.isReady_=!1;var c=r.bind(this,function(){this.triggerReady()}),d=K["default"]({source:b,playerId:this.id(),techId:""+this.id()+"_"+a+"_api",textTracks:this.textTracks_,autoplay:this.options_.autoplay,preload:this.options_.preload,loop:this.options_.loop,muted:this.options_.muted,poster:this.poster(),language:this.language(),"vtt.js":this.options_["vtt.js"]},this.options_[a.toLowerCase()]);this.tag&&(d.tag=this.tag),b&&(this.currentType_=b.type,b.src===this.cache_.src&&this.cache_.currentTime>0&&(d.startTime=this.cache_.currentTime),this.cache_.src=b.src);var e=h["default"].getComponent(a);this.tech=new e(d),O["default"].jsonToTextTracks(this.textTracksJson_||[],this.tech),this.on(this.tech,"ready",this.handleTechReady),this.on(this.tech,"usenativecontrols",this.handleTechUseNativeControls),this.on(this.tech,"loadstart",this.handleTechLoadStart),this.on(this.tech,"waiting",this.handleTechWaiting),this.on(this.tech,"canplay",this.handleTechCanPlay),this.on(this.tech,"canplaythrough",this.handleTechCanPlayThrough),this.on(this.tech,"playing",this.handleTechPlaying),this.on(this.tech,"ended",this.handleTechEnded),this.on(this.tech,"seeking",this.handleTechSeeking),this.on(this.tech,"seeked",this.handleTechSeeked),this.on(this.tech,"play",this.handleTechPlay),this.on(this.tech,"firstplay",this.handleTechFirstPlay),this.on(this.tech,"pause",this.handleTechPause),this.on(this.tech,"progress",this.handleTechProgress),this.on(this.tech,"durationchange",this.handleTechDurationChange),this.on(this.tech,"fullscreenchange",this.handleTechFullscreenChange),this.on(this.tech,"error",this.handleTechError),this.on(this.tech,"suspend",this.handleTechSuspend),this.on(this.tech,"abort",this.handleTechAbort),this.on(this.tech,"emptied",this.handleTechEmptied),this.on(this.tech,"stalled",this.handleTechStalled),this.on(this.tech,"loadedmetadata",this.handleTechLoadedMetaData),this.on(this.tech,"loadeddata",this.handleTechLoadedData),this.on(this.tech,"timeupdate",this.handleTechTimeUpdate),this.on(this.tech,"ratechange",this.handleTechRateChange),this.on(this.tech,"volumechange",this.handleTechVolumeChange),this.on(this.tech,"texttrackchange",this.onTextTrackChange),this.on(this.tech,"loadedmetadata",this.updateStyleEl_),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners(),this.tech.el().parentNode===this.el()||"Html5"===a&&this.tag||p.insertElFirst(this.tech.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null),this.tech.ready(c,!0)},b.prototype.unloadTech=function(){this.textTracks_=this.textTracks(),this.textTracksJson_=O["default"].textTracksToJson(this),this.isReady_=!1,this.tech.dispose(),this.tech=!1},b.prototype.addTechControlsListeners=function(){this.on(this.tech,"mousedown",this.handleTechClick),this.on(this.tech,"touchstart",this.handleTechTouchStart),this.on(this.tech,"touchmove",this.handleTechTouchMove),this.on(this.tech,"touchend",this.handleTechTouchEnd),this.on(this.tech,"tap",this.handleTechTap)},b.prototype.removeTechControlsListeners=function(){this.off(this.tech,"tap",this.handleTechTap),this.off(this.tech,"touchstart",this.handleTechTouchStart),this.off(this.tech,"touchmove",this.handleTechTouchMove),this.off(this.tech,"touchend",this.handleTechTouchEnd),this.off(this.tech,"mousedown",this.handleTechClick)},b.prototype.handleTechReady=function(){this.triggerReady(),this.cache_.volume&&this.techCall("setVolume",this.cache_.volume),this.tag&&this.options_.autoplay&&this.paused()&&(delete this.tag.poster,this.play())},b.prototype.handleTechUseNativeControls=function(){this.usingNativeControls(!0)},b.prototype.handleTechLoadStart=function(){this.removeClass("vjs-ended"),this.error(null),this.paused()?(this.hasStarted(!1),this.trigger("loadstart")):(this.trigger("loadstart"),this.trigger("firstplay"))},b.prototype.hasStarted=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0!==a?(this.hasStarted_!==a&&(this.hasStarted_=a,a?(this.addClass("vjs-has-started"),this.trigger("firstplay")):this.removeClass("vjs-has-started")),this):!!this.hasStarted_}),b.prototype.handleTechPlay=function(){this.removeClass("vjs-ended"),this.removeClass("vjs-paused"),this.addClass("vjs-playing"),this.hasStarted(!0),this.trigger("play")},b.prototype.handleTechWaiting=function(){this.addClass("vjs-waiting"),this.trigger("waiting")},b.prototype.handleTechCanPlay=function(){this.removeClass("vjs-waiting"),this.trigger("canplay")},b.prototype.handleTechCanPlayThrough=function(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")},b.prototype.handleTechPlaying=function(){this.removeClass("vjs-waiting"),this.trigger("playing")},b.prototype.handleTechSeeking=function(){this.addClass("vjs-seeking"),this.trigger("seeking")},b.prototype.handleTechSeeked=function(){this.removeClass("vjs-seeking"),this.trigger("seeked")},b.prototype.handleTechFirstPlay=function(){this.options_.starttime&&this.currentTime(this.options_.starttime),this.addClass("vjs-has-started"),this.trigger("firstplay")},b.prototype.handleTechPause=function(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")},b.prototype.handleTechProgress=function(){this.trigger("progress"),1===this.bufferedPercent()&&this.trigger("loadedalldata")},b.prototype.handleTechEnded=function(){this.addClass("vjs-ended"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")},b.prototype.handleTechDurationChange=function(){this.updateDuration(),this.trigger("durationchange")},b.prototype.handleTechClick=function(a){0===a.button&&this.controls()&&(this.paused()?this.play():this.pause())},b.prototype.handleTechTap=function(){this.userActive(!this.userActive())},b.prototype.handleTechTouchStart=function(){this.userWasActive=this.userActive()},b.prototype.handleTechTouchMove=function(){this.userWasActive&&this.reportUserActivity()},b.prototype.handleTechTouchEnd=function(a){a.preventDefault()},b.prototype.updateDuration=function(){var a=this.techGet("duration");a&&(0>a&&(a=1/0),this.duration(a),a===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"))},b.prototype.handleFullscreenChange=function(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")},b.prototype.handleStageClick=function(){ -this.reportUserActivity()},b.prototype.handleTechFullscreenChange=function(a,b){b&&this.isFullscreen(b.isFullscreen),this.trigger("fullscreenchange")},b.prototype.handleTechError=function(){this.error(this.tech.error().code)},b.prototype.handleTechSuspend=function(){this.trigger("suspend")},b.prototype.handleTechAbort=function(){this.trigger("abort")},b.prototype.handleTechEmptied=function(){this.trigger("emptied")},b.prototype.handleTechStalled=function(){this.trigger("stalled")},b.prototype.handleTechLoadedMetaData=function(){this.trigger("loadedmetadata")},b.prototype.handleTechLoadedData=function(){this.trigger("loadeddata")},b.prototype.handleTechTimeUpdate=function(){this.trigger("timeupdate")},b.prototype.handleTechRateChange=function(){this.trigger("ratechange")},b.prototype.handleTechVolumeChange=function(){this.trigger("volumechange")},b.prototype.onTextTrackChange=function(){this.trigger("texttrackchange")},b.prototype.getCache=function(){return this.cache_},b.prototype.techCall=function(a,b){if(this.tech&&!this.tech.isReady_)this.tech.ready(function(){this[a](b)},!0);else try{this.tech[a](b)}catch(c){throw w["default"](c),c}},b.prototype.techGet=function(a){if(this.tech&&this.tech.isReady_)try{return this.tech[a]()}catch(b){throw void 0===this.tech[a]?w["default"]("Video.js: "+a+" method not defined for "+this.techName+" playback technology.",b):"TypeError"===b.name?(w["default"]("Video.js: "+a+" unavailable on "+this.techName+" playback technology element.",b),this.tech.isReady_=!1):w["default"](b),b}},b.prototype.play=function(){return this.techCall("play"),this},b.prototype.pause=function(){return this.techCall("pause"),this},b.prototype.paused=function(){return this.techGet("paused")===!1?!1:!0},b.prototype.scrubbing=function(a){return void 0!==a?(this.scrubbing_=!!a,a?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing"),this):this.scrubbing_},b.prototype.currentTime=function(a){return void 0!==a?(this.techCall("setCurrentTime",a),this):this.cache_.currentTime=this.techGet("currentTime")||0},b.prototype.duration=function(a){return void 0!==a?(this.cache_.duration=parseFloat(a),this):(void 0===this.cache_.duration&&this.updateDuration(),this.cache_.duration||0)},b.prototype.remainingTime=function(){return this.duration()-this.currentTime()},b.prototype.buffered=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){var a=this.techGet("buffered");return a&&a.length||(a=z.createTimeRange(0,0)),a}),b.prototype.bufferedPercent=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return A.bufferedPercent(this.buffered(),this.duration())}),b.prototype.bufferedEnd=function(){var a=this.buffered(),b=this.duration(),c=a.end(a.length-1);return c>b&&(c=b),c},b.prototype.volume=function(a){var b=void 0;return void 0!==a?(b=Math.max(0,Math.min(1,parseFloat(a))),this.cache_.volume=b,this.techCall("setVolume",b),this):(b=parseFloat(this.techGet("volume")),isNaN(b)?1:b)},b.prototype.muted=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0!==a?(this.techCall("setMuted",a),this):this.techGet("muted")||!1}),b.prototype.supportsFullScreen=function(){return this.techGet("supportsFullScreen")||!1},b.prototype.isFullscreen=function(a){return void 0!==a?(this.isFullscreen_=!!a,this):!!this.isFullscreen_},b.prototype.requestFullscreen=function(){var a=E["default"];return this.isFullscreen(!0),a.requestFullscreen?(n.on(j["default"],a.fullscreenchange,r.bind(this,function b(){this.isFullscreen(j["default"][a.fullscreenElement]),this.isFullscreen()===!1&&n.off(j["default"],a.fullscreenchange,b),this.trigger("fullscreenchange")})),this.el_[a.requestFullscreen]()):this.tech.supportsFullScreen()?this.techCall("enterFullScreen"):(this.enterFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.exitFullscreen=function(){var a=E["default"];return this.isFullscreen(!1),a.requestFullscreen?j["default"][a.exitFullscreen]():this.tech.supportsFullScreen()?this.techCall("exitFullScreen"):(this.exitFullWindow(),this.trigger("fullscreenchange")),this},b.prototype.enterFullWindow=function(){this.isFullWindow=!0,this.docOrigOverflow=j["default"].documentElement.style.overflow,n.on(j["default"],"keydown",r.bind(this,this.fullWindowOnEscKey)),j["default"].documentElement.style.overflow="hidden",p.addElClass(j["default"].body,"vjs-full-window"),this.trigger("enterFullWindow")},b.prototype.fullWindowOnEscKey=function(a){27===a.keyCode&&(this.isFullscreen()===!0?this.exitFullscreen():this.exitFullWindow())},b.prototype.exitFullWindow=function(){this.isFullWindow=!1,n.off(j["default"],"keydown",this.fullWindowOnEscKey),j["default"].documentElement.style.overflow=this.docOrigOverflow,p.removeElClass(j["default"].body,"vjs-full-window"),this.trigger("exitFullWindow")},b.prototype.selectSource=function(a){for(var b=0,c=this.options_.techOrder;b0&&(h=this.setTimeout(function(){this.userActivity_||this.userActive(!1)},a))}},250)}},b.prototype.playbackRate=function(a){return void 0!==a?(this.techCall("setPlaybackRate",a),this):this.tech&&this.tech.featuresPlaybackRate?this.techGet("playbackRate"):1},b.prototype.isAudio=function(a){return void 0!==a?(this.isAudio_=!!a,this):!!this.isAudio_},b.prototype.networkState=function(){return this.techGet("networkState")},b.prototype.readyState=function(){return this.techGet("readyState")},b.prototype.textTracks=function(){return this.tech&&this.tech.textTracks()},b.prototype.remoteTextTracks=function(){return this.tech&&this.tech.remoteTextTracks()},b.prototype.addTextTrack=function(a,b,c){return this.tech&&this.tech.addTextTrack(a,b,c)},b.prototype.addRemoteTextTrack=function(a){return this.tech&&this.tech.addRemoteTextTrack(a)},b.prototype.removeRemoteTextTrack=function(a){this.tech&&this.tech.removeRemoteTextTrack(a)},b.prototype.videoWidth=function(){return this.tech&&this.tech.videoWidth&&this.tech.videoWidth()||0},b.prototype.videoHeight=function(){return this.tech&&this.tech.videoHeight&&this.tech.videoHeight()||0},b.prototype.language=function(a){return void 0===a?this.language_:(this.language_=(""+a).toLowerCase(),this)},b.prototype.languages=function(){return M["default"](b.prototype.options_.languages,this.languages_)},b.prototype.toJSON=function(){var a=M["default"](this.options_),b=a.tracks;a.tracks=[];for(var c=0;ci;i++){var k=h[i],l=k.nodeName.toLowerCase();"source"===l?b.sources.push(p.getElAttributes(k)):"track"===l&&b.tracks.push(p.getElAttributes(k))}return b},b}(h["default"]));Y.players={};var Z=l["default"].navigator;Y.prototype.options_={techOrder:["html5","flash"],html5:{},flash:{},defaultVolume:0,inactivityTimeout:2e3,playbackRates:[],children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{},textTrackSettings:{}},language:j["default"].getElementsByTagName("html")[0].getAttribute("lang")||Z.languages&&Z.languages[0]||Z.userLanguage||Z.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."},Y.prototype.handleLoadedMetaData,Y.prototype.handleLoadedData,Y.prototype.handleLoadedAllData,Y.prototype.handleUserActive,Y.prototype.handleUserInactive,Y.prototype.handleTimeUpdate,Y.prototype.handleVolumeChange,Y.prototype.handleError,Y.prototype.flexNotSupported_=function(){var a=j["default"].createElement("i");return!("flexBasis"in a.style||"webkitFlexBasis"in a.style||"mozFlexBasis"in a.style||"msFlexBasis"in a.style||"msFlexOrder"in a.style)},h["default"].registerComponent("Player",Y),c["default"]=Y,b.exports=c["default"]},{"./big-play-button.js":50,"./component.js":52,"./control-bar/control-bar.js":53,"./error-display.js":82,"./fullscreen-api.js":85,"./loading-spinner.js":86,"./media-error.js":87,"./poster-image.js":93,"./tech/html5.js":98,"./tech/loader.js":99,"./tracks/text-track-display.js":102,"./tracks/text-track-list-converter.js":104,"./tracks/text-track-settings.js":106,"./utils/browser.js":108,"./utils/buffer.js":109,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/to-title-case.js":120,"global/document":1,"global/window":2,"object.assign":44,"safe-json-parse/tuple":49}],92:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./player.js"),f=d(e),g=function(a,b){f["default"].prototype[a]=b};c["default"]=g,b.exports=c["default"]},{"./player.js":91}],93:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./button.js"),h=d(g),i=a("./component.js"),j=d(i),k=a("./utils/fn.js"),l=d(k),m=a("./utils/dom.js"),n=d(m),o=a("./utils/browser.js"),p=d(o),q=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.update(),c.on("posterchange",l.bind(this,this.update))}return f(b,a),b.prototype.dispose=function(){this.player().off("posterchange",this.update),a.prototype.dispose.call(this)},b.prototype.createEl=function(){var a=n.createEl("div",{className:"vjs-poster",tabIndex:-1});return p.BACKGROUND_SIZE_SUPPORTED||(this.fallbackImg_=n.createEl("img"),a.appendChild(this.fallbackImg_)),a},b.prototype.update=function(){var a=this.player().poster();this.setSrc(a),a?this.show():this.hide()},b.prototype.setSrc=function(a){if(this.fallbackImg_)this.fallbackImg_.src=a;else{var b="";a&&(b='url("'+a+'")'),this.el_.style.backgroundImage=b}},b.prototype.handleClick=function(){this.player_.paused()?this.player_.play():this.player_.pause()},b}(h["default"]);j["default"].registerComponent("PosterImage",q),c["default"]=q,b.exports=c["default"]},{"./button.js":51,"./component.js":52,"./utils/browser.js":108,"./utils/dom.js":111,"./utils/fn.js":113}],94:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/events.js"),f=d(e),g=a("global/document"),h=d(g),i=a("global/window"),j=d(i),k=!1,l=void 0,m=function(){var a=h["default"].getElementsByTagName("video"),b=h["default"].getElementsByTagName("audio"),c=[];if(a&&a.length>0)for(var d=0,e=a.length;e>d;d++)c.push(a[d]);if(b&&b.length>0)for(var d=0,e=b.length;e>d;d++)c.push(b[d]);if(c&&c.length>0)for(var d=0,e=c.length;e>d;d++){var f=c[d];if(!f||!f.getAttribute){n(1);break}if(void 0===f.player){var g=f.getAttribute("data-setup");if(null!==g){l(f)}}}else k||n(1)},n=function(a,b){l=b,setTimeout(m,a)};"complete"===h["default"].readyState?k=!0:f.one(j["default"],"load",function(){k=!0});var o=function(){return k};c.autoSetup=m,c.autoSetupTimeout=n,c.hasLoaded=o},{"./utils/events.js":112,"global/document":1,"global/window":2}],95:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component.js"),h=d(g),i=a("../utils/dom.js"),j=d(i),k=a("global/document"),l=d(k),m=a("object.assign"),n=d(m),o=function(a){function b(c,d){e(this,b),a.call(this,c,d),this.bar=this.getChild(this.options_.barName),this.vertical(!!this.options_.vertical),this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown),this.on("focus",this.handleFocus),this.on("blur",this.handleBlur),this.on("click",this.handleClick),this.on(c,"controlsvisible",this.update),this.on(c,this.playerEvent,this.update)}return f(b,a),b.prototype.createEl=function(b){var c=void 0===arguments[1]?{}:arguments[1];return c.className=c.className+" vjs-slider",c=n["default"]({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c),a.prototype.createEl.call(this,b,c)},b.prototype.handleMouseDown=function(a){a.preventDefault(),j.blockTextSelection(),this.addClass("vjs-sliding"),this.on(l["default"],"mousemove",this.handleMouseMove),this.on(l["default"],"mouseup",this.handleMouseUp),this.on(l["default"],"touchmove",this.handleMouseMove),this.on(l["default"],"touchend",this.handleMouseUp),this.handleMouseMove(a)},b.prototype.handleMouseMove=function(){},b.prototype.handleMouseUp=function(){j.unblockTextSelection(),this.removeClass("vjs-sliding"),this.off(l["default"],"mousemove",this.handleMouseMove),this.off(l["default"],"mouseup",this.handleMouseUp),this.off(l["default"],"touchmove",this.handleMouseMove),this.off(l["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=this.el_,c=j.findElPosition(b),d=b.offsetWidth,e=b.offsetHeight;if(this.vertical()){var f=c.top,g=void 0;return g=a.changedTouches?a.changedTouches[0].pageY:a.pageY,Math.max(0,Math.min(1,(f-g+e)/e))}var h=c.left,i=void 0;return i=a.changedTouches?a.changedTouches[0].pageX:a.pageX,Math.max(0,Math.min(1,(i-h)/d))},b.prototype.handleFocus=function(){this.on(l["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(l["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(h["default"]);h["default"].registerComponent("Slider",o),c["default"]=o,b.exports=c["default"]},{"../component.js":52,"../utils/dom.js":111,"global/document":1,"object.assign":44}],96:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],97:[function(a,b,c){"use strict";function d(a){var b=a.charAt(0).toUpperCase()+a.slice(1);z["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function e(a){z[a]=function(){return this.el_.vjs_getProperty(a)}}var f=function(a){return a&&a.__esModule?a:{"default":a}},g=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},h=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;for(var i=a("./tech"),j=f(i),k=a("../utils/dom.js"),l=f(k),m=a("../utils/url.js"),n=f(m),o=a("../utils/time-ranges.js"),p=a("./flash-rtmp"),q=f(p),r=a("../component"),s=f(r),t=a("global/window"),u=f(t),v=a("object.assign"),w=f(v),x=u["default"].navigator,y=function(a){function b(c,d){g(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),u["default"].videojs=u["default"].videojs||{},u["default"].videojs.Flash=u["default"].videojs.Flash||{},u["default"].videojs.Flash.onReady=b.onReady,u["default"].videojs.Flash.onEvent=b.onEvent,u["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return h(b,a),b.prototype.createEl=function(){var a=this.options_,c=a.techId,d=w["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=w["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=w["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0===a?this.currentSrc():this.setSrc(a)}),b.prototype.setSrc=function(a){if(a=n.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},j["default"].withSourceHandlers(y),y.nativeSourceHandler={},y.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=n.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in y.formats?"maybe":""},y.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},y.nativeSourceHandler.dispose=function(){},y.registerSourceHandler(y.nativeSourceHandler),y.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},y.onReady=function(a){var b=l.getEl(a),c=b&&b.tech;c&&c.el()&&y.checkReady(c)},y.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){y.checkReady(a)},50))},y.onEvent=function(a,b){var c=l.getEl(a).tech;c.trigger(b)},y.onError=function(a,b){var c=l.getEl(a).tech,d="FLASH: "+b;"srcnotfound"===b?c.trigger("error",{code:4,message:d}):c.trigger("error",d)},y.version=function(){var a="0,0,0";try{a=new u["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{x.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(x.plugins["Shockwave Flash 2.0"]||x.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},y.embed=function(a,b,c,d){var e=y.getEmbedCode(a,b,c,d),f=l.createEl("div",{innerHTML:e}).childNodes[0];return f},y.getEmbedCode=function(a,b,c,d){var e=''}),d=w["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=""+a+'="'+d[a]+'" '}),""+e+h+">"+g+""},q["default"](y),s["default"].registerComponent("Flash",y),c["default"]=y,b.exports=c["default"]},{"../component":52,"../utils/dom.js":111,"../utils/time-ranges.js":119,"../utils/url.js":121,"./flash-rtmp":96,"./tech":100,"global/window":2,"object.assign":44}],98:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("./tech.js"),h=d(g),i=a("../component"),j=d(i),k=a("../utils/dom.js"),l=d(k),m=a("../utils/url.js"),n=d(m),o=a("../utils/fn.js"),p=d(o),q=a("../utils/log.js"),r=d(q),s=a("../utils/browser.js"),t=d(s),u=a("global/document"),v=d(u),w=a("global/window"),x=d(w),y=a("object.assign"),z=d(y),A=a("../utils/merge-options.js"),B=d(A),C=function(a){function b(c,d){e(this,b),a.call(this,c,d);var f=c.source;if(f&&(this.el_.currentSrc!==f.src||c.tag&&3===c.tag.initNetworkState_)&&this.setSource(f),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),l.setElAttributes(a,i)}return a},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){r["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=x["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){return void 0===a?this.el_.src:void this.setSrc(a)}),b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error; - -},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=v["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(h["default"]);C.TEST_VID=v["default"].createElement("video");var D=v["default"].createElement("track");D.kind="captions",D.srclang="en",D.label="English",C.TEST_VID.appendChild(D),C.isSupported=function(){try{C.TEST_VID.volume=.5}catch(a){return!1}return!!C.TEST_VID.canPlayType},h["default"].withSourceHandlers(C),C.nativeSourceHandler={},C.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return C.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=n.getFileExtension(a.src),b("video/"+c)):""},C.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},C.nativeSourceHandler.dispose=function(){},C.registerSourceHandler(C.nativeSourceHandler),C.canControlVolume=function(){var a=C.TEST_VID.volume;return C.TEST_VID.volume=a/2+.1,a!==C.TEST_VID.volume},C.canControlPlaybackRate=function(){var a=C.TEST_VID.playbackRate;return C.TEST_VID.playbackRate=a/2+.1,a!==C.TEST_VID.playbackRate},C.supportsNativeTextTracks=function(){var a;return a=!!C.TEST_VID.textTracks,a&&C.TEST_VID.textTracks.length>0&&(a="number"!=typeof C.TEST_VID.textTracks[0].mode),a&&t.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in C.TEST_VID.textTracks||(a=!1),a},C.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],C.prototype.featuresVolumeControl=C.canControlVolume(),C.prototype.featuresPlaybackRate=C.canControlPlaybackRate(),C.prototype.movingMediaElementInDOM=!t.IS_IOS,C.prototype.featuresFullscreenResize=!0,C.prototype.featuresProgressEvents=!0,C.prototype.featuresNativeTextTracks=C.supportsNativeTextTracks();var E=void 0,F=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,G=/^video\/mp4/i;C.patchCanPlayType=function(){t.ANDROID_VERSION>=4&&(E||(E=C.TEST_VID.constructor.prototype.canPlayType),C.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&F.test(a)?"maybe":E.call(this,a)}),t.IS_OLD_ANDROID&&(E||(E=C.TEST_VID.constructor.prototype.canPlayType),C.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":E.call(this,a)})},C.unpatchCanPlayType=function(){var a=C.TEST_VID.constructor.prototype.canPlayType;return C.TEST_VID.constructor.prototype.canPlayType=E,E=null,a},C.patchCanPlayType(),C.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},j["default"].registerComponent("Html5",C),c["default"]=C,b.exports=c["default"]},{"../component":52,"../utils/browser.js":108,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/log.js":116,"../utils/merge-options.js":117,"../utils/url.js":121,"./tech.js":100,"global/document":1,"global/window":2,"object.assign":44}],99:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}},e=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},f=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;g0&&this.trigger("loadstart")},!0)},b.prototype.manualProgressOn=function(){this.on("durationchange",this.onDurationChange),this.manualProgress=!0,this.one("ready",this.trackProgress)},b.prototype.manualProgressOff=function(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange)},b.prototype.trackProgress=function(){this.stopTrackingProgress(),this.progressInterval=this.setInterval(n.bind(this,function(){var a=this.bufferedPercent();this.bufferedPercent_!==a&&this.trigger("progress"),this.bufferedPercent_=a,1===a&&this.stopTrackingProgress()}),500)},b.prototype.onDurationChange=function(){this.duration_=this.duration()},b.prototype.buffered=function(){return q.createTimeRange(0,0)},b.prototype.bufferedPercent=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return r.bufferedPercent(this.buffered(),this.duration_)}),b.prototype.stopTrackingProgress=function(){this.clearInterval(this.progressInterval)},b.prototype.manualTimeUpdatesOn=function(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime),this.on("pause",this.stopTrackingCurrentTime)},b.prototype.manualTimeUpdatesOff=function(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime),this.off("pause",this.stopTrackingCurrentTime)},b.prototype.trackCurrentTime=function(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval(function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},250)},b.prototype.stopTrackingCurrentTime=function(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.dispose=function(){for(var b=this.textTracks(),c=b.length;c--;)this.removeRemoteTextTrack(b[c]);this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),a.prototype.dispose.call(this)},b.prototype.played=function(){return this.hasStarted_?q.createTimeRange(0,0):q.createTimeRange()},b.prototype.setCurrentTime=function(){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},b.prototype.initTextTrackListeners=function(){var a=n.bind(this,function(){this.trigger("texttrackchange")}),b=this.textTracks();b&&(b.addEventListener("removetrack",a),b.addEventListener("addtrack",a),this.on("dispose",n.bind(this,function(){b.removeEventListener("removetrack",a),b.removeEventListener("addtrack",a)})))},b.prototype.emulateTextTracks=function(){if(!t["default"].WebVTT&&null!=this.el().parentNode){var a=v["default"].createElement("script");a.src=this.options_["vtt.js"]||"../node_modules/vtt.js/dist/vtt.js",this.el().parentNode.appendChild(a),t["default"].WebVTT=!0}var b=this.textTracks();if(b){var c=n.bind(this,function(){var a=this,c=function(){return a.trigger("texttrackchange")};c();for(var d=0;db)for(c=b;d>c;c++)e.call(this,c)},i.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=i,b.exports=c["default"]},{"../utils/browser.js":108,"global/document":1}],102:[function(a,b,c){"use strict";function d(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function e(a,b,c){try{a.style[b]=c}catch(d){}}var f=function(a){return a&&a.__esModule?a:{"default":a}},g=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},h=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)};c.__esModule=!0;var i=a("../component"),j=f(i),k=a("../menu/menu.js"),l=(f(k),a("../menu/menu-item.js")),m=(f(l),a("../menu/menu-button.js")),n=(f(m),a("../utils/fn.js")),o=f(n),p=a("global/document"),q=(f(p),a("global/window")),r=f(q),s="#222",t="#ccc",u={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},v=function(a){function b(c,d,e){g(this,b),a.call(this,c,d,e),c.on("loadstart",o.bind(this,this.toggleDisplay)),c.on("texttrackchange",o.bind(this,this.updateDisplay)),c.ready(o.bind(this,function(){if(c.tech&&c.tech.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",o.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},m.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=m,b.exports=c["default"]},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"global/document":1}],106:[function(a,b,c){"use strict";function d(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function e(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),m.on(this.el().querySelector(".vjs-fg-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-bg-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".window-color > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-text-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-window-opacity > select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-font-percent select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-edge-style select"),"change",o.bind(this,this.updateDisplay)),m.on(this.el().querySelector(".vjs-font-family select"),"change",o.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return i(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:f()})},b.prototype.getValues=function(){var a=this.el(),b=d(a.querySelector(".vjs-edge-style select")),c=d(a.querySelector(".vjs-font-family select")),e=d(a.querySelector(".vjs-fg-color > select")),f=d(a.querySelector(".vjs-text-opacity > select")),g=d(a.querySelector(".vjs-bg-color > select")),h=d(a.querySelector(".vjs-bg-opacity > select")),i=d(a.querySelector(".window-color > select")),j=d(a.querySelector(".vjs-window-opacity > select")),k=u["default"].parseFloat(d(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:h,textOpacity:f,windowOpacity:j,edgeStyle:b,fontFamily:c,color:e,backgroundColor:g,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();e(b.querySelector(".vjs-edge-style select"),a.edgeStyle),e(b.querySelector(".vjs-font-family select"),a.fontFamily),e(b.querySelector(".vjs-fg-color > select"),a.color),e(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),e(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),e(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),e(b.querySelector(".window-color > select"),a.windowColor),e(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),e(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=s["default"](u["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&q["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?u["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):u["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(k["default"]);k["default"].registerComponent("TextTrackSettings",v),c["default"]=v,b.exports=c["default"]},{"../component":52,"../utils/events.js":112,"../utils/fn.js":113,"../utils/log.js":116,"global/window":2,"safe-json-parse/tuple":49}],107:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./text-track-cue-list"),f=d(e),g=a("../utils/fn.js"),h=d(g),i=a("../utils/guid.js"),j=d(i),k=a("../utils/browser.js"),l=d(k),m=a("./text-track-enums"),n=d(m),o=a("../utils/log.js"),p=d(o),q=a("../event-target"),r=d(q),s=a("global/document"),t=d(s),u=a("global/window"),v=d(u),w=a("../xhr.js"),x=d(w),y=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){var a=void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(l.IS_IE8){b=t["default"].createElement("custom");for(var c in y.prototype)b[c]=y.prototype[c]}b.tech_=a.tech;var d=n.TextTrackMode[a.mode]||"disabled",e=n.TextTrackKind[a.kind]||"subtitles",g=a.label||"",i=a.language||a.srclang||"",k=a.id||"vjs_text_track_"+j.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var m=new f["default"](b.cues_),o=new f["default"](b.activeCues_),p=!1,q=h.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return g},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return i},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return k},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){n.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?m:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return o;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var z=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b){if("function"!=typeof v["default"].WebVTT)return v["default"].setTimeout(function(){z(a,b)},25);var c=new v["default"].WebVTT.Parser(v["default"],v["default"].vttjs,v["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){p["default"].error(a)},c.parse(a),c.flush()}),A=function(a,b){x["default"](a,h.bind(this,function(a,c,d){return a?p["default"].error(a):(b.loaded_=!0,void z(d,b))}))},B=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=y,b.exports=c["default"]},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"../utils/guid.js":115,"../utils/log.js":116,"../xhr.js":123,"./text-track-cue-list":101,"./text-track-enums":103,"global/document":1,"global/window":2}],108:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/iPhone/i.test(i);c.IS_IPHONE=j;var k=/iPad/i.test(i);c.IS_IPAD=k;var l=/iPod/i.test(i);c.IS_IPOD=l;var m=j||k||l;c.IS_IOS=m;var n=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=n;var o=/Android/i.test(i);c.IS_ANDROID=o;var p=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=p;var q=o&&/webkit/i.test(i)&&2.3>p;c.IS_OLD_ANDROID=q;var r=/Firefox/i.test(i);c.IS_FIREFOX=r;var s=/Chrome/i.test(i);c.IS_CHROME=s;var t=/MSIE\s8\.0/.test(i);c.IS_IE8=t;var u=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=u;var v="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=v},{"global/document":1,"global/window":2}],109:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":119}],110:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":116}],111:[function(a,b,c){"use strict";function d(a){return 0===a.indexOf("#")&&(a=a.slice(1)),t["default"].getElementById(a)}function e(){var a=void 0===arguments[0]?"div":arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=t["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var d=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?c.setAttribute(a,d):c[a]=d}),c}function f(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function g(a){var b=a[z];return b||(b=a[z]=x.newGUID()),y[b]||(y[b]={}),y[b]}function h(a){var b=a[z];return b?!!Object.getOwnPropertyNames(y[b]).length:!1}function i(a){var b=a[z];if(b){delete y[b];try{delete a[z]}catch(c){a.removeAttribute?a.removeAttribute(z):a[z]=null}}}function j(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function k(a,b){j(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function l(a,b){if(j(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);a.className=c.join(" ")}}function m(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function n(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function o(){t["default"].body.focus(),t["default"].onselectstart=function(){return!1}}function p(){t["default"].onselectstart=function(){return!0}}function q(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=t["default"].documentElement,d=t["default"].body,e=c.clientLeft||d.clientLeft||0,f=v["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=v["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j) -}}var r=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0,c.getEl=d,c.createEl=e,c.insertElFirst=f,c.getElData=g,c.hasElData=h,c.removeElData=i,c.hasElClass=j,c.addElClass=k,c.removeElClass=l,c.setElAttributes=m,c.getElAttributes=n,c.blockTextSelection=o,c.unblockTextSelection=p,c.findElPosition=q;var s=a("global/document"),t=r(s),u=a("global/window"),v=r(u),w=a("./guid.js"),x=r(w),y={},z="vdata"+(new Date).getTime()},{"./guid.js":115,"global/document":1,"global/window":2}],112:[function(a,b,c){"use strict";function d(a,b,c){if(Array.isArray(b))return j(d,a,b,c);var e=m.getElData(a);e.handlers||(e.handlers={}),e.handlers[b]||(e.handlers[b]=[]),c.guid||(c.guid=o.newGUID()),e.handlers[b].push(c),e.dispatcher||(e.disabled=!1,e.dispatcher=function(b,c){if(!e.disabled){b=h(b);var d=e.handlers[b.type];if(d)for(var f=d.slice(0),g=0,i=f.length;i>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===e.handlers[b].length&&(a.addEventListener?a.addEventListener(b,e.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,e.dispatcher))}function e(a,b,c){if(m.hasElData(a)){var d=m.getElData(a);if(d.handlers){if(Array.isArray(b))return j(e,a,b,c);var f=function(b){d.handlers[b]=[],i(a,b)};if(b){var g=d.handlers[b];if(g){if(!c)return void f(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],115:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],116:[function(a,b,c){"use strict";function d(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}var e=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var f=a("global/window"),g=e(f),h=function(){d(null,arguments)};h.history=[],h.error=function(){d("error",arguments)},h.warn=function(){d("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],117:[function(a,b,c){"use strict";function d(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function e(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}var f=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0,c["default"]=e;var g=a("lodash-compat/object/merge"),h=f(g),i=function(a,b){return d(b)?d(a)?void 0:e(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],118:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],119:[function(a,b,c){"use strict";function d(a,b){return void 0===a&&void 0===b?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:1,start:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return a}),end:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(){return b})}}c.__esModule=!0,c.createTimeRange=d},{}],120:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],121:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=h;var i=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=i},{"global/document":1}],122:[function(b,c,d){"use strict";var e=function(a){return a&&a.__esModule?a:{"default":a}};d.__esModule=!0;{var f=b("global/document"),g=e(f),h=b("./setup"),i=e(h),j=b("./utils/stylesheet.js"),k=e(j),l=b("./component"),m=e(l),n=b("./event-target"),o=e(n),p=b("./utils/events.js"),q=e(p),r=b("./player"),s=e(r),t=b("./plugins.js"),u=e(t),v=b("../../src/js/utils/merge-options.js"),w=e(v),x=b("./utils/fn.js"),y=e(x),z=b("object.assign"),A=(e(z),b("./utils/time-ranges.js")),B=b("./utils/format-time.js"),C=e(B),D=b("./utils/log.js"),E=e(D),F=b("./xhr.js"),G=e(F),H=b("./utils/dom.js"),I=e(H),J=b("./utils/browser.js"),K=e(J),L=b("./utils/url.js"),M=e(L),N=b("./extends.js"),O=e(N),P=b("lodash-compat/object/merge"),Q=e(P),R=b("./utils/create-deprecation-proxy.js"),S=e(R),T=b("./tech/html5.js"),U=(e(T),b("./tech/flash.js"));e(U)}"undefined"==typeof HTMLVideoElement&&(g["default"].createElement("video"),g["default"].createElement("audio"),g["default"].createElement("track"));var V=function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),V.getPlayers()[a])return b&&E["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&V.getPlayers()[a].ready(c),V.getPlayers()[a];d=I.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new s["default"](d,b,c)}),W=k.createStyleElement("vjs-styles-defaults"),X=g["default"].querySelector("head");X.insertBefore(W,X.firstChild),k.setTextContent(W,"\n .video-js {\n width: 300px;\n height: 150px;\n"),i.autoSetupTimeout(1,V),V.VERSION="5.0.0-rc.59",V.options=s["default"].prototype.options_,V.getPlayers=function(){return s["default"].players},V.players=S["default"](s["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),V.getComponent=m["default"].getComponent,V.registerComponent=m["default"].registerComponent,V.browser=K,V.TOUCH_ENABLED=K.TOUCH_ENABLED,V["extends"]=O["default"],V.mergeOptions=w["default"],V.bind=y.bind,V.plugin=u["default"],V.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),Q["default"](V.options.languages,(c={},c[a]=b,c))[a]},V.log=E["default"],V.createTimeRange=A.createTimeRange,V.formatTime=C["default"],V.xhr=G["default"],V.parseUrl=M.parseUrl,V.EventTarget=o["default"],V.on=q.on,V.one=q.one,V.off=q.off,V.trigger=q.trigger,"function"==typeof a&&a.amd?a("videojs",[],function(){return V}):"object"==typeof d&&"object"==typeof c&&(c.exports=V),d["default"]=V,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":117,"./component":52,"./event-target":83,"./extends.js":84,"./player":91,"./plugins.js":92,"./setup":94,"./tech/flash.js":97,"./tech/html5.js":98,"./utils/browser.js":108,"./utils/create-deprecation-proxy.js":110,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/format-time.js":114,"./utils/log.js":116,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/url.js":121,"./xhr.js":123,"global/document":1,"lodash-compat/object/merge":40,"object.assign":44}],123:[function(a,b,c){"use strict";var d=function(a){return a&&a.__esModule?a:{"default":a}};c.__esModule=!0;var e=a("./utils/url.js"),f=d(e),g=a("./utils/log.js"),h=(d(g),a("./utils/merge-options.js")),i=d(h),j=a("global/window"),k=d(j),l=function(a,b){var c=void 0;"string"==typeof a&&(a={uri:a}),a=i["default"]({method:"GET",timeout:45e3},a),b=b||function(){};var d=k["default"].XMLHttpRequest;"undefined"==typeof d&&(d=function(){try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new k["default"].ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new Error("This browser does not support XMLHttpRequest.")});var e=new d;e.uri=a.uri;var g=f.parseUrl(a.uri),h=k["default"].location,j=function(){k["default"].clearTimeout(c),b(null,e,e.response||e.responseText)},l=function(a){k["default"].clearTimeout(c),a&&"string"!=typeof a||(a=new Error(a)),b(a,e)},m=g.protocol+g.host!==h.protocol+h.host;!m||!k["default"].XDomainRequest||"withCredentials"in e?!function(){var b="file:"===g.protocol||"file:"===h.protocol;e.onreadystatechange=function(){if(4===e.readyState){if(e.timedout)return l("timeout");200===e.status||b&&0===e.status?j():l()}},a.timeout&&(c=k["default"].setTimeout(function(){4!==e.readyState&&(e.timedout=!0,e.abort())},a.timeout))}():(e=new k["default"].XDomainRequest,e.onload=j,e.onerror=l,e.onprogress=function(){},e.ontimeout=function(){});try{e.open(a.method||"GET",a.uri,!0)}catch(n){return l(n)}a.withCredentials&&(e.withCredentials=!0),a.responseType&&(e.responseType=a.responseType);try{e.send()}catch(n){return l(n)}return e};c["default"]=l,b.exports=c["default"]},{"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/url.js":121,"global/window":2}]},{},[122])(122)}),function(a){var b=a.vttjs={},c=b.VTTCue,d=b.VTTRegion,e=a.VTTCue,f=a.VTTRegion;b.shim=function(){b.VTTCue=c,b.VTTRegion=d},b.restore=function(){b.VTTCue=e,b.VTTRegion=f}}(this),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=h[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){if("string"!=typeof a)return!1;var b=i[a.toLowerCase()];return b?a.toLowerCase():!1}function e(a){for(var b=1;ba||a>100)throw new Error("Position must be between 0 and 100.");u=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",e({},j,{get:function(){return v},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");v=b,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",e({},j,{get:function(){return w},set:function(a){if(0>a||a>100)throw new Error("Size must be between 0 and 100.");w=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",e({},j,{get:function(){return x},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");x=b,this.hasBeenReset=!0}})),h.displayState=void 0,i?h:void 0}var g="auto",h={"":!0,lr:!0,rl:!0},i={start:!0,middle:!0,end:!0,left:!0,right:!0};f.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},a.VTTCue=a.VTTCue||f,b.VTTCue=f}(this,this.vttjs||{}),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=f[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){return"number"==typeof a&&a>=0&&100>=a}function e(){var a=100,b=3,e=0,f=100,g=0,h=100,i="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return a},set:function(b){if(!d(b))throw new Error("Width must be between 0 and 100.");a=b}},lines:{enumerable:!0,get:function(){return b},set:function(a){if("number"!=typeof a)throw new TypeError("Lines must be set to a number.");b=a}},regionAnchorY:{enumerable:!0,get:function(){return f},set:function(a){if(!d(a))throw new Error("RegionAnchorX must be between 0 and 100.");f=a}},regionAnchorX:{enumerable:!0,get:function(){return e},set:function(a){if(!d(a))throw new Error("RegionAnchorY must be between 0 and 100.");e=a}},viewportAnchorY:{enumerable:!0,get:function(){return h},set:function(a){if(!d(a))throw new Error("ViewportAnchorY must be between 0 and 100.");h=a}},viewportAnchorX:{enumerable:!0,get:function(){return g},set:function(a){if(!d(a))throw new Error("ViewportAnchorX must be between 0 and 100.");g=a}},scroll:{enumerable:!0,get:function(){return i},set:function(a){var b=c(a);if(b===!1)throw new SyntaxError("An invalid or illegal string was specified.");i=b}}})}var f={"":!0,up:!0};a.VTTRegion=a.VTTRegion||e,b.VTTRegion=e}(this,this.vttjs||{}),function(a){function b(a,b){this.name="ParsingError",this.code=a.code,this.message=b||a.message}function c(a){function b(a,b,c,d){return 3600*(0|a)+60*(0|b)+(0|c)+(0|d)/1e3}var c=a.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return c?c[3]?b(c[1],c[2],c[3].replace(":",""),c[4]):c[1]>59?b(c[1],c[2],0,c[4]):b(0,c[1],c[2],c[4]):null}function d(){this.values=o(null)}function e(a,b,c,d){var e=d?a.split(d):[a];for(var f in e)if("string"==typeof e[f]){var g=e[f].split(c);if(2===g.length){var h=g[0],i=g[1];b(h,i)}}}function f(a,f,g){function h(){var d=c(a);if(null===d)throw new b(b.Errors.BadTimeStamp,"Malformed timestamp: "+k);return a=a.replace(/^[^\sa-zA-Z-]+/,""),d}function i(a,b){var c=new d;e(a,function(a,b){switch(a){case"region":for(var d=g.length-1;d>=0;d--)if(g[d].id===b){c.set(a,g[d].region);break}break;case"vertical":c.alt(a,b,["rl","lr"]);break;case"line":var e=b.split(","),f=e[0];c.integer(a,f),c.percent(a,f)?c.set("snapToLines",!1):null,c.alt(a,f,["auto"]),2===e.length&&c.alt("lineAlign",e[1],["start","middle","end"]);break;case"position":e=b.split(","),c.percent(a,e[0]),2===e.length&&c.alt("positionAlign",e[1],["start","middle","end"]);break;case"size":c.percent(a,b);break;case"align":c.alt(a,b,["start","middle","end","left","right"])}},/:/,/\s/),b.region=c.get("region",null),b.vertical=c.get("vertical",""),b.line=c.get("line","auto"),b.lineAlign=c.get("lineAlign","start"),b.snapToLines=c.get("snapToLines",!0),b.size=c.get("size",100),b.align=c.get("align","middle"),b.position=c.get("position",{start:0,left:0,middle:50,end:100,right:100},b.align),b.positionAlign=c.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},b.align)}function j(){a=a.replace(/^\s+/,"")}var k=a;if(j(),f.startTime=h(),j(),"-->"!==a.substr(0,3))throw new b(b.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+k);a=a.substr(3),j(),f.endTime=h(),j(),i(a,f)}function g(a,b){function d(){function a(a){return b=b.substr(a.length),a}if(!b)return null;var c=b.match(/^([^<]*)(<[^>]+>?)?/);return a(c[1]?c[1]:c[2])}function e(a){return p[a]}function f(a){for(;o=a.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)a=a.replace(o[0],e);return a}function g(a,b){return!s[b.localName]||s[b.localName]===a.localName}function h(b,c){var d=q[b];if(!d)return null;var e=a.document.createElement(d);e.localName=d;var f=r[b];return f&&c&&(e[f]=c.trim()),e}for(var i,j=a.document.createElement("div"),k=j,l=[];null!==(i=d());)if("<"!==i[0])k.appendChild(a.document.createTextNode(f(i)));else{if("/"===i[1]){l.length&&l[l.length-1]===i.substr(2).replace(">","")&&(l.pop(),k=k.parentNode);continue}var m,n=c(i.substr(1,i.length-2));if(n){m=a.document.createProcessingInstruction("timestamp",n),k.appendChild(m);continue}var o=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!o)continue;if(m=h(o[1],o[3]),!m)continue;if(!g(k,m))continue;o[2]&&(m.className=o[2].substr(1).replace("."," ")),l.push(o[1]),k.appendChild(m),k=m}return j}function h(a){function b(a,b){for(var c=b.childNodes.length-1;c>=0;c--)a.push(b.childNodes[c])}function c(a){if(!a||!a.length)return null;var d=a.pop(),e=d.textContent||d.innerText;if(e){var f=e.match(/^.*(\n|\r)/);return f?(a.length=0,f[0]):e}return"ruby"===d.tagName?c(a):d.childNodes?(b(a,d),c(a)):void 0}var d,e=[],f="";if(!a||!a.childNodes)return"ltr";for(b(e,a);f=c(e);)for(var g=0;g=0&&a.line<=100))return a.line;if(!a.track||!a.track.textTrackList||!a.track.textTrackList.mediaElement)return-1;for(var b=a.track,c=b.textTrackList,d=0,e=0;ei&&(e=new l(a),g=i),a=new l(f)}return e||f}var f=new l(b),g=b.cue,h=i(g),j=[];if(g.snapToLines){var k;switch(g.vertical){case"":j=["+y","-y"],k="height";break;case"rl":j=["+x","-x"],k="width";break;case"lr":j=["-x","+x"],k="width"}var m=f.lineHeight,n=m*Math.round(h),o=c[k]+m,p=j[0];Math.abs(n)>o&&(n=0>n?-1:1,n*=Math.ceil(o/m)*m),0>h&&(n+=""===g.vertical?c.height:c.width,j=j.reverse()),f.move(p,n)}else{var q=f.lineHeight/c.height*100;switch(g.lineAlign){case"middle":h-=q/2;break;case"end":h-=q}switch(g.vertical){case"":b.applyStyles({top:b.formatStyle(h,"%")});break;case"rl":b.applyStyles({left:b.formatStyle(h,"%")});break;case"lr":b.applyStyles({right:b.formatStyle(h,"%")})}j=["+y","-x","+x","-y"],f=new l(b)}var r=e(f,j);b.move(r.toCSSCompatValues(c))}function n(){}var o=Object.create||function(){function a(){}return function(b){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return a.prototype=b,new a}}();b.prototype=o(Error.prototype),b.prototype.constructor=b,b.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},d.prototype={set:function(a,b){this.get(a)||""===b||(this.values[a]=b)},get:function(a,b,c){return c?this.has(a)?this.values[a]:b[c]:this.has(a)?this.values[a]:b},has:function(a){return a in this.values},alt:function(a,b,c){for(var d=0;d=0&&100>=b)?(this.set(a,b),!0):!1}};var p={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},q={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},r={v:"title",lang:"lang"},s={rt:"ruby"},t=[1470,1472,1475,1478,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1544,1547,1549,1563,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1645,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1765,1766,1774,1775,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2e3,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2142,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,8207,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,64442,64443,64444,64445,64446,64447,64448,64449,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,67584,67585,67586,67587,67588,67589,67592,67594,67595,67596,67597,67598,67599,67600,67601,67602,67603,67604,67605,67606,67607,67608,67609,67610,67611,67612,67613,67614,67615,67616,67617,67618,67619,67620,67621,67622,67623,67624,67625,67626,67627,67628,67629,67630,67631,67632,67633,67634,67635,67636,67637,67639,67640,67644,67647,67648,67649,67650,67651,67652,67653,67654,67655,67656,67657,67658,67659,67660,67661,67662,67663,67664,67665,67666,67667,67668,67669,67671,67672,67673,67674,67675,67676,67677,67678,67679,67840,67841,67842,67843,67844,67845,67846,67847,67848,67849,67850,67851,67852,67853,67854,67855,67856,67857,67858,67859,67860,67861,67862,67863,67864,67865,67866,67867,67872,67873,67874,67875,67876,67877,67878,67879,67880,67881,67882,67883,67884,67885,67886,67887,67888,67889,67890,67891,67892,67893,67894,67895,67896,67897,67903,67968,67969,67970,67971,67972,67973,67974,67975,67976,67977,67978,67979,67980,67981,67982,67983,67984,67985,67986,67987,67988,67989,67990,67991,67992,67993,67994,67995,67996,67997,67998,67999,68e3,68001,68002,68003,68004,68005,68006,68007,68008,68009,68010,68011,68012,68013,68014,68015,68016,68017,68018,68019,68020,68021,68022,68023,68030,68031,68096,68112,68113,68114,68115,68117,68118,68119,68121,68122,68123,68124,68125,68126,68127,68128,68129,68130,68131,68132,68133,68134,68135,68136,68137,68138,68139,68140,68141,68142,68143,68144,68145,68146,68147,68160,68161,68162,68163,68164,68165,68166,68167,68176,68177,68178,68179,68180,68181,68182,68183,68184,68192,68193,68194,68195,68196,68197,68198,68199,68200,68201,68202,68203,68204,68205,68206,68207,68208,68209,68210,68211,68212,68213,68214,68215,68216,68217,68218,68219,68220,68221,68222,68223,68352,68353,68354,68355,68356,68357,68358,68359,68360,68361,68362,68363,68364,68365,68366,68367,68368,68369,68370,68371,68372,68373,68374,68375,68376,68377,68378,68379,68380,68381,68382,68383,68384,68385,68386,68387,68388,68389,68390,68391,68392,68393,68394,68395,68396,68397,68398,68399,68400,68401,68402,68403,68404,68405,68416,68417,68418,68419,68420,68421,68422,68423,68424,68425,68426,68427,68428,68429,68430,68431,68432,68433,68434,68435,68436,68437,68440,68441,68442,68443,68444,68445,68446,68447,68448,68449,68450,68451,68452,68453,68454,68455,68456,68457,68458,68459,68460,68461,68462,68463,68464,68465,68466,68472,68473,68474,68475,68476,68477,68478,68479,68608,68609,68610,68611,68612,68613,68614,68615,68616,68617,68618,68619,68620,68621,68622,68623,68624,68625,68626,68627,68628,68629,68630,68631,68632,68633,68634,68635,68636,68637,68638,68639,68640,68641,68642,68643,68644,68645,68646,68647,68648,68649,68650,68651,68652,68653,68654,68655,68656,68657,68658,68659,68660,68661,68662,68663,68664,68665,68666,68667,68668,68669,68670,68671,68672,68673,68674,68675,68676,68677,68678,68679,68680,126464,126465,126466,126467,126469,126470,126471,126472,126473,126474,126475,126476,126477,126478,126479,126480,126481,126482,126483,126484,126485,126486,126487,126488,126489,126490,126491,126492,126493,126494,126495,126497,126498,126500,126503,126505,126506,126507,126508,126509,126510,126511,126512,126513,126514,126516,126517,126518,126519,126521,126523,126530,126535,126537,126539,126541,126542,126543,126545,126546,126548,126551,126553,126555,126557,126559,126561,126562,126564,126567,126568,126569,126570,126572,126573,126574,126575,126576,126577,126578,126580,126581,126582,126583,126585,126586,126587,126588,126590,126592,126593,126594,126595,126596,126597,126598,126599,126600,126601,126603,126604,126605,126606,126607,126608,126609,126610,126611,126612,126613,126614,126615,126616,126617,126618,126619,126625,126626,126627,126629,126630,126631,126632,126633,126635,126636,126637,126638,126639,126640,126641,126642,126643,126644,126645,126646,126647,126648,126649,126650,126651,1114109]; +})}function p(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function q(){u["default"].body.focus(),u["default"].onselectstart=function(){return!1}}function r(){u["default"].onselectstart=function(){return!0}}function s(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=u["default"].documentElement,d=u["default"].body,e=c.clientLeft||d.clientLeft||0,f=w["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=w["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}c.__esModule=!0,c.getEl=f,c.createEl=g,c.insertElFirst=h,c.getElData=i,c.hasElData=j,c.removeElData=k,c.hasElClass=l,c.addElClass=m,c.removeElClass=n,c.setElAttributes=o,c.getElAttributes=p,c.blockTextSelection=q,c.unblockTextSelection=r,c.findElPosition=s;var t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("./guid.js"),y=d(x),z={},A="vdata"+(new Date).getTime()},{"./guid.js":111,"global/document":1,"global/window":2}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],111:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":37}],114:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],115:[function(a,b,c){"use strict";function d(a,b){return void 0===a&&void 0===b?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:1,start:function(){return a},end:function(){return b}}}c.__esModule=!0,c.createTimeRange=d},{}],116:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],117:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=h;var i=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=i},{"global/document":1}],118:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("object.assign"),B=(f(A),b("./utils/time-ranges.js")),C=b("./utils/format-time.js"),D=f(C),E=b("./utils/log.js"),F=f(E),G=b("./xhr.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extends.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("./tech/html5.js"),V=(f(U),b("./tech/flash.js"));f(V)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var W=function Z(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),Z.getPlayers()[a])return b&&F["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&Z.getPlayers()[a].ready(c),Z.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},X=l.createStyleElement("vjs-styles-defaults"),Y=h["default"].querySelector("head");Y.insertBefore(X,Y.firstChild),l.setTextContent(X,"\n .video-js {\n width: 300px;\n height: 150px;\n"),j.autoSetupTimeout(1,W),W.VERSION="5.0.0-rc.72",W.options=t["default"].prototype.options_,W.getPlayers=function(){return t["default"].players},W.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),W.getComponent=n["default"].getComponent,W.registerComponent=n["default"].registerComponent,W.browser=L,W.TOUCH_ENABLED=L.TOUCH_ENABLED,W["extends"]=P["default"],W.mergeOptions=x["default"],W.bind=z.bind,W.plugin=v["default"],W.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](W.options.languages,(c={},c[a]=b,c))[a]},W.log=F["default"],W.createTimeRange=B.createTimeRange,W.formatTime=D["default"],W.xhr=H["default"],W.parseUrl=N.parseUrl,W.EventTarget=p["default"],W.on=r.on,W.one=r.one,W.off=r.off,W.trigger=r.trigger,"function"==typeof a&&a.amd?a("videojs",[],function(){return W}):"object"==typeof d&&"object"==typeof c&&(c.exports=W),d["default"]=W,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":113,"./component":48,"./event-target":79,"./extends.js":80,"./player":87,"./plugins.js":88,"./setup":90,"./tech/flash.js":93,"./tech/html5.js":94,"./utils/browser.js":104,"./utils/create-deprecation-proxy.js":106,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/format-time.js":110,"./utils/log.js":112,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/url.js":117,"./xhr.js":119,"global/document":1,"lodash-compat/object/merge":37,"object.assign":40}],119:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}c.__esModule=!0;var f=a("./utils/url.js"),g=e(f),h=a("./utils/log.js"),i=(d(h),a("./utils/merge-options.js")),j=d(i),k=a("global/window"),l=d(k),m=function(a,b){var c=void 0;"string"==typeof a&&(a={uri:a}),a=j["default"]({method:"GET",timeout:45e3},a),b=b||function(){};var d=l["default"].XMLHttpRequest;"undefined"==typeof d&&(d=function(){try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){}try{return new l["default"].ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new Error("This browser does not support XMLHttpRequest.")});var e=new d;e.uri=a.uri;var f=g.parseUrl(a.uri),h=l["default"].location,i=function(){l["default"].clearTimeout(c),b(null,e,e.response||e.responseText)},k=function(a){l["default"].clearTimeout(c),a&&"string"!=typeof a||(a=new Error(a||"XHR Failed with a response of: "+(e&&(e.response||e.responseText)))),b(a,e)},m=f.protocol+f.host!==h.protocol+h.host;!m||!l["default"].XDomainRequest||"withCredentials"in e?!function(){var b="file:"===f.protocol||"file:"===h.protocol;e.onreadystatechange=function(){if(4===e.readyState){if(e.timedout)return k("timeout");200===e.status||b&&0===e.status?i():k()}},a.timeout&&(c=l["default"].setTimeout(function(){4!==e.readyState&&(e.timedout=!0,e.abort())},a.timeout))}():(e=new l["default"].XDomainRequest,e.onload=i,e.onerror=k,e.onprogress=function(){},e.ontimeout=function(){});try{e.open(a.method||"GET",a.uri,!0)}catch(n){return k(n)}a.withCredentials&&(e.withCredentials=!0),a.responseType&&(e.responseType=a.responseType);try{e.send()}catch(n){return k(n)}return e};c["default"]=m,b.exports=c["default"]},{"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/url.js":117,"global/window":2}]},{},[118])(118)}),function(a){var b=a.vttjs={},c=b.VTTCue,d=b.VTTRegion,e=a.VTTCue,f=a.VTTRegion;b.shim=function(){b.VTTCue=c,b.VTTRegion=d},b.restore=function(){b.VTTCue=e,b.VTTRegion=f}}(this),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=h[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){if("string"!=typeof a)return!1;var b=i[a.toLowerCase()];return b?a.toLowerCase():!1}function e(a){for(var b=1;ba||a>100)throw new Error("Position must be between 0 and 100.");u=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",e({},j,{get:function(){return v},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");v=b,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",e({},j,{get:function(){return w},set:function(a){if(0>a||a>100)throw new Error("Size must be between 0 and 100.");w=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",e({},j,{get:function(){return x},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");x=b,this.hasBeenReset=!0}})),h.displayState=void 0,i?h:void 0}var g="auto",h={"":!0,lr:!0,rl:!0},i={start:!0,middle:!0,end:!0,left:!0,right:!0};f.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},a.VTTCue=a.VTTCue||f,b.VTTCue=f}(this,this.vttjs||{}),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=f[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){return"number"==typeof a&&a>=0&&100>=a}function e(){var a=100,b=3,e=0,f=100,g=0,h=100,i="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return a},set:function(b){if(!d(b))throw new Error("Width must be between 0 and 100.");a=b}},lines:{enumerable:!0,get:function(){return b},set:function(a){if("number"!=typeof a)throw new TypeError("Lines must be set to a number.");b=a}},regionAnchorY:{enumerable:!0,get:function(){return f},set:function(a){if(!d(a))throw new Error("RegionAnchorX must be between 0 and 100.");f=a}},regionAnchorX:{enumerable:!0,get:function(){return e},set:function(a){if(!d(a))throw new Error("RegionAnchorY must be between 0 and 100.");e=a}},viewportAnchorY:{enumerable:!0,get:function(){return h},set:function(a){if(!d(a))throw new Error("ViewportAnchorY must be between 0 and 100.");h=a}},viewportAnchorX:{enumerable:!0,get:function(){return g},set:function(a){if(!d(a))throw new Error("ViewportAnchorX must be between 0 and 100.");g=a}},scroll:{enumerable:!0,get:function(){return i},set:function(a){var b=c(a);if(b===!1)throw new SyntaxError("An invalid or illegal string was specified.");i=b}}})}var f={"":!0,up:!0};a.VTTRegion=a.VTTRegion||e,b.VTTRegion=e}(this,this.vttjs||{}),function(a){function b(a,b){this.name="ParsingError",this.code=a.code,this.message=b||a.message}function c(a){function b(a,b,c,d){return 3600*(0|a)+60*(0|b)+(0|c)+(0|d)/1e3}var c=a.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return c?c[3]?b(c[1],c[2],c[3].replace(":",""),c[4]):c[1]>59?b(c[1],c[2],0,c[4]):b(0,c[1],c[2],c[4]):null}function d(){this.values=o(null)}function e(a,b,c,d){var e=d?a.split(d):[a];for(var f in e)if("string"==typeof e[f]){var g=e[f].split(c);if(2===g.length){var h=g[0],i=g[1];b(h,i)}}}function f(a,f,g){function h(){var d=c(a);if(null===d)throw new b(b.Errors.BadTimeStamp,"Malformed timestamp: "+k);return a=a.replace(/^[^\sa-zA-Z-]+/,""),d}function i(a,b){var c=new d;e(a,function(a,b){switch(a){case"region":for(var d=g.length-1;d>=0;d--)if(g[d].id===b){c.set(a,g[d].region);break}break;case"vertical":c.alt(a,b,["rl","lr"]);break;case"line":var e=b.split(","),f=e[0];c.integer(a,f),c.percent(a,f)?c.set("snapToLines",!1):null,c.alt(a,f,["auto"]),2===e.length&&c.alt("lineAlign",e[1],["start","middle","end"]);break;case"position":e=b.split(","),c.percent(a,e[0]),2===e.length&&c.alt("positionAlign",e[1],["start","middle","end"]);break;case"size":c.percent(a,b);break;case"align":c.alt(a,b,["start","middle","end","left","right"])}},/:/,/\s/),b.region=c.get("region",null),b.vertical=c.get("vertical",""),b.line=c.get("line","auto"),b.lineAlign=c.get("lineAlign","start"),b.snapToLines=c.get("snapToLines",!0),b.size=c.get("size",100),b.align=c.get("align","middle"),b.position=c.get("position",{start:0,left:0,middle:50,end:100,right:100},b.align),b.positionAlign=c.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},b.align)}function j(){a=a.replace(/^\s+/,"")}var k=a;if(j(),f.startTime=h(),j(),"-->"!==a.substr(0,3))throw new b(b.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+k);a=a.substr(3),j(),f.endTime=h(),j(),i(a,f)}function g(a,b){function d(){function a(a){return b=b.substr(a.length),a}if(!b)return null;var c=b.match(/^([^<]*)(<[^>]+>?)?/);return a(c[1]?c[1]:c[2])}function e(a){return p[a]}function f(a){for(;o=a.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)a=a.replace(o[0],e);return a}function g(a,b){return!s[b.localName]||s[b.localName]===a.localName}function h(b,c){var d=q[b];if(!d)return null;var e=a.document.createElement(d);e.localName=d;var f=r[b];return f&&c&&(e[f]=c.trim()),e}for(var i,j=a.document.createElement("div"),k=j,l=[];null!==(i=d());)if("<"!==i[0])k.appendChild(a.document.createTextNode(f(i)));else{if("/"===i[1]){l.length&&l[l.length-1]===i.substr(2).replace(">","")&&(l.pop(),k=k.parentNode);continue}var m,n=c(i.substr(1,i.length-2));if(n){m=a.document.createProcessingInstruction("timestamp",n),k.appendChild(m);continue}var o=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!o)continue;if(m=h(o[1],o[3]),!m)continue;if(!g(k,m))continue;o[2]&&(m.className=o[2].substr(1).replace("."," ")),l.push(o[1]),k.appendChild(m),k=m}return j}function h(a){function b(a,b){for(var c=b.childNodes.length-1;c>=0;c--)a.push(b.childNodes[c])}function c(a){if(!a||!a.length)return null;var d=a.pop(),e=d.textContent||d.innerText;if(e){var f=e.match(/^.*(\n|\r)/);return f?(a.length=0,f[0]):e}return"ruby"===d.tagName?c(a):d.childNodes?(b(a,d),c(a)):void 0}var d,e=[],f="";if(!a||!a.childNodes)return"ltr";for(b(e,a);f=c(e);)for(var g=0;g=0&&a.line<=100))return a.line;if(!a.track||!a.track.textTrackList||!a.track.textTrackList.mediaElement)return-1;for(var b=a.track,c=b.textTrackList,d=0,e=0;ei&&(e=new l(a),g=i),a=new l(f)}return e||f}var f=new l(b),g=b.cue,h=i(g),j=[];if(g.snapToLines){var k;switch(g.vertical){case"":j=["+y","-y"],k="height";break;case"rl":j=["+x","-x"],k="width";break;case"lr":j=["-x","+x"],k="width"}var m=f.lineHeight,n=m*Math.round(h),o=c[k]+m,p=j[0];Math.abs(n)>o&&(n=0>n?-1:1,n*=Math.ceil(o/m)*m),0>h&&(n+=""===g.vertical?c.height:c.width,j=j.reverse()),f.move(p,n)}else{var q=f.lineHeight/c.height*100;switch(g.lineAlign){case"middle":h-=q/2;break;case"end":h-=q}switch(g.vertical){case"":b.applyStyles({top:b.formatStyle(h,"%")});break;case"rl":b.applyStyles({left:b.formatStyle(h,"%")});break;case"lr":b.applyStyles({right:b.formatStyle(h,"%")})}j=["+y","-x","+x","-y"],f=new l(b)}var r=e(f,j);b.move(r.toCSSCompatValues(c))}function n(){}var o=Object.create||function(){function a(){}return function(b){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return a.prototype=b,new a}}();b.prototype=o(Error.prototype),b.prototype.constructor=b,b.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},d.prototype={set:function(a,b){this.get(a)||""===b||(this.values[a]=b)},get:function(a,b,c){return c?this.has(a)?this.values[a]:b[c]:this.has(a)?this.values[a]:b},has:function(a){return a in this.values},alt:function(a,b,c){for(var d=0;d=0&&100>=b)?(this.set(a,b),!0):!1}};var p={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},q={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},r={v:"title",lang:"lang"},s={rt:"ruby"},t=[1470,1472,1475,1478,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1544,1547,1549,1563,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1645,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1765,1766,1774,1775,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2e3,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2142,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,8207,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,64442,64443,64444,64445,64446,64447,64448,64449,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,67584,67585,67586,67587,67588,67589,67592,67594,67595,67596,67597,67598,67599,67600,67601,67602,67603,67604,67605,67606,67607,67608,67609,67610,67611,67612,67613,67614,67615,67616,67617,67618,67619,67620,67621,67622,67623,67624,67625,67626,67627,67628,67629,67630,67631,67632,67633,67634,67635,67636,67637,67639,67640,67644,67647,67648,67649,67650,67651,67652,67653,67654,67655,67656,67657,67658,67659,67660,67661,67662,67663,67664,67665,67666,67667,67668,67669,67671,67672,67673,67674,67675,67676,67677,67678,67679,67840,67841,67842,67843,67844,67845,67846,67847,67848,67849,67850,67851,67852,67853,67854,67855,67856,67857,67858,67859,67860,67861,67862,67863,67864,67865,67866,67867,67872,67873,67874,67875,67876,67877,67878,67879,67880,67881,67882,67883,67884,67885,67886,67887,67888,67889,67890,67891,67892,67893,67894,67895,67896,67897,67903,67968,67969,67970,67971,67972,67973,67974,67975,67976,67977,67978,67979,67980,67981,67982,67983,67984,67985,67986,67987,67988,67989,67990,67991,67992,67993,67994,67995,67996,67997,67998,67999,68e3,68001,68002,68003,68004,68005,68006,68007,68008,68009,68010,68011,68012,68013,68014,68015,68016,68017,68018,68019,68020,68021,68022,68023,68030,68031,68096,68112,68113,68114,68115,68117,68118,68119,68121,68122,68123,68124,68125,68126,68127,68128,68129,68130,68131,68132,68133,68134,68135,68136,68137,68138,68139,68140,68141,68142,68143,68144,68145,68146,68147,68160,68161,68162,68163,68164,68165,68166,68167,68176,68177,68178,68179,68180,68181,68182,68183,68184,68192,68193,68194,68195,68196,68197,68198,68199,68200,68201,68202,68203,68204,68205,68206,68207,68208,68209,68210,68211,68212,68213,68214,68215,68216,68217,68218,68219,68220,68221,68222,68223,68352,68353,68354,68355,68356,68357,68358,68359,68360,68361,68362,68363,68364,68365,68366,68367,68368,68369,68370,68371,68372,68373,68374,68375,68376,68377,68378,68379,68380,68381,68382,68383,68384,68385,68386,68387,68388,68389,68390,68391,68392,68393,68394,68395,68396,68397,68398,68399,68400,68401,68402,68403,68404,68405,68416,68417,68418,68419,68420,68421,68422,68423,68424,68425,68426,68427,68428,68429,68430,68431,68432,68433,68434,68435,68436,68437,68440,68441,68442,68443,68444,68445,68446,68447,68448,68449,68450,68451,68452,68453,68454,68455,68456,68457,68458,68459,68460,68461,68462,68463,68464,68465,68466,68472,68473,68474,68475,68476,68477,68478,68479,68608,68609,68610,68611,68612,68613,68614,68615,68616,68617,68618,68619,68620,68621,68622,68623,68624,68625,68626,68627,68628,68629,68630,68631,68632,68633,68634,68635,68636,68637,68638,68639,68640,68641,68642,68643,68644,68645,68646,68647,68648,68649,68650,68651,68652,68653,68654,68655,68656,68657,68658,68659,68660,68661,68662,68663,68664,68665,68666,68667,68668,68669,68670,68671,68672,68673,68674,68675,68676,68677,68678,68679,68680,126464,126465,126466,126467,126469,126470,126471,126472,126473,126474,126475,126476,126477,126478,126479,126480,126481,126482,126483,126484,126485,126486,126487,126488,126489,126490,126491,126492,126493,126494,126495,126497,126498,126500,126503,126505,126506,126507,126508,126509,126510,126511,126512,126513,126514,126516,126517,126518,126519,126521,126523,126530,126535,126537,126539,126541,126542,126543,126545,126546,126548,126551,126553,126555,126557,126559,126561,126562,126564,126567,126568,126569,126570,126572,126573,126574,126575,126576,126577,126578,126580,126581,126582,126583,126585,126586,126587,126588,126590,126592,126593,126594,126595,126596,126597,126598,126599,126600,126601,126603,126604,126605,126606,126607,126608,126609,126610,126611,126612,126613,126614,126615,126616,126617,126618,126619,126625,126626,126627,126629,126630,126631,126632,126633,126635,126636,126637,126638,126639,126640,126641,126642,126643,126644,126645,126646,126647,126648,126649,126650,126651,1114109]; j.prototype.applyStyles=function(a,b){b=b||this.div;for(var c in a)a.hasOwnProperty(c)&&(b.style[c]=a[c])},j.prototype.formatStyle=function(a,b){return 0===a?0:a+b},k.prototype=o(j.prototype),k.prototype.constructor=k,l.prototype.move=function(a,b){switch(b=void 0!==b?b:this.lineHeight,a){case"+x":this.left+=b,this.right+=b;break;case"-x":this.left-=b,this.right-=b;break;case"+y":this.top+=b,this.bottom+=b;break;case"-y":this.top-=b,this.bottom-=b}},l.prototype.overlaps=function(a){return this.lefta.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}); //# sourceMappingURL=video.min.js.map diff --git a/node_modules/video.js/dist/video.min.js.map b/node_modules/video.js/dist/video.min.js.map index bbb859d..4806728 100644 --- a/node_modules/video.js/dist/video.min.js.map +++ b/node_modules/video.js/dist/video.min.js.map @@ -1 +1 @@ -{"version":3,"file":"generated.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseIsFunction.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/baseToString.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimIsPlainObject.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/string/escapeRegExp.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/safe-json-parse/tuple.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extends.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js","src/js/xhr.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","doccy",3,4,"restParam","func","start","TypeError","FUNC_ERROR_TEXT","nativeMax","undefined","args","arguments","index","rest","Array","otherArgs","apply","Math","max",5,"arrayCopy","source","array",6,"arrayEach","iteratee",7,"baseCopy","props","object","key",8,"createBaseFor","baseFor","./createBaseFor",9,"baseForIn","keysIn","../object/keysIn","./baseFor",10,"baseIsFunction","value",11,"baseMerge","customizer","stackA","stackB","isObject","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","result","isCommon","../lang/isArray","../lang/isObject","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",12,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",13,"baseProperty","toObject","./toObject",14,"baseToString",15,"bindCallback","thisArg","argCount","identity","collection","accumulator","other","../utility/identity",16,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",17,"fromRight","keysFunc","iterable",18,"getLength","./baseProperty",19,"getNative","isNative","../lang/isNative",20,"isLength","./getLength","./isLength",21,"isHostObject","Object","toString",22,"isIndex","reIsUint","test","MAX_SAFE_INTEGER",23,"type","./isIndex",24,25,26,"shimIsPlainObject","Ctor","objToString","objectTag","hasOwnProperty","constructor","support","argsTag","ownLast","subValue","objectProto","prototype","../support","./baseForIn","./isHostObject",27,"shimKeys","propsLength","allowIndexes","isString","../lang/isString",28,"unindexedChars","charAt",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","nativeIsArray","../internal/getNative","../internal/isLength",31,"funcTag","Uint8Array","isFunction","../internal/baseIsFunction",32,"reIsNative","fnToString","reIsHostCtor","escapeRegExp","Function","RegExp","replace","../internal/isHostObject","../string/escapeRegExp",33,34,"getPrototypeOf","valueOf","objProto","../internal/shimIsPlainObject","./isArguments",35,"stringTag",36,"typedArrayTags","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","enumPrototypes","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"string","reHasRegExpChars","reRegExpChars","../internal/baseToString",42,"arrayProto","document","splice","x","0","y","nodeTag","spliceObjects","dom","createDocumentFragment","nodeType",43,44,"canBeObject","obj","hasSymbols","Symbol","defineProperties","propIsEnumerable","isEnumerableOn","prop","assignShim","target","objTarget","getOwnPropertySymbols","filter","shim","assign","preventExtensions","assignHasPendingExceptions","thrower","define-properties","object-keys",45,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","supportsDescriptors","name","predicate","configurable","enumerable","writable","map","predicates",46,"hasOwn","ctx","k",47,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","keysShim","theKeys","j","ctor","skipConstructor",48,"str","callee",49,"SafeParseTuple","reviver","_Component2","_interopRequireWildcard","_Component","_Button","player","options","buildCSSClass","_Component3","_assign2","_assign","Button","role","aria-live","el","controlTextEl_","innerHTML","localize","controlText_","handleFocus","Events","on","_document2","Fn","bind","handleKeyPress","event","which","preventDefault","handleClick","_window2","_window","Dom","_import","Component","player_","id_","id","Guid","newGUID","el_","createEl","childIndex_","childNameIndex_","reportTouchActivity","trigger","bubbles","children_","dispose","removeElData","tagName","attributes","languages","language","children","getChildById","addChild","child","componentName","componentClassName","componentClass","_toTitleCase2","ComponentClass","getComponent","component","removeChild","getChild","childFound","options_","parentOptions","_this","handleAdd","opts","playerOptions","_name","first","second","removeOnDispose","_this2","off","cleanRemover","guid","third","nodeName","_this3","newFunc","_newFunc","ready","sync","isReady_","readyQueue","readyQueue_","hasClass","classToCheck","hasElClass","addElClass","classToAdd","removeClass","classToRemove","removeElClass","show","dimension","num","skipListeners","widthOrHeight","val","style","emitTapEvents","touchStart","touchTimeThreshold","couldBeTap","touches","firstTouch","xdiff","pageX","touchDistance","tapMovementThreshold","noTap","touchTime","Date","getTime","enableTouchActivity","report","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","setTimeout","timeout","timeoutId","intervalId","comp","init","create","subObj","extend","_name2","ControlBar","className","FullscreenToggle","isFullscreen","controlText","LiveDisplay","MuteToggle","_classCallCheck","update","tech","featuresVolumeControl","addClass","vol","muted","level","toMute","handlePause","PlayToggle","play","pause","handlePlay","_Menu2","_Menu","updateLabel","_inherits","PlaybackRateMenuButton","_MenuButton","appendChild","labelEl_","menu","setAttribute","playbackRate","currentRate","newRate","playbackRates","playbackRateSupported","featuresPlaybackRate","PlaybackRateMenuItem","_MenuItem","label","rate","LoadProgressBar","buffered","percentify","time","end","percent","part","width","bufferedEnd","_formatTime2","_formatTime","updateDataAttr","PlayProgressBar","_SeekBar","ProgressControl","updateARIAAttributes","SeekBar","_Slider","aria-label","scrubbing","getCache","currentTime","getPercent","toFixed","duration","newTime","videoWasPlaying","stepForward","stepBack","_Slider3","CustomControlSpacer","_Spacer","Spacer","CaptionSettingsMenuItem","_TextTrackMenuItem","track","_CaptionSettingsMenuItem2","_CaptionSettingsMenuItem","CaptionsButton","threshold","_TextTrackButton","hide","items","kind","kind_","_TextTrackMenuItem2","_ChaptersTrackMenuItem2","_ChaptersTrackMenuItem","ChaptersButton","createItems","tracks","textTracks","createMenu","cues","chaptersTrack","mode","contentEl","tabIndex","cue","mi","ChaptersTrackMenuItem","addEventListener","startTime","OffTextTrackMenuItem","selected","handleTracksChange","_OffTextTrackMenuItem2","_OffTextTrackMenuItem","TextTrackButton","updateHandler","removeEventListener","_document","TextTrackMenuItem","onchange","Event","err","updateContent","CurrentTimeDisplay","contentEl_","DurationDisplay","RemainingTimeDisplay","formattedTime","remainingTime","localizedText","TimeDivider","_Slider2","_VolumeLevel","VolumeBar","volume","calculateDistance","VolumeControl","_VolumeBar","VolumeLevel","_VolumeBar2","VolumeMenuButton","vertical","inline","volumeBar","volumeUpdate","orientationClass","contentElType","unlockShowing","vc","ErrorDisplay","./utils/dom.js",83,"EventTarget","allowedEvents_","ael","one","dispatchEvent","_log","_log2","subClass","superClass","subClassMethods","methods","FullscreenApi","apiMap","browserApi","LoadingSpinner","MediaError","_MediaError","message","status","errorTypes",2,"_Button3","_Button2","_toTitleCase","MenuButton","title","handleBlur","buttonPressed_","unpressButton","focus","MenuItem","_selected","_import3","Menu","append","__esModule","default","__proto__","_import2","_import5","_mergeOptions","_textTrackConverter","_ControlBar","Player","tagAttributes","getElAttributes","languagesToLower","toLowerCase","playerOptionsCopy","_mergeOptions2","plugins","isAudio","controls","styleEl_","parentNode","players","removeAttribute","defaultsStyleEl","querySelector","height","aspectRatio","_dimension","privDimension","parsedVal","parseFloat","updateStyleEl_","fluid","bool","ratio","aspectRatio_","videoWidth","videoHeight","ratioParts","split","width_","height_","ratioMultiplier","loadTech","techName","disposeMediaElement","techReady","triggerReady","techOptions","playerId","techId","textTracks_","preload","loop","poster","currentType_","cache_","techComponent","_textTrackConverter2","jsonToTextTracks","textTracksJson_","handleTechReady","handleTechUseNativeControls","handleTechLoadStart","handleTechWaiting","handleTechCanPlay","handleTechCanPlayThrough","handleTechPlaying","handleTechEnded","handleTechSeeking","handleTechSeeked","handleTechPlay","handleTechFirstPlay","handleTechPause","handleTechProgress","handleTechDurationChange","handleTechFullscreenChange","handleTechSuspend","handleTechAbort","handleTechEmptied","handleTechTimeUpdate","handleTechRateChange","handleTechVolumeChange","usingNativeControls","addTechControlsListeners","handleTechClick","handleTechTouchMove","handleTechTouchEnd","error","hasStarted","_hasStarted","hasStarted_","bufferedPercent","handleTechTap","handleTechTouchStart","userWasActive","userActive","updateDuration","techGet","handleStageClick","data","handleTechError","handleTechStalled","handleTechLoadedMetaData","handleTechLoadedData","onTextTrackChange","techCall","method","arg","isScrubbing","scrubbing_","seconds","_buffered","_bufferedPercent","_bufferedPercent2","percentAsDecimal","_muted","fsApi","fullscreenchange","documentFullscreenChange","requestFullscreen","supportsFullScreen","exitFullscreen","isFullWindow","docOrigOverflow","documentElement","overflow","body","exitFullWindow","b","src","currentTech","sourceList_","load","sourceTech","selectSource","controls_","usingNativeControls_","error_","_MediaError2","ended","seeking","seekable","userActivity_","userActive_","stopPropagation","listenForUserActivity","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseDown","handleMouseUp","clearTimeout","inactivityTimeout","addTextTrack","addRemoteTextTrack","removeRemoteTextTrack","languages_","toJSON","dataSetup","tagOptions","_safeParseTuple","baseOptions","hasChildNodes","childNodes","childName","defaultVolume","posterImage","bigPlayButton","controlBar","_Player","browser","PosterImage","fallbackImg_","setSrc","url","_windowLoaded","autoSetup","vids","getElementsByTagName","mediaEls","audios","mediaEl","getAttribute","autoSetupTimeout","vjs","wait","readyState","Slider","bar","barName","handleMouseMove","progress","percentage","box","findElPosition","boxY","top","pageY","changedTouches","min","boxH","boxX","left","boxW","stopImmediatePropagation","vertical_","registerComponent","FlashRtmpDecorator","Flash","streamingFormats","streamToParts","parts","connection","stream","connEnd","indexOf","streamBegin","lastIndexOf","substring","rtmpSourceHandler","attrUpper","attr","toUpperCase","slice","_api","vjs_setProperty","vjs_getProperty","instance","Constructor","_Tech2","navigator","_Tech","setSource","objId","eventProxyFunction","errorEventProxyFunction","flashVars","params","wmode","embed","swf","_src","lastSeekTarget_","setCurrentTime","currentSource_","setPoster","_createTimeRange","createTimeRange","enterFullScreen","_Tech3","_readWrite","_readOnly","_createGetter","nativeSourceHandler","canHandleSource","guessMimeType","ext","Url","getFileExtension","video/flv","video/mp4","checkReady","eventName","msg","version","description","match","getEmbedCode","flashVarsString","paramsString","attrsString","flashvars","getOwnPropertyNames","forEach","Html5","currentSrc","initNetworkState_","nodesLength","nodes","node","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackChange_","handleTextTrackChange","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","emulatedTt","tt","handleTextTrackAdd_","movingMediaElementInDOM","clone","cloneNode","createElement","TOUCH_ENABLED","nativeControlsForTouch","setElAttributes","class","settingsAttrs","overwriteAttrs","paused","setVolume","setMuted","offsetWidth","offsetHeight","video","networkState","HAVE_METADATA","webkitEnterFullScreen","exitFullScreen","setPreload","autoplay","setAutoplay","setControls","setLoop","defaultMuted","played","srclang","removeTrack_","TEST_VID","isSupported","canPlayType","registerSourceHandler","canControlVolume","canControlPlaybackRate","supportsNativeTextTracks","supportsTextTracks","featuresProgressEvents","mpegurlRE","patchCanPlayType","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","firstChild","MediaLoader","_TextTrackList","Tech","manualProgressOn","featuresTimeupdateEvents","nativeCaptions","nativeTextTracks","initControlsListeners","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","onDurationChange","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","currentTimeInterval","manuallyTriggered","initTextTrackListeners","textTrackListChanges","WebVTT","script","textTracksChanges","updateDisplay","_TextTrackList2","createTrackHelper","withSourceHandlers","handler","handlers","sourceHandlers","selectSourceHandler","sh","srcObj","sourceHandler_","disposeSourceHandler","handleSource","../tracks/text-track","../tracks/text-track-list","../utils/buffer.js","../utils/fn.js","../utils/log.js","../utils/time-ranges.js","global/document","global/window",101,"TextTrackCueList","_TextTrackCueList","list","IS_IE8","get","length_","setCues_","cues_","oldLength","defineProp","parseInt","color","opacity","darkGray","lightGray","TextTrackDisplay","clearDisplay","updateForTrack","overrides","textTrackSettings","getValues","_i","activeCues","processCues","cueDiv","displayState","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","../component","../menu/menu-button.js","../menu/menu-item.js","../menu/menu.js",103,"TextTrackMode","disabled","hidden","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","querySelectorAll","trackObjs","TextTrackList","tracks_","_EventTarget2","change","addtrack","removetrack","_event","rtrack","getTrackById","getSelectedOptionValue","selectedOption","selectedOptions","selectedIndex","option","TextTrackSettings","persistTextTrackSettings","saveSettings","textEdge","fontFamily","fgColor","bgColor","bgOpacity","setValues","values","setSelectedOption","restoreSettings","_safeParseTuple3","localStorage","getItem","removeItem","ttDisplay","_TextTrackCueList2","TextTrack","_TextTrack","tech_","TextTrackEnum","TextTrackKind","activeCues_","changed","timeupdateHandler","set","newMode","loaded_","ct","endTime","active","addCue","removeCue","removed","parseCues","_parseCues","srcContent","parser","oncue","onparsingerror","parse","flush","loadTrack","_XHR2","response","responseBody","O","len","fromIndex","abs","userAgent","IS_IPHONE","USER_AGENT","IS_IPAD","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","bufferedDuration","messages","Proxy","_ret","warn","defaultBehaviors","getEl","properties","propName","parent","getElData","elData","elIdAttr","element","classNames","join","attrName","knownBooleans","attrs","attrVal","onselectstart","getBoundingClientRect","docEl","clientLeft","scrollLeft","pageXOffset","elem","_handleMultipleEvents","dispatcher","hash","fixEvent","m","handlersCopy","isImmediatePropagationStopped","attachEvent","removeType","ownerDocument","isPropagationStopped","defaultPrevented","targetData","_func","returnTrue","returnFalse","old","srcElement","relatedTarget","fromElement","toElement","returnValue","cancelBubble","doc","clientX","_cleanUpEvents","detachEvent","ret","context","guide","h","floor","_logType","console","noop","log","history","argsArray","isPlain","mergeOptions","destination","lodash-compat/object/merge",118,"createStyleElement","_start","_end","parseUrl","href","addToBody","div","details","protocol","path","stylesheet","_Player2","_import4","_xhr2","_xhr","_extendsFn","_merge2","_Html5","_videojs","getPlayers","head","insertBefore","addLanguage","./component","./event-target","./extends.js","./player","./plugins.js","./setup","./tech/flash.js","./tech/html5.js","./utils/browser.js","./utils/create-deprecation-proxy.js","./utils/events.js","./utils/fn.js","./utils/format-time.js","./utils/log.js","./utils/stylesheet.js","./utils/time-ranges.js","./utils/url.js","./xhr.js","object.assign",123,"xhr","callback","abortTimeout","uri","XHR","XMLHttpRequest","ActiveXObject","request","urlInfo","winLoc","location","successHandler","errorHandler","crossOrigin","host","XDomainRequest","onreadystatechange","timedout","fileUrl","abort","onload","onerror","onprogress","open","withCredentials","responseType"],"mappings":"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H,+CAE6B,IAAvBwzB,EAAK5b,aACP4b,EAAKU,UAAA,EACJV,EAAAY,4DA7BPZ,EAAAa,OAAQT,EACNJ,EAAIc,QAAQT,IAGTU,WAAA,sCAiCP,KAECf,EAAAgB,KAAAn8B,EAAAoa,QAAA,MAAApa,EAAA+6B,KAAA,wBAMC/6B,EAAOo8B,kBACRjB,EAAAiB,iBAAA,GAGDp8B,EAAAq8B;;;AzH7JF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACTA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;uBCXmB,aAAa;;;;yBA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","sourcesContent":["(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 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","/**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\nfunction baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n}\n\nmodule.exports = baseIsFunction;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? null : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merging properties.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n}\n\nmodule.exports = baseToString;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseForIn = require('./baseForIn'),\n isArguments = require('../lang/isArguments'),\n isHostObject = require('./isHostObject'),\n isObjectLike = require('./isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * A fallback implementation of `_.isPlainObject` which checks if `value`\n * is an object created by the `Object` constructor or has a `[[Prototype]]`\n * of `null`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\nfunction shimIsPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||\n (!hasOwnProperty.call(value, 'constructor') &&\n (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||\n (!support.argsTag && isArguments(value))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = shimIsPlainObject;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;\n}\n// Fallback for environments without a `toStringTag` for `arguments` objects.\nif (!support.argsTag) {\n isArguments = function(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var baseIsFunction = require('../internal/baseIsFunction'),\n getNative = require('../internal/getNative');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar Uint8Array = getNative(global, 'Uint8Array');\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nvar isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return objToString.call(value) == funcTag;\n};\n\nmodule.exports = isFunction;\n","var escapeRegExp = require('../string/escapeRegExp'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n escapeRegExp(fnToString.call(hasOwnProperty))\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (objToString.call(value) == funcTag) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getNative = require('../internal/getNative'),\n isArguments = require('./isArguments'),\n shimIsPlainObject = require('../internal/shimIsPlainObject'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar getPrototypeOf = getNative(Object, 'getPrototypeOf');\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nvar isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) {\n return false;\n }\n var valueOf = getNative(value, 'valueOf'),\n objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n return objProto\n ? (value == objProto || getPrototypeOf(value) == objProto)\n : shimIsPlainObject(value);\n};\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? null : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it is iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","var baseToString = require('../internal/baseToString');\n\n/**\n * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).\n * In addition to special characters the forward slash is escaped to allow for\n * easier `eval` use and `Function` compilation.\n */\nvar reRegExpChars = /[.*+?^${}()|[\\]\\/\\\\]/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n/**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\nfunction escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect DOM support. */\nvar document = (document = global.window) ? document.document : null;\n\n/**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if the `toStringTag` of `arguments` objects is resolvable\n * (all but Firefox < 4, IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.argsTag = objToString.call(arguments) == argsTag;\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nodeTag = objToString.call(document) != objectTag;\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n\n /**\n * Detect if the DOM is supported.\n *\n * @memberOf _.support\n * @type boolean\n */\n try {\n support.dom = document.createDocumentFragment().nodeType === 11;\n } catch(e) {\n support.dom = false;\n }\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar isEnumerableOn = function (obj) {\n\treturn function isEnumerable(prop) {\n\t\treturn propIsEnumerable.call(obj, prop);\n\t};\n};\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = Object(target);\n\tvar s, source, i, props;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = Object(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tprops.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source)));\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\nassignShim.shim = function shimObjectAssign() {\n\tif (Object.assign && Object.preventExtensions) {\n\t\tvar assignHasPendingExceptions = (function () {\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t}());\n\t\tif (assignHasPendingExceptions) {\n\t\t\tdelete Object.assign;\n\t\t}\n\t}\n\tif (!Object.assign) {\n\t\tdefineProperties(Object, {\n\t\t\tassign: assignShim\n\t\t});\n\t}\n\treturn Object.assign || assignShim;\n};\n\nmodule.exports = assignShim;\n\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj });\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tforeach(keys(map), function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar ctor = object.constructor;\n\t\tvar skipConstructor = ctor && ctor.prototype === object;\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]'\n\t\t\t&& value !== null\n\t\t\t&& typeof value === 'object'\n\t\t\t&& typeof value.length === 'number'\n\t\t\t&& value.length >= 0\n\t\t\t&& toStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}) {\n // Add standard Aria and Tabindex info\n props = assign({\n className: this.buildCSSClass(),\n 'role': 'button',\n 'type': 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite', // let the screen reader user know that the text of the button may change\n tabIndex: 0\n }, props);\n\n let el = super.createEl(tag, props);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick();\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n * This is used for merging options for child components. We\n * want it to be easy to override individual options on a child\n * component without having to rewrite all the other default options.\n * ```js\n * Parent.prototype.options_ = {\n * children: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * children: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * children: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} attributes An object of element attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, attributes) {\n return Dom.createEl(tagName, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComonent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * children: {\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_.children = {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * ```\n * // Or when creating the component\n * ```js\n * var myComp = new MyComponent(player, {\n * children: {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * });\n * ```\n * The children option can also be an Array of child names or\n * child options objects (that also include a 'name' key).\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'muteToggle',\n 'volumeControl',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n * \n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`,\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech\n && this.player().tech['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: {\n 'seekBar': {}\n }\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder',\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: {\n 'loadProgressBar': {},\n 'playProgressBar': {}\n },\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl({\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {Object} props An object of properties \n * @return {Element}\n * @method createEl\n */\n createEl(props) {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech && this.player().tech['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n innerHTML: 'Current Time ' + '0:00', // label the current time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n innerHTML: `${this.localize('Duration Time')} 0:00`, // label the duration time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display \n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n innerHTML: `${this.localize('Remaining Time')} -0:00`, // label the remaining time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar',\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: {\n 'volumeLevel': {}\n },\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: {\n 'volumeBar': {}\n }\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using a horizontal\n // slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well, since that will\n // need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n this.addClass('vjs-menu-button');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vc = new VolumeBar(this.player_, this.options_.volumeBar);\n\n vc.on('focus', function() {\n menu.lockShowing();\n });\n vc.on('blur', function() {\n menu.unlockShowing();\n });\n menu.addChild(vc);\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extends.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extends(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendsFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendsFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc \n * @return {Element}\n * @method createEl\n */\n createEl(type, props) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props));\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n plugins[name].playerOptions = playerOptionsCopy;\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the native controls are used\n *\n * @private\n * @method handleTechUseNativeControls\n */\n handleTechUseNativeControls() {\n this.usingNativeControls(true);\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n this.error(this.tech.error().code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, this.el_.vjs_getProperty('buffered'));\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n const msg = 'FLASH: '+err;\n\n if (err === 'srcnotfound') {\n tech.trigger('error', { code: 4, message: msg });\n\n // errors we haven't categorized into the media errors\n } else {\n tech.trigger('error', msg);\n }\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let tt = this.textTracks();\n let i = tt.length;\n while(i--) {\n this.removeRemoteTextTrack(tt[i]);\n }\n\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech && player.tech['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks \n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks \n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks \n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list \n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n // \n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err);\n }\n\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // Not remembering why we were checking for dash\n // but using setAttribute means you have to use getAttribute\n\n // The check for dash checks for the aria- * attributes, like aria-label, aria-valuemin.\n // The additional check for \"role\" is because the default method for adding attributes does not\n // add the attribute \"role\". My guess is because it's not a valid attribute in some namespaces, although\n // browsers handle the attribute just fine. The W3C allows for aria- * attributes to be used in pre-HTML5 docs.\n // http://www.w3.org/TR/wai-aria-primer/#ariahtml. Using setAttribute gets around this problem.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @private\n * @method createTimeRange\n */\nexport function createTimeRange(start, end){\n if (start === undefined && end === undefined) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: 1,\n start: function() { return start; },\n end: function() { return end; }\n };\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\n\nimport assign from 'object.assign';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport xhr from './xhr.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendsFn from './extends.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = stylesheet.createStyleElement('vjs-styles-defaults');\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);\nstylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n`);\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extends' doc for more info)\n * var MySpecialButton = videojs.extends(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extends` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extends(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extends\n */\nvideojs.extends = extendsFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = createTimeRange;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Simple http request for retrieving external files (e.g. text tracks)\n *\n * ##### Example\n *\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n *\n *\n * API is modeled after the Raynos/xhr.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @returns {Object} The request\n */\nvideojs.xhr = xhr;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n","/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err);\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n"]} \ No newline at end of file +{"version":3,"file":"video.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/safe-json-parse/tuple.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extends.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js","src/js/xhr.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"restParam","func","start","TypeError","FUNC_ERROR_TEXT","nativeMax","undefined","args","arguments","index","rest","Array","otherArgs","apply","Math","max",5,"arrayCopy","source","array",6,"arrayEach","iteratee",7,"baseCopy","props","object","key",8,"createBaseFor","baseFor","./createBaseFor",9,"baseForIn","keysIn","../object/keysIn","./baseFor",10,"baseMerge","customizer","stackA","stackB","isObject","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","result","isCommon","../lang/isArray","../lang/isObject","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",11,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",12,"baseProperty","toObject","./toObject",13,"bindCallback","thisArg","argCount","identity","collection","accumulator","other","../utility/identity",14,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",15,"fromRight","keysFunc","iterable",16,"getLength","./baseProperty",17,"getNative","isNative","../lang/isNative",18,"isLength","./getLength","./isLength",19,"isHostObject","Object","toString",20,"isIndex","reIsUint","test","MAX_SAFE_INTEGER",21,"type","./isIndex",22,23,24,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",25,"support","unindexedChars","charAt","../support",26,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",27,"arrayTag","objToString","nativeIsArray","../internal/getNative","../internal/isLength",28,"isFunction","funcTag","./isObject",29,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",30,31,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",32,"stringTag",33,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",34,"../internal/baseCopy",35,"nativeKeys","enumPrototypes","../internal/shimKeys",36,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",37,"merge","../internal/baseMerge","../internal/createAssigner",38,"arrayProto","splice","x","0","y","spliceObjects",39,40,"canBeObject","obj","hasSymbols","Symbol","defineProperties","propIsEnumerable","assignShim","target","syms","objTarget","getOwnPropertySymbols","shim","assignHasPendingExceptions","assign","preventExtensions","thrower","define-properties","object-keys",41,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","enumerable","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",42,"hasOwn","ctx","k",43,"has","slice","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$window","$console","$parent","$self","$frames","$webkitIndexedDB","$webkitStorageInfo","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",44,"str","callee",45,"SafeParseTuple","reviver","_componentJs2","_interopRequireDefault","_componentJs","_classCallCheck","BigPlayButton","_Button","player","options","buildCSSClass","__esModule","newObj","default","Constructor","instance","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_component","_objectAssign","Button","_Component","on","handleBlur","_objectAssign2","role","aria-live","el","controlTextEl_","innerHTML","localize","controlText_","handleFocus","Events","_globalDocument2","Fn","bind","handleKeyPress","event","which","preventDefault","handleClick","_interopRequireWildcard","_globalWindow2","_globalWindow","Dom","_utilsDomJs","Component","player_","id_","id","Guid","newGUID","el_","createEl","childIndex_","childNameIndex_","reportTouchActivity","trigger","bubbles","children_","dispose","removeElData","tagName","attributes","string","languages","language","children","getChildById","addChild","child","componentName","componentClassName","componentClass","_utilsToTitleCaseJs2","ComponentClass","getComponent","component","removeChild","getChild","childFound","options_","parentOptions","_this","handleAdd","opts","playerOptions","_name","first","second","removeOnDispose","_this2","off","cleanRemover","guid","third","nodeName","one","_this3","_arguments","newFunc","ready","sync","isReady_","readyQueue","readyQueue_","hasClass","classToCheck","hasElClass","addElClass","classToAdd","removeClass","classToRemove","removeElClass","show","dimension","num","skipListeners","widthOrHeight","val","style","emitTapEvents","touchStart","touchTimeThreshold","couldBeTap","touches","firstTouch","xdiff","pageX","touchDistance","tapMovementThreshold","noTap","touchTime","Date","getTime","enableTouchActivity","report","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","setTimeout","timeout","timeoutId","intervalId","comp","init","subObj","extend","_name2","_spacerControlsCustomControlSpacerJs","ControlBar","className","FullscreenToggle","isFullscreen","controlText","LiveDisplay","MuteToggle","update","tech","addClass","vol","muted","level","toMute","handlePlay","handlePause","PlayToggle","play","pause","_menuMenuJs2","_menuMenuJs","PlaybackRateMenuButton","_MenuButton","updateVisibility","appendChild","labelEl_","menu","setAttribute","playbackRate","currentRate","newRate","playbackRates","playbackRateSupported","updateLabel","PlaybackRateMenuItem","_MenuItem","label","rate","buffered","percentify","time","end","percent","part","width","bufferedEnd","_utilsFormatTimeJs","updateDataAttr","_seekBarJs","ProgressControl","_Slider","updateARIAAttributes","aria-label","scrubbing","getCache","currentTime","getPercent","toFixed","_utilsFormatTimeJs2","duration","SeekBar","newTime","videoWasPlaying","stepForward","stepBack","_sliderSliderJs2","CustomControlSpacer","_Spacer","Spacer","_TextTrackMenuItem","CaptionSettingsMenuItem","_captionSettingsMenuItemJs2","_captionSettingsMenuItemJs","_TextTrackButton","CaptionsButton","threshold","hide","items","kind","kind_","_textTrackMenuItemJs2","_textTrackMenuItemJs","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","ChaptersButton","createItems","tracks","textTracks","createMenu","track","cues","chaptersTrack","contentEl","tabIndex","cue","mi","_utilsFnJs","ChaptersTrackMenuItem","addEventListener","startTime","OffTextTrackMenuItem","selected","handleTracksChange","_offTextTrackMenuItemJs","TextTrackButton","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","_globalDocument","TextTrackMenuItem","onchange","Event","err","dispatchEvent","updateContent","CurrentTimeDisplay","contentEl_","DurationDisplay","RemainingTimeDisplay","formattedTime","remainingTime","localizedText","TimeDivider","_sliderSliderJs","_volumeLevelJs","volume","calculateDistance","VolumeBar","VolumeControl","_volumeBarJs","VolumeLevel","_volumeControlVolumeBarJs","VolumeMenuButton","vertical","inline","volumeBar","volumeUpdate","orientationClass","contentElType","unlockShowing","vc","./utils/dom.js",79,"_utilsEventsJs","EventTarget","allowedEvents_","ael","_utilsLog","_utilsLog2","subClassMethods","methods","FullscreenApi","apiMap","browserApi","LoadingSpinner","MediaError","message","status","errorTypes","_buttonJs2","_buttonJs","_utilsToTitleCaseJs","MenuButton","title","buttonPressed_","unpressButton","focus","MenuItem","_selected","Menu","append","_utilsBrowserJs","_utilsLogJs2","_utilsLogJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_controlBarControlBarJs","tagAttributes","getElAttributes","languagesToLower","toLowerCase","_utilsMergeOptionsJs2","plugins","getOwnPropertyNames","forEach","playerOptionsCopy","isAudio","controls","Player","styleEl_","parentNode","players","removeAttribute","defaultsStyleEl","querySelector","height","aspectRatio","privDimension","_dimension","parsedVal","parseFloat","updateStyleEl_","fluid","bool","ratio","aspectRatio_","videoWidth","videoHeight","ratioParts","split","width_","height_","ratioMultiplier","loadTech","techName","disposeMediaElement","techReady","triggerReady","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","poster","currentType_","cache_","src","techComponent","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechReady","handleTechLoadStart","handleTechWaiting","handleTechCanPlay","handleTechCanPlayThrough","handleTechPlaying","handleTechEnded","handleTechSeeking","handleTechSeeked","handleTechPlay","handleTechFirstPlay","handleTechPause","handleTechProgress","handleTechDurationChange","handleTechFullscreenChange","handleTechSuspend","handleTechEmptied","handleTechStalled","handleTechLoadedMetaData","handleTechVolumeChange","onTextTrackChange","usingNativeControls","addTechControlsListeners","removeTechControlsListeners","handleTechClick","handleTechTouchMove","handleTechTouchEnd","autoplay","paused","error","hasStarted","_hasStarted","hasStarted_","bufferedPercent","handleTechTap","handleTechTouchStart","userWasActive","userActive","updateDuration","techGet","handleStageClick","data","handleTechError","handleTechAbort","handleTechLoadedData","handleTechTimeUpdate","handleTechRateChange","techCall","method","arg","isScrubbing","scrubbing_","seconds","_utilsBufferJs","percentAsDecimal","fsApi","fullscreenchange","documentFullscreenChange","requestFullscreen","supportsFullScreen","exitFullscreen","isFullWindow","docOrigOverflow","documentElement","overflow","body","exitFullWindow","b","currentTech","sourceList_","load","sourceTech","selectSource","controls_","usingNativeControls_","error_","_mediaErrorJs2","ended","seeking","seekable","userActivity_","userActive_","stopPropagation","listenForUserActivity","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseDown","handleMouseUp","clearTimeout","inactivityTimeout","addTextTrack","addRemoteTextTrack","removeRemoteTextTrack","languages_","toJSON","tagOptions","dataSetup","_safeParseTuple","baseOptions","hasChildNodes","childNodes","childName","defaultVolume","posterImage","bigPlayButton","controlBar","_playerJs","PosterImage","fallbackImg_","setSrc","url","_windowLoaded","autoSetup","vids","getElementsByTagName","mediaEls","audios","mediaEl","getAttribute","autoSetupTimeout","vjs","wait","readyState","Slider","bar","barName","playerEvent","handleMouseMove","progress","percentage","box","findElPosition","boxY","top","pageY","changedTouches","min","boxH","boxX","left","boxW","stopImmediatePropagation","vertical_","registerComponent","FlashRtmpDecorator","Flash","streamingFormats","streamToParts","parts","connection","stream","connEnd","indexOf","streamBegin","lastIndexOf","substring","rtmpSourceHandler","attrUpper","attr","toUpperCase","_api","vjs_setProperty","vjs_getProperty","_tech","_utilsUrlJs","_Tech","setSource","objId","eventProxyFunction","errorEventProxyFunction","flashVars","params","wmode","embed","swf","setCurrentTime","vjs_pause","lastSeekTarget_","currentSource_","setPoster","_utilsTimeRangesJs","createTimeRange","ranges","enterFullScreen","_tech2","_readWrite","_readOnly","_createGetter","nativeSourceHandler","canHandleSource","guessMimeType","ext","Url","getFileExtension","video/flv","video/mp4","checkReady","onEvent","swfID","eventName","getEl","version","navigator","description","match","getEmbedCode","flashVarsString","paramsString","attrsString","flashvars","_techJs2","_techJs","Html5","currentSrc","initNetworkState_","nodesLength","nodes","node","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackChange_","handleTextTrackChange","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","emulatedTt","tt","handleTextTrackAdd_","clone","cloneNode","createElement","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","overwriteAttrs","setVolume","setMuted","offsetWidth","offsetHeight","video","networkState","HAVE_METADATA","webkitEnterFullScreen","exitFullScreen","webkitExitFullScreen","_src","setPreload","setAutoplay","setControls","setLoop","defaultMuted","played","removeTrack_","TEST_VID","srclang","isSupported","canPlayType","registerSourceHandler","canControlVolume","canControlPlaybackRate","supportsNativeTextTracks","supportsTextTracks","mpegurlRE","patchCanPlayType","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","firstChild","MediaLoader","_tracksTextTrackList","Tech","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","nativeCaptions","nativeTextTracks","initControlsListeners","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","onDurationChange","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","currentTimeInterval","manuallyTriggered","initTextTrackListeners","textTrackListChanges","script","textTracksChanges","updateDisplay","_tracksTextTrackList2","createTrackHelper","withSourceHandlers","handler","handlers","sourceHandlers","selectSourceHandler","sh","srcObj","sourceHandler_","disposeSourceHandler","handleSource","../tracks/text-track","../tracks/text-track-list","../utils/buffer.js","../utils/fn.js","../utils/log.js","../utils/time-ranges.js","global/document","global/window",97,"list","IS_IE8","prop","TextTrackCueList","get","length_","setCues_","cues_","oldLength","defineProp","parseInt","color","opacity","darkGray","lightGray","TextTrackDisplay","clearDisplay","updateForTrack","overrides","getValues","_i","cueDiv","displayState","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","fontMap","../component","../menu/menu-button.js","../menu/menu-item.js","../menu/menu.js",99,"TextTrackMode","disabled","hidden","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","querySelectorAll","trackObjs","TextTrackList","tracks_","_eventTarget2","change","addtrack","removetrack","_event","rtrack","getTrackById","getSelectedOptionValue","selectedOption","selectedOptions","selectedIndex","option","TextTrackSettings","persistTextTrackSettings","saveSettings","restoreSettings","textEdge","fgColor","bgColor","bgOpacity","setValues","values","setSelectedOption","_safeJsonParseTuple2","localStorage","getItem","removeItem","ttDisplay","safe-json-parse/tuple",103,"_textTrackCueList2","_textTrackCueList","TextTrack","tech_","TextTrackEnum","TextTrackKind","mode","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","addCue","removeCue","removed","parseCues","srcContent","parser","loadTrack","_xhrJs2","response","responseBody","O","len","fromIndex","abs","webkitVersionMap","exec","USER_AGENT","IS_IPHONE","IS_IPAD","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","appleWebkitVersion","bufferedDuration","_timeRangesJs","_logJs","_logJs2","messages","Proxy","_ret","warn","defaultBehaviors","getElementById","properties","propName","parent","getElData","elData","elIdAttr","element","classNames","join","knownBooleans","attrs","attrName","attrVal","onselectstart","getBoundingClientRect","docEl","clientLeft","scrollLeft","pageXOffset","blockTextSelection","_guidJs","elem","_handleMultipleEvents","dispatcher","hash","fixEvent","m","handlersCopy","isImmediatePropagationStopped","removeType","ownerDocument","isPropagationStopped","defaultPrevented","targetData","returnTrue","returnFalse","old","srcElement","relatedTarget","fromElement","toElement","returnValue","cancelBubble","doc","clientX","_cleanUpEvents","detachEvent","ret","context","guide","h","floor",111,"_logType","console","noop","log","history","argsArray","isPlain","mergeOptions","destination","lodash-compat/object/merge",114,"createStyleElement","_start","_end","parseUrl","href","addToBody","div","details","protocol","stylesheet","_utilsStylesheetJs","_player2","_player","_srcJsUtilsMergeOptionsJs","_xhrJs","_extendsJs","_lodashCompatObjectMerge","_techHtml5Js","getPlayers","head","insertBefore","addLanguage","./component","./event-target","./extends.js","./player","./plugins.js","./setup","./tech/flash.js","./tech/html5.js","./utils/browser.js","./utils/create-deprecation-proxy.js","./utils/events.js","./utils/fn.js","./utils/format-time.js","./utils/log.js","./utils/stylesheet.js","./utils/time-ranges.js","./utils/url.js","./xhr.js","object.assign",119,"xhr","callback","abortTimeout","uri","XHR","XMLHttpRequest","ActiveXObject","request","urlInfo","winLoc","location","successHandler","errorHandler","crossOrigin","host","XDomainRequest","onreadystatechange","timedout","fileUrl","abort","onload","onerror","open","withCredentials","responseType"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","sourcesContent":["(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 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\nvar defineProperties = require('define-properties');\nvar toObject = Object;\nvar push = Array.prototype.push;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar assignShim = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tif (propIsEnumerable.call(source, syms[i])) {\n\t\t\t\t\tpush.call(props, syms[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tobjTarget[props[i]] = source[props[i]];\n\t\t}\n\t}\n\treturn objTarget;\n};\n\ndefineProperties(assignShim, {\n\tshim: function shimObjectAssign() {\n\t\tvar assignHasPendingExceptions = function () {\n\t\t\tif (!Object.assign || !Object.preventExtensions) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t\t\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\t\t\tvar thrower = Object.preventExtensions({ 1: 2 });\n\t\t\ttry {\n\t\t\t\tObject.assign(thrower, 'xy');\n\t\t\t} catch (e) {\n\t\t\t\treturn thrower[1] === 'y';\n\t\t\t}\n\t\t};\n\t\tdefineProperties(\n\t\t\tObject,\n\t\t\t{ assign: assignShim },\n\t\t\t{ assign: assignHasPendingExceptions }\n\t\t);\n\t\treturn Object.assign || assignShim;\n\t}\n});\n\nmodule.exports = assignShim;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { value: obj, enumerable: false });\n /* eslint-disable no-unused-vars */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t\tvalue: value\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$window: true,\n\t$console: true,\n\t$parent: true,\n\t$self: true,\n\t$frames: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\ttry {\n\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' && !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (!Object.keys) {\n\t\tObject.keys = keysShim;\n\t} else {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}) {\n // Add standard Aria and Tabindex info\n props = assign({\n className: this.buildCSSClass(),\n 'role': 'button',\n 'type': 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite', // let the screen reader user know that the text of the button may change\n tabIndex: 0\n }, props);\n\n let el = super.createEl(tag, props);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick();\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n * This is used for merging options for child components. We\n * want it to be easy to override individual options on a child\n * component without having to rewrite all the other default options.\n * ```js\n * Parent.prototype.options_ = {\n * children: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * children: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * children: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} attributes An object of element attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, attributes) {\n return Dom.createEl(tagName, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComonent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * children: {\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_.children = {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * ```\n * // Or when creating the component\n * ```js\n * var myComp = new MyComponent(player, {\n * children: {\n * myChildComponent: {\n * myChildOption: true\n * }\n * }\n * });\n * ```\n * The children option can also be an Array of child names or\n * child options objects (that also include a 'name' key).\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'muteToggle',\n 'volumeControl',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n * \n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`,\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech\n && this.player().tech['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: {\n 'seekBar': {}\n }\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder',\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: {\n 'loadProgressBar': {},\n 'playProgressBar': {}\n },\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl({\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {Object} props An object of properties \n * @return {Element}\n * @method createEl\n */\n createEl(props) {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech && this.player().tech['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n innerHTML: 'Current Time ' + '0:00', // label the current time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n innerHTML: `${this.localize('Duration Time')} 0:00`, // label the duration time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display \n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n innerHTML: `${this.localize('Remaining Time')} -0:00`, // label the remaining time for screen reader users\n 'aria-live': 'off' // tell screen readers not to automatically read the time as it changes\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar',\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: {\n 'volumeLevel': {}\n },\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: {\n 'volumeBar': {}\n }\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using a horizontal\n // slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well, since that will\n // need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech && player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n this.addClass('vjs-menu-button');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vc = new VolumeBar(this.player_, this.options_.volumeBar);\n\n vc.on('focus', function() {\n menu.lockShowing();\n });\n vc.on('blur', function() {\n menu.unlockShowing();\n });\n menu.addChild(vc);\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extends.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extends(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendsFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendsFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc \n * @return {Element}\n * @method createEl\n */\n createEl(type, props) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props));\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive_ = true;\n this.reportUserActivity();\n this.listenForUserActivity();\n\n this.on('fullscreenchange', this.handleFullscreenChange);\n this.on('stageclick', this.handleStageClick);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech) { this.tech.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech\n */\n loadTech(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech) {\n this.unloadTech();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n var techReady = Fn.bind(this, function() {\n this.triggerReady();\n });\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech = new techComponent(techOptions);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech);\n\n this.on(this.tech, 'ready', this.handleTechReady);\n\n // Listen to every HTML5 events and trigger them back on the player for the plugins\n this.on(this.tech, 'loadstart', this.handleTechLoadStart);\n this.on(this.tech, 'waiting', this.handleTechWaiting);\n this.on(this.tech, 'canplay', this.handleTechCanPlay);\n this.on(this.tech, 'canplaythrough', this.handleTechCanPlayThrough);\n this.on(this.tech, 'playing', this.handleTechPlaying);\n this.on(this.tech, 'ended', this.handleTechEnded);\n this.on(this.tech, 'seeking', this.handleTechSeeking);\n this.on(this.tech, 'seeked', this.handleTechSeeked);\n this.on(this.tech, 'play', this.handleTechPlay);\n this.on(this.tech, 'firstplay', this.handleTechFirstPlay);\n this.on(this.tech, 'pause', this.handleTechPause);\n this.on(this.tech, 'progress', this.handleTechProgress);\n this.on(this.tech, 'durationchange', this.handleTechDurationChange);\n this.on(this.tech, 'fullscreenchange', this.handleTechFullscreenChange);\n this.on(this.tech, 'error', this.handleTechError);\n this.on(this.tech, 'suspend', this.handleTechSuspend);\n this.on(this.tech, 'abort', this.handleTechAbort);\n this.on(this.tech, 'emptied', this.handleTechEmptied);\n this.on(this.tech, 'stalled', this.handleTechStalled);\n this.on(this.tech, 'loadedmetadata', this.handleTechLoadedMetaData);\n this.on(this.tech, 'loadeddata', this.handleTechLoadedData);\n this.on(this.tech, 'timeupdate', this.handleTechTimeUpdate);\n this.on(this.tech, 'ratechange', this.handleTechRateChange);\n this.on(this.tech, 'volumechange', this.handleTechVolumeChange);\n this.on(this.tech, 'texttrackchange', this.onTextTrackChange);\n this.on(this.tech, 'loadedmetadata', this.updateStyleEl_);\n\n this.usingNativeControls(this.techGet('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech.ready(techReady, true);\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech\n */\n unloadTech() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech.dispose();\n\n this.tech = false;\n }\n\n /**\n * Add playback technology listeners\n *\n * @method addTechControlsListeners\n */\n addTechControlsListeners() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech, 'mousedown', this.handleTechClick);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech, 'touchstart', this.handleTechTouchStart);\n this.on(this.tech, 'touchmove', this.handleTechTouchMove);\n this.on(this.tech, 'touchend', this.handleTechTouchEnd);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech, 'tap', this.handleTechTap);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners\n */\n removeTechControlsListeners() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech, 'tap', this.handleTechTap);\n this.off(this.tech, 'touchstart', this.handleTechTouchStart);\n this.off(this.tech, 'touchmove', this.handleTechTouchMove);\n this.off(this.tech, 'touchend', this.handleTechTouchEnd);\n this.off(this.tech, 'mousedown', this.handleTechClick);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @private\n * @method handleTechReady\n */\n handleTechReady() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall('setVolume', this.cache_.volume);\n }\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\n handleTechLoadStart() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @event play\n */\n handleTechPlay() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @event waiting\n */\n handleTechWaiting() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplay\n */\n handleTechCanPlay() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event canplaythrough\n */\n handleTechCanPlayThrough() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @event playing\n */\n handleTechPlaying() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event seeking\n */\n handleTechSeeking() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event seeked\n */\n handleTechSeeked() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event firstplay\n */\n handleTechFirstPlay() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @event pause\n */\n handleTechPause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @event progress\n */\n handleTechProgress() {\n this.trigger('progress');\n\n // Add custom event for when source is finished downloading.\n if (this.bufferedPercent() === 1) {\n this.trigger('loadedalldata');\n }\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event ended\n */\n handleTechEnded() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @event durationchange\n */\n handleTechDurationChange() {\n this.updateDuration();\n this.trigger('durationchange');\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @method handleTechClick\n */\n handleTechClick(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @method handleTechTap\n */\n handleTechTap() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @method handleTechTouchStart\n */\n handleTechTouchStart() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @method handleTechTouchMove\n */\n handleTechTouchMove() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @method handleTechTouchEnd\n */\n handleTechTouchEnd(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Update the duration of the player using the tech\n *\n * @private\n * @method updateDuration\n */\n updateDuration() {\n // Allows for caching value instead of asking player each time.\n // We need to get the techGet response and check for a value so we don't\n // accidentally cause the stack to blow up.\n var duration = this.techGet('duration');\n if (duration) {\n if (duration < 0) {\n duration = Infinity;\n }\n this.duration(duration);\n // Determine if the stream is live and propagate styles down to UI.\n if (duration === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n }\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @event fullscreenchange\n */\n handleFullscreenChange() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick\n */\n handleStageClick() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @method handleTechFullscreenChange\n */\n handleTechFullscreenChange(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @event error\n */\n handleTechError() {\n let error = this.tech.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @event suspend\n */\n handleTechSuspend() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @event abort\n */\n handleTechAbort() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @event emptied\n */\n handleTechEmptied() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @event stalled\n */\n handleTechStalled() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @event loadedmetadata\n */\n handleTechLoadedMetaData() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @event loaddata\n */\n handleTechLoadedData() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @event timeupdate\n */\n handleTechTimeUpdate() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event ratechange\n */\n handleTechRateChange() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @event volumechange\n */\n handleTechVolumeChange() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @event texttrackchange\n */\n onTextTrackChange() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @method techCall\n */\n techCall(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech && !this.tech.isReady_) {\n this.tech.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @method techGet\n */\n techGet(method) {\n if (this.tech && this.tech.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName} playback technology element.`, e);\n this.tech.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds !== undefined) {\n\n // cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = parseFloat(seconds);\n\n return this;\n }\n\n if (this.cache_.duration === undefined) {\n this.updateDuration();\n }\n\n return this.cache_.duration || 0;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall('setMuted', muted);\n return this;\n }\n return this.techGet('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech.supportsFullScreen()) {\n this.techCall('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech && this.tech['featuresPlaybackRate']) {\n return this.techGet('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech && this.tech['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech && this.tech['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech && this.tech['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech && this.tech['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech && this.tech['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech && this.tech.videoWidth && this.tech.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech && this.tech.videoHeight && this.tech.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall('initialTime'); },\n // startOffsetTime: function(){ return this.techCall('startOffsetTime'); },\n // played: function(){ return this.techCall('played'); },\n // seekable: function(){ return this.techCall('seekable'); },\n // videoTracks: function(){ return this.techCall('videoTracks'); },\n // audioTracks: function(){ return this.techCall('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall('defaultPlaybackRate'); },\n // mediaGroup: function(){ return this.techCall('mediaGroup'); },\n // controller: function(){ return this.techCall('controller'); },\n // defaultMuted: function(){ return this.techCall('defaultMuted'); }\n\n // TODO\n // currentSrcList: the array of sources including other formats and bitrates\n // playList: array of source lists in order of playback\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) { this.el_.src = src; }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){ this.el_.load(); }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i 0) {\n this.trigger('loadstart');\n }\n // Allow the tech ready event to handle synchronisity\n }, true);\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n }\n\n /**\n * Turn off progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n\n /**\n * Turn off any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n // clear out text tracks because we can't reuse them between techs\n let textTracks = this.textTracks();\n\n if (textTracks) {\n let i = textTracks.length;\n while(i--) {\n this.removeRemoteTextTrack(textTracks[i]);\n }\n }\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * When invoked without an argument, returns a MediaError object\n * representing the current error state of the player or null if\n * there is no error. When invoked with an argument, set the current\n * error state of the player.\n * @param {MediaError=} err Optional an error object\n * @return {MediaError} the current error object or null\n * @method error\n */\n error(err) {\n if (err !== undefined) {\n if (err instanceof MediaError) {\n this.error_ = err;\n } else {\n this.error_ = new MediaError(err);\n }\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js';\n this.el().parentNode.appendChild(script);\n window['WebVTT'] = true;\n }\n\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n let textTracksChanges = Fn.bind(this, function() {\n let updateDisplay = () => this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech && player.tech['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks \n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks \n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks \n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list \n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n // \n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport XHR from '../xhr.js';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n XHR(src, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // Not remembering why we were checking for dash\n // but using setAttribute means you have to use getAttribute\n\n // The check for dash checks for the aria- * attributes, like aria-label, aria-valuemin.\n // The additional check for \"role\" is because the default method for adding attributes does not\n // add the attribute \"role\". My guess is because it's not a valid attribute in some namespaces, although\n // browsers handle the attribute just fine. The W3C allows for aria- * attributes to be used in pre-HTML5 docs.\n // http://www.w3.org/TR/wai-aria-primer/#ariahtml. Using setAttribute gets around this problem.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @private\n * @method createTimeRange\n */\nexport function createTimeRange(start, end){\n if (start === undefined && end === undefined) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: 1,\n start: function() { return start; },\n end: function() { return end; }\n };\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\n\nimport assign from 'object.assign';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport xhr from './xhr.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendsFn from './extends.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = stylesheet.createStyleElement('vjs-styles-defaults');\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);\nstylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n`);\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extends' doc for more info)\n * var MySpecialButton = videojs.extends(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extends` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extends(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extends\n */\nvideojs.extends = extendsFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number} start Start time in seconds\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = createTimeRange;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Simple http request for retrieving external files (e.g. text tracks)\n *\n * ##### Example\n *\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n *\n *\n * API is modeled after the Raynos/xhr.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @returns {Object} The request\n */\nvideojs.xhr = xhr;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n","/**\n * @file xhr.js\n */\nimport * as Url from './utils/url.js';\nimport log from './utils/log.js';\nimport mergeOptions from './utils/merge-options.js';\nimport window from 'global/window';\n\n/*\n * Simple http request for retrieving external files (e.g. text tracks)\n * ##### Example\n * // using url string\n * videojs.xhr('http://example.com/myfile.vtt', function(error, response, responseBody){});\n *\n * // or options block\n * videojs.xhr({\n * uri: 'http://example.com/myfile.vtt',\n * method: 'GET',\n * responseType: 'text'\n * }, function(error, response, responseBody){\n * if (error) {\n * // log the error\n * } else {\n * // successful, do something with the response\n * }\n * });\n * /////////////\n * API is modeled after the Raynos/xhr, which we hope to use after\n * getting browserify implemented.\n * https://github.com/Raynos/xhr/blob/master/index.js\n *\n * @param {Object|String} options Options block or URL string\n * @param {Function} callback The callback function\n * @return {Object} The request\n * @method xhr\n */\nvar xhr = function(options, callback){\n let abortTimeout;\n\n // If options is a string it's the url\n if (typeof options === 'string') {\n options = {\n uri: options\n };\n }\n\n // Merge with default options\n options = mergeOptions({\n method: 'GET',\n timeout: 45 * 1000\n }, options);\n\n callback = callback || function(){};\n\n let XHR = window.XMLHttpRequest;\n\n if (typeof XHR === 'undefined') {\n // Shim XMLHttpRequest for older IEs\n XHR = function () {\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {}\n try { return new window.ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {}\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n\n let request = new XHR();\n // Store a reference to the url on the request instance\n request.uri = options.uri;\n\n let urlInfo = Url.parseUrl(options.uri);\n let winLoc = window.location;\n\n let successHandler = function(){\n window.clearTimeout(abortTimeout);\n callback(null, request, request.response || request.responseText);\n };\n\n let errorHandler = function(err){\n window.clearTimeout(abortTimeout);\n\n if (!err || typeof err === 'string') {\n err = new Error(err || 'XHR Failed with a response of: '+(request && (request.response || request.responseText)));\n }\n\n callback(err, request);\n };\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = (urlInfo.protocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available\n // 'withCredentials' is only available in XMLHTTPRequest2\n // Also XDomainRequest has a lot of gotchas, so only use if cross domain\n if (crossOrigin && window.XDomainRequest && !('withCredentials' in request)) {\n request = new window.XDomainRequest();\n request.onload = successHandler;\n request.onerror = errorHandler;\n // These blank handlers need to be set to fix ie9\n // http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/\n request.onprogress = function(){};\n request.ontimeout = function(){};\n\n // XMLHTTPRequest\n } else {\n const fileUrl = (urlInfo.protocol === 'file:' || winLoc.protocol === 'file:');\n\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.timedout) {\n return errorHandler('timeout');\n }\n\n if (request.status === 200 || fileUrl && request.status === 0) {\n successHandler();\n } else {\n errorHandler();\n }\n }\n };\n\n if (options.timeout) {\n abortTimeout = window.setTimeout(function() {\n if (request.readyState !== 4) {\n request.timedout = true;\n request.abort();\n }\n }, options.timeout);\n }\n }\n\n // open the connection\n try {\n // Third arg is async, or ignored by XDomainRequest\n request.open(options.method || 'GET', options.uri, true);\n } catch(err) {\n return errorHandler(err);\n }\n\n // withCredentials only supported by XMLHttpRequest2\n if(options.withCredentials) {\n request.withCredentials = true;\n }\n\n if (options.responseType) {\n request.responseType = options.responseType;\n }\n\n // send the request\n try {\n request.send();\n } catch(err) {\n return errorHandler(err);\n }\n\n return request;\n};\n\nexport default xhr;\n"]} \ No newline at end of file diff --git a/node_modules/video.js/dist/video.novtt.js b/node_modules/video.js/dist/video.novtt.js index 85a78a9..38f5168 100644 --- a/node_modules/video.js/dist/video.novtt.js +++ b/node_modules/video.js/dist/video.novtt.js @@ -17,7 +17,7 @@ if (typeof document !== 'undefined') { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvZG9jdW1lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuIl19 },{"min-document":3}],2:[function(_dereq_,module,exports){ (function (global){ if (typeof window !== "undefined") { @@ -31,7 +31,7 @@ if (typeof window !== "undefined") { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzZWxmO1xufSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHt9O1xufVxuIl19 },{}],3:[function(_dereq_,module,exports){ },{}],4:[function(_dereq_,module,exports){ @@ -45,7 +45,7 @@ var nativeMax = Math.max; * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ @@ -184,7 +184,7 @@ var baseFor = createBaseFor(); module.exports = baseFor; -},{"./createBaseFor":17}],9:[function(_dereq_,module,exports){ +},{"./createBaseFor":15}],9:[function(_dereq_,module,exports){ var baseFor = _dereq_('./baseFor'), keysIn = _dereq_('../object/keysIn'); @@ -203,24 +203,7 @@ function baseForIn(object, iteratee) { module.exports = baseForIn; -},{"../object/keysIn":39,"./baseFor":8}],10:[function(_dereq_,module,exports){ -/** - * The base implementation of `_.isFunction` without support for environments - * with incorrect `typeof` results. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - */ -function baseIsFunction(value) { - // Avoid a Chakra JIT bug in compatibility modes of IE 11. - // See https://github.com/jashkenas/underscore/issues/1621 for more details. - return typeof value == 'function' || false; -} - -module.exports = baseIsFunction; - -},{}],11:[function(_dereq_,module,exports){ +},{"../object/keysIn":36,"./baseFor":8}],10:[function(_dereq_,module,exports){ var arrayEach = _dereq_('./arrayEach'), baseMergeDeep = _dereq_('./baseMergeDeep'), isArray = _dereq_('../lang/isArray'), @@ -237,7 +220,7 @@ var arrayEach = _dereq_('./arrayEach'), * @private * @param {Object} object The destination object. * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {Object} Returns `object`. @@ -247,7 +230,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { return object; } var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)), - props = isSrcArr ? null : keys(source); + props = isSrcArr ? undefined : keys(source); arrayEach(props || source, function(srcValue, key) { if (props) { @@ -278,7 +261,7 @@ function baseMerge(object, source, customizer, stackA, stackB) { module.exports = baseMerge; -},{"../lang/isArray":30,"../lang/isObject":33,"../lang/isTypedArray":36,"../object/keys":38,"./arrayEach":6,"./baseMergeDeep":12,"./isArrayLike":20,"./isObjectLike":25}],12:[function(_dereq_,module,exports){ +},{"../lang/isArray":27,"../lang/isObject":30,"../lang/isTypedArray":33,"../object/keys":35,"./arrayEach":6,"./baseMergeDeep":11,"./isArrayLike":18,"./isObjectLike":23}],11:[function(_dereq_,module,exports){ var arrayCopy = _dereq_('./arrayCopy'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -297,7 +280,7 @@ var arrayCopy = _dereq_('./arrayCopy'), * @param {Object} source The source object. * @param {string} key The key of the value to merge. * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize merging properties. + * @param {Function} [customizer] The function to customize merged values. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates values with source counterparts. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. @@ -347,7 +330,7 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stack module.exports = baseMergeDeep; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isPlainObject":34,"../lang/isTypedArray":36,"../lang/toPlainObject":37,"./arrayCopy":5,"./isArrayLike":20}],13:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isPlainObject":31,"../lang/isTypedArray":33,"../lang/toPlainObject":34,"./arrayCopy":5,"./isArrayLike":18}],12:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -365,25 +348,7 @@ function baseProperty(key) { module.exports = baseProperty; -},{"./toObject":28}],14:[function(_dereq_,module,exports){ -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); -} - -module.exports = baseToString; - -},{}],15:[function(_dereq_,module,exports){ +},{"./toObject":25}],13:[function(_dereq_,module,exports){ var identity = _dereq_('../utility/identity'); /** @@ -424,16 +389,13 @@ function bindCallback(func, thisArg, argCount) { module.exports = bindCallback; -},{"../utility/identity":43}],16:[function(_dereq_,module,exports){ +},{"../utility/identity":39}],14:[function(_dereq_,module,exports){ var bindCallback = _dereq_('./bindCallback'), isIterateeCall = _dereq_('./isIterateeCall'), restParam = _dereq_('../function/restParam'); /** - * Creates a function that assigns properties of source object(s) to a given - * destination object. - * - * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`. + * Creates a `_.assign`, `_.defaults`, or `_.merge` function. * * @private * @param {Function} assigner The function to assign values. @@ -470,7 +432,7 @@ function createAssigner(assigner) { module.exports = createAssigner; -},{"../function/restParam":4,"./bindCallback":15,"./isIterateeCall":23}],17:[function(_dereq_,module,exports){ +},{"../function/restParam":4,"./bindCallback":13,"./isIterateeCall":21}],15:[function(_dereq_,module,exports){ var toObject = _dereq_('./toObject'); /** @@ -499,7 +461,7 @@ function createBaseFor(fromRight) { module.exports = createBaseFor; -},{"./toObject":28}],18:[function(_dereq_,module,exports){ +},{"./toObject":25}],16:[function(_dereq_,module,exports){ var baseProperty = _dereq_('./baseProperty'); /** @@ -516,7 +478,7 @@ var getLength = baseProperty('length'); module.exports = getLength; -},{"./baseProperty":13}],19:[function(_dereq_,module,exports){ +},{"./baseProperty":12}],17:[function(_dereq_,module,exports){ var isNative = _dereq_('../lang/isNative'); /** @@ -534,7 +496,7 @@ function getNative(object, key) { module.exports = getNative; -},{"../lang/isNative":32}],20:[function(_dereq_,module,exports){ +},{"../lang/isNative":29}],18:[function(_dereq_,module,exports){ var getLength = _dereq_('./getLength'), isLength = _dereq_('./isLength'); @@ -551,7 +513,7 @@ function isArrayLike(value) { module.exports = isArrayLike; -},{"./getLength":18,"./isLength":24}],21:[function(_dereq_,module,exports){ +},{"./getLength":16,"./isLength":22}],19:[function(_dereq_,module,exports){ /** * Checks if `value` is a host object in IE < 9. * @@ -574,12 +536,12 @@ var isHostObject = (function() { module.exports = isHostObject; -},{}],22:[function(_dereq_,module,exports){ +},{}],20:[function(_dereq_,module,exports){ /** Used to detect unsigned integer values. */ var reIsUint = /^\d+$/; /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -600,7 +562,7 @@ function isIndex(value, length) { module.exports = isIndex; -},{}],23:[function(_dereq_,module,exports){ +},{}],21:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('./isArrayLike'), isIndex = _dereq_('./isIndex'), isObject = _dereq_('../lang/isObject'); @@ -630,9 +592,9 @@ function isIterateeCall(value, index, object) { module.exports = isIterateeCall; -},{"../lang/isObject":33,"./isArrayLike":20,"./isIndex":22}],24:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"./isArrayLike":18,"./isIndex":20}],22:[function(_dereq_,module,exports){ /** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -640,7 +602,7 @@ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @private * @param {*} value The value to check. @@ -652,7 +614,7 @@ function isLength(value) { module.exports = isLength; -},{}],25:[function(_dereq_,module,exports){ +},{}],23:[function(_dereq_,module,exports){ /** * Checks if `value` is object-like. * @@ -666,70 +628,7 @@ function isObjectLike(value) { module.exports = isObjectLike; -},{}],26:[function(_dereq_,module,exports){ -var baseForIn = _dereq_('./baseForIn'), - isArguments = _dereq_('../lang/isArguments'), - isHostObject = _dereq_('./isHostObject'), - isObjectLike = _dereq_('./isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** - * A fallback implementation of `_.isPlainObject` which checks if `value` - * is an object created by the `Object` constructor or has a `[[Prototype]]` - * of `null`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ -function shimIsPlainObject(value) { - var Ctor; - - // Exit early for non `Object` objects. - if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) || - (!hasOwnProperty.call(value, 'constructor') && - (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) || - (!support.argsTag && isArguments(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - var result; - if (support.ownLast) { - baseForIn(value, function(subValue, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - baseForIn(value, function(subValue, key) { - result = key; - }); - return result === undefined || hasOwnProperty.call(value, result); -} - -module.exports = shimIsPlainObject; - -},{"../lang/isArguments":29,"../support":42,"./baseForIn":9,"./isHostObject":21,"./isObjectLike":25}],27:[function(_dereq_,module,exports){ +},{}],24:[function(_dereq_,module,exports){ var isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), isIndex = _dereq_('./isIndex'), @@ -773,7 +672,7 @@ function shimKeys(object) { module.exports = shimKeys; -},{"../lang/isArguments":29,"../lang/isArray":30,"../lang/isString":35,"../object/keysIn":39,"./isIndex":22,"./isLength":24}],28:[function(_dereq_,module,exports){ +},{"../lang/isArguments":26,"../lang/isArray":27,"../lang/isString":32,"../object/keysIn":36,"./isIndex":20,"./isLength":22}],25:[function(_dereq_,module,exports){ var isObject = _dereq_('../lang/isObject'), isString = _dereq_('../lang/isString'), support = _dereq_('../support'); @@ -801,13 +700,9 @@ function toObject(value) { module.exports = toObject; -},{"../lang/isObject":33,"../lang/isString":35,"../support":42}],29:[function(_dereq_,module,exports){ +},{"../lang/isObject":30,"../lang/isString":32,"../support":38}],26:[function(_dereq_,module,exports){ var isArrayLike = _dereq_('../internal/isArrayLike'), - isObjectLike = _dereq_('../internal/isObjectLike'), - support = _dereq_('../support'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; + isObjectLike = _dereq_('../internal/isObjectLike'); /** Used for native method references. */ var objectProto = Object.prototype; @@ -815,12 +710,6 @@ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; @@ -841,19 +730,13 @@ var propertyIsEnumerable = objectProto.propertyIsEnumerable; * // => false */ function isArguments(value) { - return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag; -} -// Fallback for environments without a `toStringTag` for `arguments` objects. -if (!support.argsTag) { - isArguments = function(value) { - return isObjectLike(value) && isArrayLike(value) && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); - }; + return isObjectLike(value) && isArrayLike(value) && + hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); } module.exports = isArguments; -},{"../internal/isArrayLike":20,"../internal/isObjectLike":25,"../support":42}],30:[function(_dereq_,module,exports){ +},{"../internal/isArrayLike":18,"../internal/isObjectLike":23}],27:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -865,7 +748,7 @@ var arrayTag = '[object Array]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -895,10 +778,8 @@ var isArray = nativeIsArray || function(value) { module.exports = isArray; -},{"../internal/getNative":19,"../internal/isLength":24,"../internal/isObjectLike":25}],31:[function(_dereq_,module,exports){ -(function (global){ -var baseIsFunction = _dereq_('../internal/baseIsFunction'), - getNative = _dereq_('../internal/getNative'); +},{"../internal/getNative":17,"../internal/isLength":22,"../internal/isObjectLike":23}],28:[function(_dereq_,module,exports){ +var isObject = _dereq_('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]'; @@ -907,14 +788,11 @@ var funcTag = '[object Function]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var Uint8Array = getNative(global, 'Uint8Array'); - /** * Checks if `value` is classified as a `Function` object. * @@ -931,25 +809,20 @@ var Uint8Array = getNative(global, 'Uint8Array'); * _.isFunction(/abc/); * // => false */ -var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { +function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return objToString.call(value) == funcTag; -}; + // and Safari 8 which returns 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; +} module.exports = isFunction; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"../internal/baseIsFunction":10,"../internal/getNative":19}],32:[function(_dereq_,module,exports){ -var escapeRegExp = _dereq_('../string/escapeRegExp'), +},{"./isObject":30}],29:[function(_dereq_,module,exports){ +var isFunction = _dereq_('./isFunction'), isHostObject = _dereq_('../internal/isHostObject'), isObjectLike = _dereq_('../internal/isObjectLike'); -/** `Object#toString` result references. */ -var funcTag = '[object Function]'; - /** Used to detect host constructors (Safari > 5). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; @@ -962,15 +835,9 @@ var fnToString = Function.prototype.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + - escapeRegExp(fnToString.call(hasOwnProperty)) + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); @@ -994,7 +861,7 @@ function isNative(value) { if (value == null) { return false; } - if (objToString.call(value) == funcTag) { + if (isFunction(value)) { return reIsNative.test(fnToString.call(value)); } return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); @@ -1002,7 +869,7 @@ function isNative(value) { module.exports = isNative; -},{"../internal/isHostObject":21,"../internal/isObjectLike":25,"../string/escapeRegExp":41}],33:[function(_dereq_,module,exports){ +},{"../internal/isHostObject":19,"../internal/isObjectLike":23,"./isFunction":28}],30:[function(_dereq_,module,exports){ /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) @@ -1032,10 +899,11 @@ function isObject(value) { module.exports = isObject; -},{}],34:[function(_dereq_,module,exports){ -var getNative = _dereq_('../internal/getNative'), +},{}],31:[function(_dereq_,module,exports){ +var baseForIn = _dereq_('../internal/baseForIn'), isArguments = _dereq_('./isArguments'), - shimIsPlainObject = _dereq_('../internal/shimIsPlainObject'), + isHostObject = _dereq_('../internal/isHostObject'), + isObjectLike = _dereq_('../internal/isObjectLike'), support = _dereq_('../support'); /** `Object#toString` result references. */ @@ -1044,15 +912,15 @@ var objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; -/** Native method references. */ -var getPrototypeOf = getNative(Object, 'getPrototypeOf'); - /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -1083,21 +951,37 @@ var getPrototypeOf = getNative(Object, 'getPrototypeOf'); * _.isPlainObject(Object.create(null)); * // => true */ -var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && objToString.call(value) == objectTag) || (!support.argsTag && isArguments(value))) { +function isPlainObject(value) { + var Ctor; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) || + (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { return false; } - var valueOf = getNative(value, 'valueOf'), - objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); -}; + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + if (support.ownLast) { + baseForIn(value, function(subValue, key, object) { + result = hasOwnProperty.call(object, key); + return false; + }); + return result !== false; + } + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return result === undefined || hasOwnProperty.call(value, result); +} module.exports = isPlainObject; -},{"../internal/getNative":19,"../internal/shimIsPlainObject":26,"../support":42,"./isArguments":29}],35:[function(_dereq_,module,exports){ +},{"../internal/baseForIn":9,"../internal/isHostObject":19,"../internal/isObjectLike":23,"../support":38,"./isArguments":26}],32:[function(_dereq_,module,exports){ var isObjectLike = _dereq_('../internal/isObjectLike'); /** `Object#toString` result references. */ @@ -1107,7 +991,7 @@ var stringTag = '[object String]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1134,7 +1018,7 @@ function isString(value) { module.exports = isString; -},{"../internal/isObjectLike":25}],36:[function(_dereq_,module,exports){ +},{"../internal/isObjectLike":23}],33:[function(_dereq_,module,exports){ var isLength = _dereq_('../internal/isLength'), isObjectLike = _dereq_('../internal/isObjectLike'); @@ -1183,7 +1067,7 @@ typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1210,7 +1094,7 @@ function isTypedArray(value) { module.exports = isTypedArray; -},{"../internal/isLength":24,"../internal/isObjectLike":25}],37:[function(_dereq_,module,exports){ +},{"../internal/isLength":22,"../internal/isObjectLike":23}],34:[function(_dereq_,module,exports){ var baseCopy = _dereq_('../internal/baseCopy'), keysIn = _dereq_('../object/keysIn'); @@ -1243,7 +1127,7 @@ function toPlainObject(value) { module.exports = toPlainObject; -},{"../internal/baseCopy":7,"../object/keysIn":39}],38:[function(_dereq_,module,exports){ +},{"../internal/baseCopy":7,"../object/keysIn":36}],35:[function(_dereq_,module,exports){ var getNative = _dereq_('../internal/getNative'), isArrayLike = _dereq_('../internal/isArrayLike'), isObject = _dereq_('../lang/isObject'), @@ -1257,7 +1141,7 @@ var nativeKeys = getNative(Object, 'keys'); * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) * for more details. * * @static @@ -1281,7 +1165,7 @@ var nativeKeys = getNative(Object, 'keys'); * // => ['0', '1'] */ var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? null : object.constructor; + var Ctor = object == null ? undefined : object.constructor; if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) { return shimKeys(object); @@ -1291,7 +1175,7 @@ var keys = !nativeKeys ? shimKeys : function(object) { module.exports = keys; -},{"../internal/getNative":19,"../internal/isArrayLike":20,"../internal/shimKeys":27,"../lang/isObject":33,"../support":42}],39:[function(_dereq_,module,exports){ +},{"../internal/getNative":17,"../internal/isArrayLike":18,"../internal/shimKeys":24,"../lang/isObject":30,"../support":38}],36:[function(_dereq_,module,exports){ var arrayEach = _dereq_('../internal/arrayEach'), isArguments = _dereq_('../lang/isArguments'), isArray = _dereq_('../lang/isArray'), @@ -1328,7 +1212,7 @@ var errorProto = Error.prototype, var hasOwnProperty = objectProto.hasOwnProperty; /** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; @@ -1395,7 +1279,7 @@ function keysIn(object) { while (++index < length) { result[index] = (index + ''); } - // lodash skips the `constructor` property when it infers it is iterating + // lodash skips the `constructor` property when it infers it's iterating // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]` // attribute of an existing property and the `constructor` property of a // prototype defaults to non-enumerable. @@ -1429,7 +1313,7 @@ function keysIn(object) { module.exports = keysIn; -},{"../internal/arrayEach":6,"../internal/isIndex":22,"../internal/isLength":24,"../lang/isArguments":29,"../lang/isArray":30,"../lang/isFunction":31,"../lang/isObject":33,"../lang/isString":35,"../support":42}],40:[function(_dereq_,module,exports){ +},{"../internal/arrayEach":6,"../internal/isIndex":20,"../internal/isLength":22,"../lang/isArguments":26,"../lang/isArray":27,"../lang/isFunction":28,"../lang/isObject":30,"../lang/isString":32,"../support":38}],37:[function(_dereq_,module,exports){ var baseMerge = _dereq_('../internal/baseMerge'), createAssigner = _dereq_('../internal/createAssigner'); @@ -1437,7 +1321,7 @@ var baseMerge = _dereq_('../internal/baseMerge'), * Recursively merges own enumerable properties of the source object(s), that * don't resolve to `undefined` into the destination object. Subsequent sources * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and + * provided it's invoked to produce the merged values of the destination and * source properties. If `customizer` returns `undefined` merging is handled * by the method instead. The `customizer` is bound to `thisArg` and invoked * with five arguments: (objectValue, sourceValue, key, object, source). @@ -1485,60 +1369,12 @@ var merge = createAssigner(baseMerge); module.exports = merge; -},{"../internal/baseMerge":11,"../internal/createAssigner":16}],41:[function(_dereq_,module,exports){ -var baseToString = _dereq_('../internal/baseToString'); - -/** - * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special). - * In addition to special characters the forward slash is escaped to allow for - * easier `eval` use and `Function` compilation. - */ -var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, - reHasRegExpChars = RegExp(reRegExpChars.source); - -/** - * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?", - * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https:\/\/lodash\.com\/\)' - */ -function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, '\\$&') - : string; -} - -module.exports = escapeRegExp; - -},{"../internal/baseToString":14}],42:[function(_dereq_,module,exports){ -(function (global){ -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - objectTag = '[object Object]'; - +},{"../internal/baseMerge":10,"../internal/createAssigner":14}],38:[function(_dereq_,module,exports){ /** Used for native method references. */ var arrayProto = Array.prototype, errorProto = Error.prototype, objectProto = Object.prototype; -/** Used to detect DOM support. */ -var document = (document = global.window) ? document.document : null; - -/** - * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice; @@ -1560,15 +1396,6 @@ var support = {}; Ctor.prototype = { 'valueOf': x, 'y': x }; for (var key in new Ctor) { props.push(key); } - /** - * Detect if the `toStringTag` of `arguments` objects is resolvable - * (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsTag = objToString.call(arguments) == argsTag; - /** * Detect if `name` or `message` properties of `Error.prototype` are * enumerable by default (IE < 9, Safari < 5.1). @@ -1592,14 +1419,6 @@ var support = {}; */ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype'); - /** - * Detect if the `toStringTag` of DOM nodes is resolvable (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.nodeTag = objToString.call(document) != objectTag; - /** * Detect if properties shadowing those on `Object.prototype` are non-enumerable. * @@ -1644,25 +1463,11 @@ var support = {}; * @type boolean */ support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if the DOM is supported. - * - * @memberOf _.support - * @type boolean - */ - try { - support.dom = document.createDocumentFragment().nodeType === 11; - } catch(e) { - support.dom = false; - } }(1, 0)); module.exports = support; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{}],43:[function(_dereq_,module,exports){ +},{}],39:[function(_dereq_,module,exports){ /** * This method returns the first argument provided to it. * @@ -1684,7 +1489,7 @@ function identity(value) { module.exports = identity; -},{}],44:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es6-shim @@ -1694,22 +1499,24 @@ var canBeObject = function (obj) { }; var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var defineProperties = _dereq_('define-properties'); +var toObject = Object; +var push = Array.prototype.push; var propIsEnumerable = Object.prototype.propertyIsEnumerable; -var isEnumerableOn = function (obj) { - return function isEnumerable(prop) { - return propIsEnumerable.call(obj, prop); - }; -}; var assignShim = function assign(target, source1) { if (!canBeObject(target)) { throw new TypeError('target must be an object'); } - var objTarget = Object(target); - var s, source, i, props; + var objTarget = toObject(target); + var s, source, i, props, syms; for (s = 1; s < arguments.length; ++s) { - source = Object(arguments[s]); + source = toObject(arguments[s]); props = keys(source); if (hasSymbols && Object.getOwnPropertySymbols) { - props.push.apply(props, Object.getOwnPropertySymbols(source).filter(isEnumerableOn(source))); + syms = Object.getOwnPropertySymbols(source); + for (i = 0; i < syms.length; ++i) { + if (propIsEnumerable.call(source, syms[i])) { + push.call(props, syms[i]); + } + } } for (i = 0; i < props.length; ++i) { objTarget[props[i]] = source[props[i]]; @@ -1718,9 +1525,12 @@ var assignShim = function assign(target, source1) { return objTarget; }; -assignShim.shim = function shimObjectAssign() { - if (Object.assign && Object.preventExtensions) { - var assignHasPendingExceptions = (function () { +defineProperties(assignShim, { + shim: function shimObjectAssign() { + var assignHasPendingExceptions = function () { + if (!Object.assign || !Object.preventExtensions) { + return false; + } // Firefox 37 still has "pending exception" logic in its Object.assign implementation, // which is 72% slower than our shim, and Firefox 40's native implementation. var thrower = Object.preventExtensions({ 1: 2 }); @@ -1729,27 +1539,24 @@ assignShim.shim = function shimObjectAssign() { } catch (e) { return thrower[1] === 'y'; } - }()); - if (assignHasPendingExceptions) { - delete Object.assign; - } + }; + defineProperties( + Object, + { assign: assignShim }, + { assign: assignHasPendingExceptions } + ); + return Object.assign || assignShim; } - if (!Object.assign) { - defineProperties(Object, { - assign: assignShim - }); - } - return Object.assign || assignShim; -}; +}); module.exports = assignShim; - -},{"define-properties":45,"object-keys":47}],45:[function(_dereq_,module,exports){ +},{"define-properties":41,"object-keys":43}],41:[function(_dereq_,module,exports){ 'use strict'; var keys = _dereq_('object-keys'); var foreach = _dereq_('foreach'); +var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; var toStr = Object.prototype.toString; @@ -1760,7 +1567,10 @@ var isFunction = function (fn) { var arePropertyDescriptorsSupported = function () { var obj = {}; try { - Object.defineProperty(obj, 'x', { value: obj }); + Object.defineProperty(obj, 'x', { value: obj, enumerable: false }); + /* eslint-disable no-unused-vars */ + for (var _ in obj) { return false; } + /* eslint-enable no-unused-vars */ return obj.x === obj; } catch (e) { /* this is IE 8. */ return false; @@ -1786,7 +1596,11 @@ var defineProperty = function (object, name, value, predicate) { var defineProperties = function (object, map) { var predicates = arguments.length > 2 ? arguments[2] : {}; - foreach(keys(map), function (name) { + var props = keys(map); + if (hasSymbols) { + props = props.concat(Object.getOwnPropertySymbols(map)); + } + foreach(props, function (name) { defineProperty(object, name, map[name], predicates[name]); }); }; @@ -1795,7 +1609,7 @@ defineProperties.supportsDescriptors = !!supportsDescriptors; module.exports = defineProperties; -},{"foreach":46,"object-keys":47}],46:[function(_dereq_,module,exports){ +},{"foreach":42,"object-keys":43}],42:[function(_dereq_,module,exports){ var hasOwn = Object.prototype.hasOwnProperty; var toString = Object.prototype.toString; @@ -1819,12 +1633,13 @@ module.exports = function forEach (obj, fn, ctx) { }; -},{}],47:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ 'use strict'; // modified from https://github.com/es-shims/es5-shim var has = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; +var slice = Array.prototype.slice; var isArgs = _dereq_('./isArguments'); var hasDontEnumBug = !({ 'toString': null }).propertyIsEnumerable('toString'); var hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype'); @@ -1837,6 +1652,44 @@ var dontEnums = [ 'propertyIsEnumerable', 'constructor' ]; +var equalsConstructorPrototype = function (o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; +}; +var blacklistedKeys = { + $window: true, + $console: true, + $parent: true, + $self: true, + $frames: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true +}; +var hasAutomationEqualityBug = (function () { + /* global window */ + if (typeof window === 'undefined') { return false; } + for (var k in window) { + if (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } + return false; +}()); +var equalsConstructorPrototypeIfNotBuggy = function (o) { + /* global window */ + if (typeof window === 'undefined' && !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { + return false; + } +}; var keysShim = function keys(object) { var isObject = object !== null && typeof object === 'object'; @@ -1869,8 +1722,7 @@ var keysShim = function keys(object) { } if (hasDontEnumBug) { - var ctor = object.constructor; - var skipConstructor = ctor && ctor.prototype === object; + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); for (var k = 0; k < dontEnums.length; ++k) { if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { @@ -1884,13 +1736,28 @@ var keysShim = function keys(object) { keysShim.shim = function shimObjectKeys() { if (!Object.keys) { Object.keys = keysShim; + } else { + var keysWorksWithArguments = (function () { + // Safari 5.0 bug + return (Object.keys(arguments) || '').length === 2; + }(1, 2)); + if (!keysWorksWithArguments) { + var originalKeys = Object.keys; + Object.keys = function keys(object) { + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } else { + return originalKeys(object); + } + }; + } } return Object.keys || keysShim; }; module.exports = keysShim; -},{"./isArguments":48}],48:[function(_dereq_,module,exports){ +},{"./isArguments":44}],44:[function(_dereq_,module,exports){ 'use strict'; var toStr = Object.prototype.toString; @@ -1899,17 +1766,17 @@ module.exports = function isArguments(value) { var str = toStr.call(value); var isArgs = str === '[object Arguments]'; if (!isArgs) { - isArgs = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toStr.call(value.callee) === '[object Function]'; + isArgs = str !== '[object Array]' && + value !== null && + typeof value === 'object' && + typeof value.length === 'number' && + value.length >= 0 && + toStr.call(value.callee) === '[object Function]'; } return isArgs; }; -},{}],49:[function(_dereq_,module,exports){ +},{}],45:[function(_dereq_,module,exports){ module.exports = SafeParseTuple function SafeParseTuple(obj, reviver) { @@ -1925,27 +1792,27 @@ function SafeParseTuple(obj, reviver) { return [error, json] } -},{}],50:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],46:[function(_dereq_,module,exports){ /** * @file big-play-button.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('./component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('./button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('./component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Initial play button. Shows before the video has played. The hiding of the @@ -1958,14 +1825,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var BigPlayButton = (function (_Button) { + _inherits(BigPlayButton, _Button); + function BigPlayButton(player, options) { _classCallCheck(this, BigPlayButton); _Button.call(this, player, options); } - _inherits(BigPlayButton, _Button); - /** * Allow sub components to stack CSS class names * @@ -1988,51 +1855,53 @@ var BigPlayButton = (function (_Button) { }; return BigPlayButton; -})(_Button3['default']); +})(_buttonJs2['default']); BigPlayButton.prototype.controlText_ = 'Play Video'; -_Component2['default'].registerComponent('BigPlayButton', BigPlayButton); +_componentJs2['default'].registerComponent('BigPlayButton', BigPlayButton); exports['default'] = BigPlayButton; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52}],51:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48}],47:[function(_dereq_,module,exports){ /** * @file button.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('./utils/events.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Events = _interopRequireWildcard(_import2); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/fn.js'); +var _component2 = _interopRequireDefault(_component); -var Fn = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _document = _dereq_('global/document'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * Base class for all buttons @@ -2044,6 +1913,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Button = (function (_Component) { + _inherits(Button, _Component); + function Button(player, options) { _classCallCheck(this, Button); @@ -2057,8 +1928,6 @@ var Button = (function (_Component) { this.on('blur', this.handleBlur); } - _inherits(Button, _Component); - /** * Create the component's DOM element * @@ -2069,14 +1938,14 @@ var Button = (function (_Component) { */ Button.prototype.createEl = function createEl() { - var tag = arguments[0] === undefined ? 'button' : arguments[0]; - var props = arguments[1] === undefined ? {} : arguments[1]; + var tag = arguments.length <= 0 || arguments[0] === undefined ? 'button' : arguments[0]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add standard Aria and Tabindex info - props = _assign2['default']({ + props = _objectAssign2['default']({ className: this.buildCSSClass(), - role: 'button', - type: 'button', // Necessary since the default button type is "submit" + 'role': 'button', + 'type': 'button', // Necessary since the default button type is "submit" 'aria-live': 'polite', // let the screen reader user know that the text of the button may change tabIndex: 0 }, props); @@ -2103,9 +1972,9 @@ var Button = (function (_Component) { */ Button.prototype.controlText = function controlText(text) { - if (!text) { - return this.controlText_ || 'Need Text'; - }this.controlText_ = text; + if (!text) return this.controlText_ || 'Need Text'; + + this.controlText_ = text; this.controlTextEl_.innerHTML = this.localize(this.controlText_); return this; @@ -2137,7 +2006,7 @@ var Button = (function (_Component) { */ Button.prototype.handleFocus = function handleFocus() { - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; /** @@ -2161,65 +2030,68 @@ var Button = (function (_Component) { */ Button.prototype.handleBlur = function handleBlur() { - Events.off(_document2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); + Events.off(_globalDocument2['default'], 'keydown', Fn.bind(this, this.handleKeyPress)); }; return Button; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('Button', Button); +_component2['default'].registerComponent('Button', Button); exports['default'] = Button; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"global/document":1,"object.assign":44}],52:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"global/document":1,"object.assign":40}],48:[function(_dereq_,module,exports){ /** * @file component.js * * Player Component - Base class for all UI objects */ -var _window = _dereq_('global/window'); +'use strict'; -var _window2 = _interopRequireWildcard(_window); +exports.__esModule = true; -var _import = _dereq_('./utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('./utils/fn.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Fn = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/guid.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Guid = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import4 = _dereq_('./utils/events.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Events = _interopRequireWildcard(_import4); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _assign = _dereq_('object.assign'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * Base UI Component class @@ -2258,14 +2130,14 @@ var Component = (function () { if (!player && this.play) { this.player_ = player = this; // eslint-disable-line } else { - this.player_ = player; - } + this.player_ = player; + } // Make a copy of prototype.options_ to protect against overriding defaults - this.options_ = _mergeOptions2['default']({}, this.options_); + this.options_ = _utilsMergeOptionsJs2['default']({}, this.options_); // Updated options with supplied options - options = this.options_ = _mergeOptions2['default'](this.options_, options); + options = this.options_ = _utilsMergeOptionsJs2['default'](this.options_, options); // Get ID from options or options element if one is supplied this.id_ = options.id || options.el && options.el.id; @@ -2275,7 +2147,7 @@ var Component = (function () { // Don't require the player ID function in the case of mock players var id = player && player.id && player.id() || 'no_player'; - this.id_ = '' + id + '_component_' + Guid.newGUID(); + this.id_ = id + '_component_' + Guid.newGUID(); } this.name_ = options.name || null; @@ -2394,13 +2266,13 @@ var Component = (function () { */ Component.prototype.options = function options(obj) { - _log2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); + _utilsLogJs2['default'].warn('this.options() has been deprecated and will be moved to the constructor in 6.0'); if (!obj) { return this.options_; } - this.options_ = _mergeOptions2['default'](this.options_, obj); + this.options_ = _utilsMergeOptionsJs2['default'](this.options_, obj); return this.options_; }; @@ -2562,7 +2434,7 @@ var Component = (function () { */ Component.prototype.addChild = function addChild(child) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var component = undefined; var componentName = undefined; @@ -2578,13 +2450,13 @@ var Component = (function () { // Same as above, but true is deprecated so show a warning. if (options === true) { - _log2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); + _utilsLogJs2['default'].warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.'); options = {}; } // If no componentClass in options, assume componentClass is the name lowercased // (e.g. playButton) - var componentClassName = options.componentClass || _toTitleCase2['default'](componentName); + var componentClassName = options.componentClass || _utilsToTitleCaseJs2['default'](componentName); // Set name through options options.name = componentName; @@ -2597,8 +2469,8 @@ var Component = (function () { // child is a component instance } else { - component = child; - } + component = child; + } this.children_.push(component); @@ -2825,46 +2697,46 @@ var Component = (function () { // Targeting another component or element } else { - (function () { - var target = first; - var type = second; - var fn = Fn.bind(_this2, third); + (function () { + var target = first; + var type = second; + var fn = Fn.bind(_this2, third); - // When this component is disposed, remove the listener from the other component - var removeOnDispose = function removeOnDispose() { - return _this2.off(target, type, fn); - }; + // When this component is disposed, remove the listener from the other component + var removeOnDispose = function removeOnDispose() { + return _this2.off(target, type, fn); + }; - // Use the same function ID so we can remove it later it using the ID - // of the original listener - removeOnDispose.guid = fn.guid; - _this2.on('dispose', removeOnDispose); + // Use the same function ID so we can remove it later it using the ID + // of the original listener + removeOnDispose.guid = fn.guid; + _this2.on('dispose', removeOnDispose); - // If the other component is disposed first we need to clean the reference - // to the other component in this component's removeOnDispose listener - // Otherwise we create a memory leak. - var cleanRemover = function cleanRemover() { - return _this2.off('dispose', removeOnDispose); - }; + // If the other component is disposed first we need to clean the reference + // to the other component in this component's removeOnDispose listener + // Otherwise we create a memory leak. + var cleanRemover = function cleanRemover() { + return _this2.off('dispose', removeOnDispose); + }; - // Add the same function ID so we can easily remove it later - cleanRemover.guid = fn.guid; + // Add the same function ID so we can easily remove it later + cleanRemover.guid = fn.guid; - // Check if this is a DOM node - if (first.nodeName) { - // Add the listener to the other element - Events.on(target, type, fn); - Events.on(target, 'dispose', cleanRemover); + // Check if this is a DOM node + if (first.nodeName) { + // Add the listener to the other element + Events.on(target, type, fn); + Events.on(target, 'dispose', cleanRemover); - // Should be a component - // Not using `instanceof Component` because it makes mock players difficult - } else if (typeof first.on === 'function') { - // Add the listener to the other component - target.on(type, fn); - target.on('dispose', cleanRemover); - } - })(); - } + // Should be a component + // Not using `instanceof Component` because it makes mock players difficult + } else if (typeof first.on === 'function') { + // Add the listener to the other component + target.on(type, fn); + target.on('dispose', cleanRemover); + } + })(); + } return this; }; @@ -2938,9 +2810,8 @@ var Component = (function () { */ Component.prototype.one = function one(first, second, third) { - var _this3 = this; - - var _arguments = arguments; + var _this3 = this, + _arguments = arguments; if (typeof first === 'string' || Array.isArray(first)) { Events.one(this.el_, first, Fn.bind(this, second)); @@ -2950,20 +2821,10 @@ var Component = (function () { var type = second; var fn = Fn.bind(_this3, third); - var newFunc = (function (_newFunc) { - function newFunc() { - return _newFunc.apply(this, arguments); - } - - newFunc.toString = function () { - return _newFunc.toString(); - }; - - return newFunc; - })(function () { + var newFunc = function newFunc() { _this3.off(target, type, newFunc); fn.apply(null, _arguments); - }); + }; // Keep the same function ID so we can remove it later newFunc.guid = fn.guid; @@ -3007,7 +2868,7 @@ var Component = (function () { */ Component.prototype.ready = function ready(fn) { - var sync = arguments[1] === undefined ? false : arguments[1]; + var sync = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; if (fn) { if (this.isReady_) { @@ -3254,7 +3115,7 @@ var Component = (function () { // No px so using % or no style was set, so falling back to offsetWidth/height // If component has display:none, offset will return 0 // TODO: handle display:none and no dimension style using px - return parseInt(this.el_['offset' + _toTitleCase2['default'](widthOrHeight)], 10); + return parseInt(this.el_['offset' + _utilsToTitleCaseJs2['default'](widthOrHeight)], 10); }; /** @@ -3286,7 +3147,7 @@ var Component = (function () { // If more than one finger, don't consider treating this as a click if (event.touches.length === 1) { // Copy the touches object to prevent modifying the original - firstTouch = _assign2['default']({}, event.touches[0]); + firstTouch = _objectAssign2['default']({}, event.touches[0]); // Record start time so we can detect a tap vs. "touch and hold" touchStart = new Date().getTime(); // Reset couldBeTap tracking @@ -3408,7 +3269,7 @@ var Component = (function () { fn = Fn.bind(this, fn); // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't. - var timeoutId = _window2['default'].setTimeout(fn, timeout); + var timeoutId = _globalWindow2['default'].setTimeout(fn, timeout); var disposeFn = function disposeFn() { this.clearTimeout(timeoutId); @@ -3430,7 +3291,7 @@ var Component = (function () { */ Component.prototype.clearTimeout = function clearTimeout(timeoutId) { - _window2['default'].clearTimeout(timeoutId); + _globalWindow2['default'].clearTimeout(timeoutId); var disposeFn = function disposeFn() {}; @@ -3453,7 +3314,7 @@ var Component = (function () { Component.prototype.setInterval = function setInterval(fn, interval) { fn = Fn.bind(this, fn); - var intervalId = _window2['default'].setInterval(fn, interval); + var intervalId = _globalWindow2['default'].setInterval(fn, interval); var disposeFn = function disposeFn() { this.clearInterval(intervalId); @@ -3475,7 +3336,7 @@ var Component = (function () { */ Component.prototype.clearInterval = function clearInterval(intervalId) { - _window2['default'].clearInterval(intervalId); + _globalWindow2['default'].clearInterval(intervalId); var disposeFn = function disposeFn() {}; @@ -3518,9 +3379,9 @@ var Component = (function () { return Component.components_[name]; } - if (_window2['default'] && _window2['default'].videojs && _window2['default'].videojs[name]) { - _log2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); - return _window2['default'].videojs[name]; + if (_globalWindow2['default'] && _globalWindow2['default'].videojs && _globalWindow2['default'].videojs[name]) { + _utilsLogJs2['default'].warn('The ' + name + ' component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)'); + return _globalWindow2['default'].videojs[name]; } }; @@ -3537,7 +3398,7 @@ var Component = (function () { Component.extend = function extend(props) { props = props || {}; - _log2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); + _utilsLogJs2['default'].warn('Component.extend({}) has been deprecated, use videojs.extends(Component, {}) instead'); // Set up the constructor using the supplied init method // or using the init of the parent object @@ -3582,89 +3443,89 @@ Component.registerComponent('Component', Component); exports['default'] = Component; module.exports = exports['default']; -},{"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/to-title-case.js":120,"global/window":2,"object.assign":44}],53:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/to-title-case.js":116,"global/window":2,"object.assign":40}],49:[function(_dereq_,module,exports){ /** * @file control-bar.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _PlayToggle = _dereq_('./play-toggle.js'); +var _playToggleJs = _dereq_('./play-toggle.js'); -var _PlayToggle2 = _interopRequireWildcard(_PlayToggle); +var _playToggleJs2 = _interopRequireDefault(_playToggleJs); -var _CurrentTimeDisplay = _dereq_('./time-controls/current-time-display.js'); +var _timeControlsCurrentTimeDisplayJs = _dereq_('./time-controls/current-time-display.js'); -var _CurrentTimeDisplay2 = _interopRequireWildcard(_CurrentTimeDisplay); +var _timeControlsCurrentTimeDisplayJs2 = _interopRequireDefault(_timeControlsCurrentTimeDisplayJs); -var _DurationDisplay = _dereq_('./time-controls/duration-display.js'); +var _timeControlsDurationDisplayJs = _dereq_('./time-controls/duration-display.js'); -var _DurationDisplay2 = _interopRequireWildcard(_DurationDisplay); +var _timeControlsDurationDisplayJs2 = _interopRequireDefault(_timeControlsDurationDisplayJs); -var _TimeDivider = _dereq_('./time-controls/time-divider.js'); +var _timeControlsTimeDividerJs = _dereq_('./time-controls/time-divider.js'); -var _TimeDivider2 = _interopRequireWildcard(_TimeDivider); +var _timeControlsTimeDividerJs2 = _interopRequireDefault(_timeControlsTimeDividerJs); -var _RemainingTimeDisplay = _dereq_('./time-controls/remaining-time-display.js'); +var _timeControlsRemainingTimeDisplayJs = _dereq_('./time-controls/remaining-time-display.js'); -var _RemainingTimeDisplay2 = _interopRequireWildcard(_RemainingTimeDisplay); +var _timeControlsRemainingTimeDisplayJs2 = _interopRequireDefault(_timeControlsRemainingTimeDisplayJs); -var _LiveDisplay = _dereq_('./live-display.js'); +var _liveDisplayJs = _dereq_('./live-display.js'); -var _LiveDisplay2 = _interopRequireWildcard(_LiveDisplay); +var _liveDisplayJs2 = _interopRequireDefault(_liveDisplayJs); -var _ProgressControl = _dereq_('./progress-control/progress-control.js'); +var _progressControlProgressControlJs = _dereq_('./progress-control/progress-control.js'); -var _ProgressControl2 = _interopRequireWildcard(_ProgressControl); +var _progressControlProgressControlJs2 = _interopRequireDefault(_progressControlProgressControlJs); -var _FullscreenToggle = _dereq_('./fullscreen-toggle.js'); +var _fullscreenToggleJs = _dereq_('./fullscreen-toggle.js'); -var _FullscreenToggle2 = _interopRequireWildcard(_FullscreenToggle); +var _fullscreenToggleJs2 = _interopRequireDefault(_fullscreenToggleJs); -var _VolumeControl = _dereq_('./volume-control/volume-control.js'); +var _volumeControlVolumeControlJs = _dereq_('./volume-control/volume-control.js'); -var _VolumeControl2 = _interopRequireWildcard(_VolumeControl); +var _volumeControlVolumeControlJs2 = _interopRequireDefault(_volumeControlVolumeControlJs); -var _VolumeMenuButton = _dereq_('./volume-menu-button.js'); +var _volumeMenuButtonJs = _dereq_('./volume-menu-button.js'); -var _VolumeMenuButton2 = _interopRequireWildcard(_VolumeMenuButton); +var _volumeMenuButtonJs2 = _interopRequireDefault(_volumeMenuButtonJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _muteToggleJs = _dereq_('./mute-toggle.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); -var _ChaptersButton = _dereq_('./text-track-controls/chapters-button.js'); +var _textTrackControlsChaptersButtonJs = _dereq_('./text-track-controls/chapters-button.js'); -var _ChaptersButton2 = _interopRequireWildcard(_ChaptersButton); +var _textTrackControlsChaptersButtonJs2 = _interopRequireDefault(_textTrackControlsChaptersButtonJs); -var _SubtitlesButton = _dereq_('./text-track-controls/subtitles-button.js'); +var _textTrackControlsSubtitlesButtonJs = _dereq_('./text-track-controls/subtitles-button.js'); -var _SubtitlesButton2 = _interopRequireWildcard(_SubtitlesButton); +var _textTrackControlsSubtitlesButtonJs2 = _interopRequireDefault(_textTrackControlsSubtitlesButtonJs); -var _CaptionsButton = _dereq_('./text-track-controls/captions-button.js'); +var _textTrackControlsCaptionsButtonJs = _dereq_('./text-track-controls/captions-button.js'); -var _CaptionsButton2 = _interopRequireWildcard(_CaptionsButton); +var _textTrackControlsCaptionsButtonJs2 = _interopRequireDefault(_textTrackControlsCaptionsButtonJs); -var _PlaybackRateMenuButton = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); +var _playbackRateMenuPlaybackRateMenuButtonJs = _dereq_('./playback-rate-menu/playback-rate-menu-button.js'); -var _PlaybackRateMenuButton2 = _interopRequireWildcard(_PlaybackRateMenuButton); +var _playbackRateMenuPlaybackRateMenuButtonJs2 = _interopRequireDefault(_playbackRateMenuPlaybackRateMenuButtonJs); -var _CustomControlSpacer = _dereq_('./spacer-controls/custom-control-spacer.js'); +var _spacerControlsCustomControlSpacerJs = _dereq_('./spacer-controls/custom-control-spacer.js'); -var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); +var _spacerControlsCustomControlSpacerJs2 = _interopRequireDefault(_spacerControlsCustomControlSpacerJs); /** * Container of main controls @@ -3674,16 +3535,14 @@ var _CustomControlSpacer2 = _interopRequireWildcard(_CustomControlSpacer); */ var ControlBar = (function (_Component) { + _inherits(ControlBar, _Component); + function ControlBar() { _classCallCheck(this, ControlBar); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ControlBar, _Component); - /** * Create the component's DOM element * @@ -3698,38 +3557,38 @@ var ControlBar = (function (_Component) { }; return ControlBar; -})(_Component3['default']); +})(_componentJs2['default']); ControlBar.prototype.options_ = { loadEvent: 'play', children: ['playToggle', 'volumeMenuButton', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'muteToggle', 'volumeControl', 'chaptersButton', 'subtitlesButton', 'captionsButton', 'fullscreenToggle'] }; -_Component3['default'].registerComponent('ControlBar', ControlBar); +_componentJs2['default'].registerComponent('ControlBar', ControlBar); exports['default'] = ControlBar; module.exports = exports['default']; -},{"../component.js":52,"./fullscreen-toggle.js":54,"./live-display.js":55,"./mute-toggle.js":56,"./play-toggle.js":57,"./playback-rate-menu/playback-rate-menu-button.js":58,"./progress-control/progress-control.js":62,"./spacer-controls/custom-control-spacer.js":64,"./text-track-controls/captions-button.js":67,"./text-track-controls/chapters-button.js":68,"./text-track-controls/subtitles-button.js":71,"./time-controls/current-time-display.js":74,"./time-controls/duration-display.js":75,"./time-controls/remaining-time-display.js":76,"./time-controls/time-divider.js":77,"./volume-control/volume-control.js":79,"./volume-menu-button.js":81}],54:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"./fullscreen-toggle.js":50,"./live-display.js":51,"./mute-toggle.js":52,"./play-toggle.js":53,"./playback-rate-menu/playback-rate-menu-button.js":54,"./progress-control/progress-control.js":58,"./spacer-controls/custom-control-spacer.js":60,"./text-track-controls/captions-button.js":63,"./text-track-controls/chapters-button.js":64,"./text-track-controls/subtitles-button.js":67,"./time-controls/current-time-display.js":70,"./time-controls/duration-display.js":71,"./time-controls/remaining-time-display.js":72,"./time-controls/time-divider.js":73,"./volume-control/volume-control.js":75,"./volume-menu-button.js":77}],50:[function(_dereq_,module,exports){ /** * @file fullscreen-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Toggle fullscreen video @@ -3739,16 +3598,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var FullscreenToggle = (function (_Button) { + _inherits(FullscreenToggle, _Button); + function FullscreenToggle() { _classCallCheck(this, FullscreenToggle); - if (_Button != null) { - _Button.apply(this, arguments); - } + _Button.apply(this, arguments); } - _inherits(FullscreenToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3777,35 +3634,37 @@ var FullscreenToggle = (function (_Button) { }; return FullscreenToggle; -})(_Button3['default']); +})(_buttonJs2['default']); FullscreenToggle.prototype.controlText_ = 'Fullscreen'; -_Component2['default'].registerComponent('FullscreenToggle', FullscreenToggle); +_componentJs2['default'].registerComponent('FullscreenToggle', FullscreenToggle); exports['default'] = FullscreenToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],55:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],51:[function(_dereq_,module,exports){ /** * @file live-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Displays the live indicator @@ -3816,16 +3675,14 @@ var Dom = _interopRequireWildcard(_import); */ var LiveDisplay = (function (_Component) { + _inherits(LiveDisplay, _Component); + function LiveDisplay() { _classCallCheck(this, LiveDisplay); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LiveDisplay, _Component); - /** * Create the component's DOM element * @@ -3850,37 +3707,39 @@ var LiveDisplay = (function (_Component) { }; return LiveDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LiveDisplay', LiveDisplay); +_component2['default'].registerComponent('LiveDisplay', LiveDisplay); exports['default'] = LiveDisplay; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111}],56:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107}],52:[function(_dereq_,module,exports){ /** * @file mute-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../utils/dom.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Dom = _interopRequireWildcard(_import); +var _button = _dereq_('../button'); + +var _button2 = _interopRequireDefault(_button); + +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * A button component for muting the audio @@ -3892,6 +3751,8 @@ var Dom = _interopRequireWildcard(_import); */ var MuteToggle = (function (_Button) { + _inherits(MuteToggle, _Button); + function MuteToggle(player, options) { _classCallCheck(this, MuteToggle); @@ -3900,14 +3761,14 @@ var MuteToggle = (function (_Button) { this.on(player, 'volumechange', this.update); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { this.update(); // We need to update the button to account for a default muted state. - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -3915,8 +3776,6 @@ var MuteToggle = (function (_Button) { }); } - _inherits(MuteToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -3973,35 +3832,35 @@ var MuteToggle = (function (_Button) { }; return MuteToggle; -})(_Button3['default']); +})(_button2['default']); MuteToggle.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('MuteToggle', MuteToggle); +_component2['default'].registerComponent('MuteToggle', MuteToggle); exports['default'] = MuteToggle; module.exports = exports['default']; -},{"../button":51,"../component":52,"../utils/dom.js":111}],57:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button":47,"../component":48,"../utils/dom.js":107}],53:[function(_dereq_,module,exports){ /** * @file play-toggle.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _buttonJs = _dereq_('../button.js'); + +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Button to toggle between play and pause @@ -4013,6 +3872,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlayToggle = (function (_Button) { + _inherits(PlayToggle, _Button); + function PlayToggle(player, options) { _classCallCheck(this, PlayToggle); @@ -4022,8 +3883,6 @@ var PlayToggle = (function (_Button) { this.on(player, 'pause', this.handlePause); } - _inherits(PlayToggle, _Button); - /** * Allow sub components to stack CSS class names * @@ -4074,47 +3933,49 @@ var PlayToggle = (function (_Button) { }; return PlayToggle; -})(_Button3['default']); +})(_buttonJs2['default']); PlayToggle.prototype.controlText_ = 'Play'; -_Component2['default'].registerComponent('PlayToggle', PlayToggle); +_componentJs2['default'].registerComponent('PlayToggle', PlayToggle); exports['default'] = PlayToggle; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52}],58:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48}],54:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Menu = _dereq_('../../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _PlaybackRateMenuItem = _dereq_('./playback-rate-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _PlaybackRateMenuItem2 = _interopRequireWildcard(_PlaybackRateMenuItem); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _Component = _dereq_('../../component.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _Component2 = _interopRequireWildcard(_Component); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _import = _dereq_('../../utils/dom.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Dom = _interopRequireWildcard(_import); +var _playbackRateMenuItemJs = _dereq_('./playback-rate-menu-item.js'); + +var _playbackRateMenuItemJs2 = _interopRequireDefault(_playbackRateMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * The component for controlling the playback rate @@ -4126,6 +3987,8 @@ var Dom = _interopRequireWildcard(_import); */ var PlaybackRateMenuButton = (function (_MenuButton) { + _inherits(PlaybackRateMenuButton, _MenuButton); + function PlaybackRateMenuButton(player, options) { _classCallCheck(this, PlaybackRateMenuButton); @@ -4138,8 +4001,6 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.on(player, 'ratechange', this.updateLabel); } - _inherits(PlaybackRateMenuButton, _MenuButton); - /** * Create the component's DOM element * @@ -4152,7 +4013,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { this.labelEl_ = Dom.createEl('div', { className: 'vjs-playback-rate-value', - innerHTML: 1 + innerHTML: 1.0 }); el.appendChild(this.labelEl_); @@ -4179,12 +4040,12 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player()); + var menu = new _menuMenuJs2['default'](this.player()); var rates = this.playbackRates(); if (rates) { for (var i = rates.length - 1; i >= 0; i--) { - menu.addChild(new _PlaybackRateMenuItem2['default'](this.player(), { rate: rates[i] + 'x' })); + menu.addChild(new _playbackRateMenuItemJs2['default'](this.player(), { 'rate': rates[i] + 'x' })); } } @@ -4232,7 +4093,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRates = function playbackRates() { - return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates; + return this.options_['playbackRates'] || this.options_.playerOptions && this.options_.playerOptions['playbackRates']; }; /** @@ -4243,7 +4104,7 @@ var PlaybackRateMenuButton = (function (_MenuButton) { */ PlaybackRateMenuButton.prototype.playbackRateSupported = function playbackRateSupported() { - return this.player().tech && this.player().tech.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0; + return this.player().tech && this.player().tech['featuresPlaybackRate'] && this.playbackRates() && this.playbackRates().length > 0; }; /** @@ -4273,35 +4134,35 @@ var PlaybackRateMenuButton = (function (_MenuButton) { }; return PlaybackRateMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); PlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate'; -_Component2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); +_componentJs2['default'].registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); exports['default'] = PlaybackRateMenuButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../menu/menu.js":90,"../../utils/dom.js":111,"./playback-rate-menu-item.js":59}],59:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../menu/menu.js":86,"../../utils/dom.js":107,"./playback-rate-menu-item.js":55}],55:[function(_dereq_,module,exports){ /** * @file playback-rate-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The specific menu item type for selecting a playback rate @@ -4313,15 +4174,17 @@ var _Component2 = _interopRequireWildcard(_Component); */ var PlaybackRateMenuItem = (function (_MenuItem) { + _inherits(PlaybackRateMenuItem, _MenuItem); + function PlaybackRateMenuItem(player, options) { _classCallCheck(this, PlaybackRateMenuItem); - var label = options.rate; + var label = options['rate']; var rate = parseFloat(label, 10); // Modify options for parent MenuItem class's init. - options.label = label; - options.selected = rate === 1; + options['label'] = label; + options['selected'] = rate === 1; _MenuItem.call(this, player, options); this.label = label; @@ -4330,8 +4193,6 @@ var PlaybackRateMenuItem = (function (_MenuItem) { this.on(player, 'ratechange', this.update); } - _inherits(PlaybackRateMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -4354,35 +4215,37 @@ var PlaybackRateMenuItem = (function (_MenuItem) { }; return PlaybackRateMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); PlaybackRateMenuItem.prototype.contentElType = 'button'; -_Component2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); +_componentJs2['default'].registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); exports['default'] = PlaybackRateMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89}],60:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85}],56:[function(_dereq_,module,exports){ /** * @file load-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Shows load progress @@ -4394,6 +4257,8 @@ var Dom = _interopRequireWildcard(_import); */ var LoadProgressBar = (function (_Component) { + _inherits(LoadProgressBar, _Component); + function LoadProgressBar(player, options) { _classCallCheck(this, LoadProgressBar); @@ -4401,8 +4266,6 @@ var LoadProgressBar = (function (_Component) { this.on(player, 'progress', this.update); } - _inherits(LoadProgressBar, _Component); - /** * Create the component's DOM element * @@ -4460,37 +4323,39 @@ var LoadProgressBar = (function (_Component) { }; return LoadProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('LoadProgressBar', LoadProgressBar); +_componentJs2['default'].registerComponent('LoadProgressBar', LoadProgressBar); exports['default'] = LoadProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111}],61:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107}],57:[function(_dereq_,module,exports){ /** * @file play-progress-bar.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Shows play progress @@ -4502,6 +4367,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var PlayProgressBar = (function (_Component) { + _inherits(PlayProgressBar, _Component); + function PlayProgressBar(player, options) { _classCallCheck(this, PlayProgressBar); @@ -4510,8 +4377,6 @@ var PlayProgressBar = (function (_Component) { player.ready(Fn.bind(this, this.updateDataAttr)); } - _inherits(PlayProgressBar, _Component); - /** * Create the component's DOM element * @@ -4528,37 +4393,37 @@ var PlayProgressBar = (function (_Component) { PlayProgressBar.prototype.updateDataAttr = function updateDataAttr() { var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); - this.el_.setAttribute('data-current-time', _formatTime2['default'](time, this.player_.duration())); + this.el_.setAttribute('data-current-time', _utilsFormatTimeJs2['default'](time, this.player_.duration())); }; return PlayProgressBar; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('PlayProgressBar', PlayProgressBar); +_componentJs2['default'].registerComponent('PlayProgressBar', PlayProgressBar); exports['default'] = PlayProgressBar; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/fn.js":113,"../../utils/format-time.js":114}],62:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/fn.js":109,"../../utils/format-time.js":110}],58:[function(_dereq_,module,exports){ /** * @file progress-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _SeekBar = _dereq_('./seek-bar.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _SeekBar2 = _interopRequireWildcard(_SeekBar); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _seekBarJs = _dereq_('./seek-bar.js'); + +var _seekBarJs2 = _interopRequireDefault(_seekBarJs); /** * The Progress Control component contains the seek bar, load progress, @@ -4571,16 +4436,14 @@ var _SeekBar2 = _interopRequireWildcard(_SeekBar); */ var ProgressControl = (function (_Component) { + _inherits(ProgressControl, _Component); + function ProgressControl() { _classCallCheck(this, ProgressControl); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(ProgressControl, _Component); - /** * Create the component's DOM element * @@ -4595,55 +4458,57 @@ var ProgressControl = (function (_Component) { }; return ProgressControl; -})(_Component3['default']); +})(_componentJs2['default']); ProgressControl.prototype.options_ = { children: { - seekBar: {} + 'seekBar': {} } }; -_Component3['default'].registerComponent('ProgressControl', ProgressControl); +_componentJs2['default'].registerComponent('ProgressControl', ProgressControl); exports['default'] = ProgressControl; module.exports = exports['default']; -},{"../../component.js":52,"./seek-bar.js":63}],63:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./seek-bar.js":59}],59:[function(_dereq_,module,exports){ /** * @file seek-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _LoadProgressBar = _dereq_('./load-progress-bar.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _LoadProgressBar2 = _interopRequireWildcard(_LoadProgressBar); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); -var _PlayProgressBar = _dereq_('./play-progress-bar.js'); +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); -var _PlayProgressBar2 = _interopRequireWildcard(_PlayProgressBar); +var _componentJs = _dereq_('../../component.js'); -var _import = _dereq_('../../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import); +var _loadProgressBarJs = _dereq_('./load-progress-bar.js'); -var _formatTime = _dereq_('../../utils/format-time.js'); +var _loadProgressBarJs2 = _interopRequireDefault(_loadProgressBarJs); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _playProgressBarJs = _dereq_('./play-progress-bar.js'); + +var _playProgressBarJs2 = _interopRequireDefault(_playProgressBarJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Seek Bar and holder for the progress bars @@ -4655,6 +4520,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var SeekBar = (function (_Slider) { + _inherits(SeekBar, _Slider); + function SeekBar(player, options) { _classCallCheck(this, SeekBar); @@ -4663,8 +4530,6 @@ var SeekBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(SeekBar, _Slider); - /** * Create the component's DOM element * @@ -4689,7 +4554,7 @@ var SeekBar = (function (_Slider) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete) - this.el_.setAttribute('aria-valuetext', _formatTime2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) + this.el_.setAttribute('aria-valuetext', _utilsFormatTimeJs2['default'](time, this.player_.duration())); // human readable value of progress bar (time complete) }; /** @@ -4773,43 +4638,43 @@ var SeekBar = (function (_Slider) { }; return SeekBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); SeekBar.prototype.options_ = { children: { - loadProgressBar: {}, - playProgressBar: {} + 'loadProgressBar': {}, + 'playProgressBar': {} }, - barName: 'playProgressBar' + 'barName': 'playProgressBar' }; SeekBar.prototype.playerEvent = 'timeupdate'; -_Component2['default'].registerComponent('SeekBar', SeekBar); +_componentJs2['default'].registerComponent('SeekBar', SeekBar); exports['default'] = SeekBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"../../utils/format-time.js":114,"./load-progress-bar.js":60,"./play-progress-bar.js":61}],64:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"../../utils/format-time.js":110,"./load-progress-bar.js":56,"./play-progress-bar.js":57}],60:[function(_dereq_,module,exports){ /** * @file custom-control-spacer.js */ +'use strict'; -var _Spacer2 = _dereq_('./spacer.js'); +exports.__esModule = true; -var _Spacer3 = _interopRequireWildcard(_Spacer2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _spacerJs = _dereq_('./spacer.js'); + +var _spacerJs2 = _interopRequireDefault(_spacerJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Spacer specifically meant to be used as an insertion point for new plugins, etc. @@ -4819,16 +4684,14 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CustomControlSpacer = (function (_Spacer) { + _inherits(CustomControlSpacer, _Spacer); + function CustomControlSpacer() { _classCallCheck(this, CustomControlSpacer); - if (_Spacer != null) { - _Spacer.apply(this, arguments); - } + _Spacer.apply(this, arguments); } - _inherits(CustomControlSpacer, _Spacer); - /** * Allow sub components to stack CSS class names * @@ -4854,29 +4717,29 @@ var CustomControlSpacer = (function (_Spacer) { }; return CustomControlSpacer; -})(_Spacer3['default']); +})(_spacerJs2['default']); -_Component2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); +_componentJs2['default'].registerComponent('CustomControlSpacer', CustomControlSpacer); exports['default'] = CustomControlSpacer; module.exports = exports['default']; -},{"../../component.js":52,"./spacer.js":65}],65:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./spacer.js":61}],61:[function(_dereq_,module,exports){ /** * @file spacer.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Just an empty spacer element that can be used as an append point for plugins, etc. @@ -4887,16 +4750,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var Spacer = (function (_Component) { + _inherits(Spacer, _Component); + function Spacer() { _classCallCheck(this, Spacer); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Spacer, _Component); - /** * Allow sub components to stack CSS class names * @@ -4923,34 +4784,34 @@ var Spacer = (function (_Component) { }; return Spacer; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Spacer', Spacer); +_componentJs2['default'].registerComponent('Spacer', Spacer); exports['default'] = Spacer; module.exports = exports['default']; -},{"../../component.js":52}],66:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],62:[function(_dereq_,module,exports){ /** * @file caption-settings-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The menu item for caption track settings menu @@ -4962,13 +4823,15 @@ var _Component2 = _interopRequireWildcard(_Component); */ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { + _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); + function CaptionSettingsMenuItem(player, options) { _classCallCheck(this, CaptionSettingsMenuItem); - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' settings', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' settings', 'default': false, mode: 'disabled' }; @@ -4977,8 +4840,6 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { this.addClass('vjs-texttrack-settings'); } - _inherits(CaptionSettingsMenuItem, _TextTrackMenuItem); - /** * Handle click on menu item * @@ -4990,37 +4851,37 @@ var CaptionSettingsMenuItem = (function (_TextTrackMenuItem) { }; return CaptionSettingsMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); +_componentJs2['default'].registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); exports['default'] = CaptionSettingsMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],67:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],63:[function(_dereq_,module,exports){ /** * @file captions-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _CaptionSettingsMenuItem = _dereq_('./caption-settings-menu-item.js'); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _captionSettingsMenuItemJs = _dereq_('./caption-settings-menu-item.js'); + +var _captionSettingsMenuItemJs2 = _interopRequireDefault(_captionSettingsMenuItemJs); /** * The button component for toggling and selecting captions @@ -5033,6 +4894,8 @@ var _CaptionSettingsMenuItem2 = _interopRequireWildcard(_CaptionSettingsMenuItem */ var CaptionsButton = (function (_TextTrackButton) { + _inherits(CaptionsButton, _TextTrackButton); + function CaptionsButton(player, options, ready) { _classCallCheck(this, CaptionsButton); @@ -5040,8 +4903,6 @@ var CaptionsButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Captions Menu'); } - _inherits(CaptionsButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5064,7 +4925,7 @@ var CaptionsButton = (function (_TextTrackButton) { _TextTrackButton.prototype.update.call(this); // if native, then threshold is 1 because no settings button - if (this.player().tech && this.player().tech.featuresNativeTextTracks) { + if (this.player().tech && this.player().tech['featuresNativeTextTracks']) { threshold = 1; } @@ -5085,72 +4946,74 @@ var CaptionsButton = (function (_TextTrackButton) { CaptionsButton.prototype.createItems = function createItems() { var items = []; - if (!(this.player().tech && this.player().tech.featuresNativeTextTracks)) { - items.push(new _CaptionSettingsMenuItem2['default'](this.player_, { kind: this.kind_ })); + if (!(this.player().tech && this.player().tech['featuresNativeTextTracks'])) { + items.push(new _captionSettingsMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); } return _TextTrackButton.prototype.createItems.call(this, items); }; return CaptionsButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); CaptionsButton.prototype.kind_ = 'captions'; CaptionsButton.prototype.controlText_ = 'Captions'; -_Component2['default'].registerComponent('CaptionsButton', CaptionsButton); +_componentJs2['default'].registerComponent('CaptionsButton', CaptionsButton); exports['default'] = CaptionsButton; module.exports = exports['default']; -},{"../../component.js":52,"./caption-settings-menu-item.js":66,"./text-track-button.js":72}],68:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./caption-settings-menu-item.js":62,"./text-track-button.js":68}],64:[function(_dereq_,module,exports){ /** * @file chapters-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _textTrackButtonJs = _dereq_('./text-track-button.js'); -var _ChaptersTrackMenuItem = _dereq_('./chapters-track-menu-item.js'); +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); -var _ChaptersTrackMenuItem2 = _interopRequireWildcard(_ChaptersTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _Menu = _dereq_('../../menu/menu.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _Menu2 = _interopRequireWildcard(_Menu); +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); -var _import = _dereq_('../../utils/dom.js'); +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); -var Dom = _interopRequireWildcard(_import); +var _chaptersTrackMenuItemJs = _dereq_('./chapters-track-menu-item.js'); -var _import2 = _dereq_('../../utils/fn.js'); +var _chaptersTrackMenuItemJs2 = _interopRequireDefault(_chaptersTrackMenuItemJs); -var Fn = _interopRequireWildcard(_import2); +var _menuMenuJs = _dereq_('../../menu/menu.js'); -var _toTitleCase = _dereq_('../../utils/to-title-case.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../../utils/dom.js'); -var _window = _dereq_('global/window'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * The button component for toggling and selecting chapters @@ -5165,6 +5028,8 @@ var _window2 = _interopRequireWildcard(_window); */ var ChaptersButton = (function (_TextTrackButton) { + _inherits(ChaptersButton, _TextTrackButton); + function ChaptersButton(player, options, ready) { _classCallCheck(this, ChaptersButton); @@ -5172,8 +5037,6 @@ var ChaptersButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Chapters Menu'); } - _inherits(ChaptersButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5203,9 +5066,9 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5227,42 +5090,42 @@ var ChaptersButton = (function (_TextTrackButton) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.kind_) { + if (track['kind'] === this.kind_) { if (!track.cues) { - track.mode = 'hidden'; + track['mode'] = 'hidden'; /* jshint loopfunc:true */ // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864 - _window2['default'].setTimeout(Fn.bind(this, function () { + _globalWindow2['default'].setTimeout(Fn.bind(this, function () { this.createMenu(); }), 100); /* jshint loopfunc:false */ } else { - chaptersTrack = track; - break; - } + chaptersTrack = track; + break; + } } } var menu = this.menu; if (menu === undefined) { - menu = new _Menu2['default'](this.player_); + menu = new _menuMenuJs2['default'](this.player_); menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.kind_), + innerHTML: _utilsToTitleCaseJs2['default'](this.kind_), tabIndex: -1 })); } if (chaptersTrack) { - var cues = chaptersTrack.cues, + var cues = chaptersTrack['cues'], cue = undefined; for (var i = 0, l = cues.length; i < l; i++) { cue = cues[i]; - var mi = new _ChaptersTrackMenuItem2['default'](this.player_, { - track: chaptersTrack, - cue: cue + var mi = new _chaptersTrackMenuItemJs2['default'](this.player_, { + 'track': chaptersTrack, + 'cue': cue }); items.push(mi); @@ -5280,40 +5143,42 @@ var ChaptersButton = (function (_TextTrackButton) { }; return ChaptersButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); ChaptersButton.prototype.kind_ = 'chapters'; ChaptersButton.prototype.controlText_ = 'Chapters'; -_Component2['default'].registerComponent('ChaptersButton', ChaptersButton); +_componentJs2['default'].registerComponent('ChaptersButton', ChaptersButton); exports['default'] = ChaptersButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu.js":90,"../../utils/dom.js":111,"../../utils/fn.js":113,"../../utils/to-title-case.js":120,"./chapters-track-menu-item.js":69,"./text-track-button.js":72,"./text-track-menu-item.js":73,"global/window":2}],69:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu.js":86,"../../utils/dom.js":107,"../../utils/fn.js":109,"../../utils/to-title-case.js":116,"./chapters-track-menu-item.js":65,"./text-track-button.js":68,"./text-track-menu-item.js":69,"global/window":2}],65:[function(_dereq_,module,exports){ /** * @file chapters-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); + +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); /** * The chapter track menu item @@ -5325,16 +5190,18 @@ var Fn = _interopRequireWildcard(_import); */ var ChaptersTrackMenuItem = (function (_MenuItem) { + _inherits(ChaptersTrackMenuItem, _MenuItem); + function ChaptersTrackMenuItem(player, options) { _classCallCheck(this, ChaptersTrackMenuItem); - var track = options.track; - var cue = options.cue; + var track = options['track']; + var cue = options['cue']; var currentTime = player.currentTime(); // Modify options for parent MenuItem class's init. - options.label = cue.text; - options.selected = cue.startTime <= currentTime && currentTime < cue.endTime; + options['label'] = cue.text; + options['selected'] = cue['startTime'] <= currentTime && currentTime < cue['endTime']; _MenuItem.call(this, player, options); this.track = track; @@ -5342,8 +5209,6 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { track.addEventListener('cuechange', Fn.bind(this, this.update)); } - _inherits(ChaptersTrackMenuItem, _MenuItem); - /** * Handle click on menu item * @@ -5367,37 +5232,37 @@ var ChaptersTrackMenuItem = (function (_MenuItem) { var currentTime = this.player_.currentTime(); // vjs.log(currentTime, cue.startTime); - this.selected(cue.startTime <= currentTime && currentTime < cue.endTime); + this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']); }; return ChaptersTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); +_componentJs2['default'].registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); exports['default'] = ChaptersTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113}],70:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109}],66:[function(_dereq_,module,exports){ /** * @file off-text-track-menu-item.js */ +'use strict'; -var _TextTrackMenuItem2 = _dereq_('./text-track-menu-item.js'); +exports.__esModule = true; -var _TextTrackMenuItem3 = _interopRequireWildcard(_TextTrackMenuItem2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * A special menu item for turning of a specific type of text track @@ -5409,25 +5274,25 @@ var _Component2 = _interopRequireWildcard(_Component); */ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { + _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); + function OffTextTrackMenuItem(player, options) { _classCallCheck(this, OffTextTrackMenuItem); // Create pseudo track info // Requires options['kind'] - options.track = { - kind: options.kind, - player: player, - label: options.kind + ' off', + options['track'] = { + 'kind': options['kind'], + 'player': player, + 'label': options['kind'] + ' off', 'default': false, - mode: 'disabled' + 'mode': 'disabled' }; _TextTrackMenuItem.call(this, player, options); this.selected(true); } - _inherits(OffTextTrackMenuItem, _TextTrackMenuItem); - /** * Handle text track change * @@ -5441,7 +5306,7 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { for (var i = 0, l = tracks.length; i < l; i++) { var track = tracks[i]; - if (track.kind === this.track.kind && track.mode === 'showing') { + if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') { selected = false; break; } @@ -5451,33 +5316,33 @@ var OffTextTrackMenuItem = (function (_TextTrackMenuItem) { }; return OffTextTrackMenuItem; -})(_TextTrackMenuItem3['default']); +})(_textTrackMenuItemJs2['default']); -_Component2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); +_componentJs2['default'].registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); exports['default'] = OffTextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-menu-item.js":73}],71:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-menu-item.js":69}],67:[function(_dereq_,module,exports){ /** * @file subtitles-button.js */ +'use strict'; -var _TextTrackButton2 = _dereq_('./text-track-button.js'); +exports.__esModule = true; -var _TextTrackButton3 = _interopRequireWildcard(_TextTrackButton2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _textTrackButtonJs = _dereq_('./text-track-button.js'); + +var _textTrackButtonJs2 = _interopRequireDefault(_textTrackButtonJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The button component for toggling and selecting subtitles @@ -5490,6 +5355,8 @@ var _Component2 = _interopRequireWildcard(_Component); */ var SubtitlesButton = (function (_TextTrackButton) { + _inherits(SubtitlesButton, _TextTrackButton); + function SubtitlesButton(player, options, ready) { _classCallCheck(this, SubtitlesButton); @@ -5497,8 +5364,6 @@ var SubtitlesButton = (function (_TextTrackButton) { this.el_.setAttribute('aria-label', 'Subtitles Menu'); } - _inherits(SubtitlesButton, _TextTrackButton); - /** * Allow sub components to stack CSS class names * @@ -5511,48 +5376,50 @@ var SubtitlesButton = (function (_TextTrackButton) { }; return SubtitlesButton; -})(_TextTrackButton3['default']); +})(_textTrackButtonJs2['default']); SubtitlesButton.prototype.kind_ = 'subtitles'; SubtitlesButton.prototype.controlText_ = 'Subtitles'; -_Component2['default'].registerComponent('SubtitlesButton', SubtitlesButton); +_componentJs2['default'].registerComponent('SubtitlesButton', SubtitlesButton); exports['default'] = SubtitlesButton; module.exports = exports['default']; -},{"../../component.js":52,"./text-track-button.js":72}],72:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./text-track-button.js":68}],68:[function(_dereq_,module,exports){ /** * @file text-track-button.js */ +'use strict'; -var _MenuButton2 = _dereq_('../../menu/menu-button.js'); +exports.__esModule = true; -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuButtonJs = _dereq_('../../menu/menu-button.js'); -var _TextTrackMenuItem = _dereq_('./text-track-menu-item.js'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _TextTrackMenuItem2 = _interopRequireWildcard(_TextTrackMenuItem); +var _componentJs = _dereq_('../../component.js'); -var _OffTextTrackMenuItem = _dereq_('./off-text-track-menu-item.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _textTrackMenuItemJs = _dereq_('./text-track-menu-item.js'); + +var _textTrackMenuItemJs2 = _interopRequireDefault(_textTrackMenuItemJs); + +var _offTextTrackMenuItemJs = _dereq_('./off-text-track-menu-item.js'); + +var _offTextTrackMenuItemJs2 = _interopRequireDefault(_offTextTrackMenuItemJs); /** * The base class for buttons that toggle specific text track types (e.g. subtitles) @@ -5564,6 +5431,8 @@ var _OffTextTrackMenuItem2 = _interopRequireWildcard(_OffTextTrackMenuItem); */ var TextTrackButton = (function (_MenuButton) { + _inherits(TextTrackButton, _MenuButton); + function TextTrackButton(player, options) { _classCallCheck(this, TextTrackButton); @@ -5589,15 +5458,13 @@ var TextTrackButton = (function (_MenuButton) { }); } - _inherits(TextTrackButton, _MenuButton); - // Create a menu item for each text track TextTrackButton.prototype.createItems = function createItems() { - var items = arguments[0] === undefined ? [] : arguments[0]; + var items = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; // Add an OFF menu item to turn all tracks off - items.push(new _OffTextTrackMenuItem2['default'](this.player_, { kind: this.kind_ })); + items.push(new _offTextTrackMenuItemJs2['default'](this.player_, { 'kind': this.kind_ })); var tracks = this.player_.textTracks(); @@ -5609,9 +5476,9 @@ var TextTrackButton = (function (_MenuButton) { var track = tracks[i]; // only add tracks that are of the appropriate kind and have a label - if (track.kind === this.kind_) { - items.push(new _TextTrackMenuItem2['default'](this.player_, { - track: track + if (track['kind'] === this.kind_) { + items.push(new _textTrackMenuItemJs2['default'](this.player_, { + 'track': track })); } } @@ -5620,45 +5487,47 @@ var TextTrackButton = (function (_MenuButton) { }; return TextTrackButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -_Component2['default'].registerComponent('TextTrackButton', TextTrackButton); +_componentJs2['default'].registerComponent('TextTrackButton', TextTrackButton); exports['default'] = TextTrackButton; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-button.js":88,"../../utils/fn.js":113,"./off-text-track-menu-item.js":70,"./text-track-menu-item.js":73}],73:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-button.js":84,"../../utils/fn.js":109,"./off-text-track-menu-item.js":66,"./text-track-menu-item.js":69}],69:[function(_dereq_,module,exports){ /** * @file text-track-menu-item.js */ +'use strict'; -var _MenuItem2 = _dereq_('../../menu/menu-item.js'); +exports.__esModule = true; -var _MenuItem3 = _interopRequireWildcard(_MenuItem2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../../menu/menu-item.js'); -var _window = _dereq_('global/window'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('../../component.js'); -var _document = _dereq_('global/document'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * The specific menu item type for selecting a language within a text track kind @@ -5670,17 +5539,19 @@ var _document2 = _interopRequireWildcard(_document); */ var TextTrackMenuItem = (function (_MenuItem) { + _inherits(TextTrackMenuItem, _MenuItem); + function TextTrackMenuItem(player, options) { var _this = this; _classCallCheck(this, TextTrackMenuItem); - var track = options.track; + var track = options['track']; var tracks = player.textTracks(); // Modify options for parent MenuItem class's init. - options.label = track.label || track.language || 'Unknown'; - options.selected = track['default'] || track.mode === 'showing'; + options['label'] = track['label'] || track['language'] || 'Unknown'; + options['selected'] = track['default'] || track['mode'] === 'showing'; _MenuItem.call(this, player, options); this.track = track; @@ -5707,15 +5578,15 @@ var TextTrackMenuItem = (function (_MenuItem) { var event = undefined; _this.on(['tap', 'click'], function () { - if (typeof _window2['default'].Event !== 'object') { + if (typeof _globalWindow2['default'].Event !== 'object') { // Android 2.3 throws an Illegal Constructor error for window.Event try { - event = new _window2['default'].Event('change'); + event = new _globalWindow2['default'].Event('change'); } catch (err) {} } if (!event) { - event = _document2['default'].createEvent('Event'); + event = _globalDocument2['default'].createEvent('Event'); event.initEvent('change', true, true); } @@ -5725,8 +5596,6 @@ var TextTrackMenuItem = (function (_MenuItem) { } } - _inherits(TextTrackMenuItem, _MenuItem); - /** * Handle click on text track * @@ -5734,24 +5603,24 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleClick = function handleClick(event) { - var kind = this.track.kind; + var kind = this.track['kind']; var tracks = this.player_.textTracks(); _MenuItem.prototype.handleClick.call(this, event); - if (!tracks) { - return; - }for (var i = 0; i < tracks.length; i++) { + if (!tracks) return; + + for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.kind !== kind) { + if (track['kind'] !== kind) { continue; } if (track === this.track) { - track.mode = 'showing'; + track['mode'] = 'showing'; } else { - track.mode = 'disabled'; + track['mode'] = 'disabled'; } } }; @@ -5763,41 +5632,43 @@ var TextTrackMenuItem = (function (_MenuItem) { */ TextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) { - this.selected(this.track.mode === 'showing'); + this.selected(this.track['mode'] === 'showing'); }; return TextTrackMenuItem; -})(_MenuItem3['default']); +})(_menuMenuItemJs2['default']); -_Component2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); +_componentJs2['default'].registerComponent('TextTrackMenuItem', TextTrackMenuItem); exports['default'] = TextTrackMenuItem; module.exports = exports['default']; -},{"../../component.js":52,"../../menu/menu-item.js":89,"../../utils/fn.js":113,"global/document":1,"global/window":2}],74:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../menu/menu-item.js":85,"../../utils/fn.js":109,"global/document":1,"global/window":2}],70:[function(_dereq_,module,exports){ /** * @file current-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the current time @@ -5809,6 +5680,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var CurrentTimeDisplay = (function (_Component) { + _inherits(CurrentTimeDisplay, _Component); + function CurrentTimeDisplay(player, options) { _classCallCheck(this, CurrentTimeDisplay); @@ -5817,8 +5690,6 @@ var CurrentTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(CurrentTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -5851,42 +5722,44 @@ var CurrentTimeDisplay = (function (_Component) { // Allows for smooth scrubbing, when player can't keep up. var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); var localizedText = this.localize('Current Time'); - var formattedTime = _formatTime2['default'](time, this.player_.duration()); + var formattedTime = _utilsFormatTimeJs2['default'](time, this.player_.duration()); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; }; return CurrentTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); +_componentJs2['default'].registerComponent('CurrentTimeDisplay', CurrentTimeDisplay); exports['default'] = CurrentTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],75:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],71:[function(_dereq_,module,exports){ /** * @file duration-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the duration @@ -5898,6 +5771,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var DurationDisplay = (function (_Component) { + _inherits(DurationDisplay, _Component); + function DurationDisplay(player, options) { _classCallCheck(this, DurationDisplay); @@ -5912,8 +5787,6 @@ var DurationDisplay = (function (_Component) { this.on(player, 'loadedmetadata', this.updateContent); } - _inherits(DurationDisplay, _Component); - /** * Create the component's DOM element * @@ -5946,43 +5819,45 @@ var DurationDisplay = (function (_Component) { var duration = this.player_.duration(); if (duration) { var localizedText = this.localize('Duration Time'); - var formattedTime = _formatTime2['default'](duration); + var formattedTime = _utilsFormatTimeJs2['default'](duration); this.contentEl_.innerHTML = '' + localizedText + ' ' + formattedTime; // label the duration time for screen reader users } }; return DurationDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('DurationDisplay', DurationDisplay); +_componentJs2['default'].registerComponent('DurationDisplay', DurationDisplay); exports['default'] = DurationDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],76:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],72:[function(_dereq_,module,exports){ /** * @file remaining-time-display.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _formatTime = _dereq_('../../utils/format-time.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsDomJs = _dereq_('../../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFormatTimeJs = _dereq_('../../utils/format-time.js'); + +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); /** * Displays the time left in the video @@ -5994,6 +5869,8 @@ var _formatTime2 = _interopRequireWildcard(_formatTime); */ var RemainingTimeDisplay = (function (_Component) { + _inherits(RemainingTimeDisplay, _Component); + function RemainingTimeDisplay(player, options) { _classCallCheck(this, RemainingTimeDisplay); @@ -6002,8 +5879,6 @@ var RemainingTimeDisplay = (function (_Component) { this.on(player, 'timeupdate', this.updateContent); } - _inherits(RemainingTimeDisplay, _Component); - /** * Create the component's DOM element * @@ -6035,7 +5910,7 @@ var RemainingTimeDisplay = (function (_Component) { RemainingTimeDisplay.prototype.updateContent = function updateContent() { if (this.player_.duration()) { var localizedText = this.localize('Remaining Time'); - var formattedTime = _formatTime2['default'](this.player_.remainingTime()); + var formattedTime = _utilsFormatTimeJs2['default'](this.player_.remainingTime()); this.contentEl_.innerHTML = '' + localizedText + ' -' + formattedTime; } @@ -6045,29 +5920,29 @@ var RemainingTimeDisplay = (function (_Component) { }; return RemainingTimeDisplay; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); +_componentJs2['default'].registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); exports['default'] = RemainingTimeDisplay; module.exports = exports['default']; -},{"../../component.js":52,"../../utils/dom.js":111,"../../utils/format-time.js":114}],77:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../utils/dom.js":107,"../../utils/format-time.js":110}],73:[function(_dereq_,module,exports){ /** * @file time-divider.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * The separator between the current time and duration. @@ -6080,16 +5955,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var TimeDivider = (function (_Component) { + _inherits(TimeDivider, _Component); + function TimeDivider() { _classCallCheck(this, TimeDivider); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(TimeDivider, _Component); - /** * Create the component's DOM element * @@ -6105,43 +5978,45 @@ var TimeDivider = (function (_Component) { }; return TimeDivider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('TimeDivider', TimeDivider); +_componentJs2['default'].registerComponent('TimeDivider', TimeDivider); exports['default'] = TimeDivider; module.exports = exports['default']; -},{"../../component.js":52}],78:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],74:[function(_dereq_,module,exports){ /** * @file volume-bar.js */ +'use strict'; -var _Slider2 = _dereq_('../../slider/slider.js'); +exports.__esModule = true; -var _Slider3 = _interopRequireWildcard(_Slider2); +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; } } -var _Component = _dereq_('../../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('../../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _sliderSliderJs = _dereq_('../../slider/slider.js'); + +var _sliderSliderJs2 = _interopRequireDefault(_sliderSliderJs); + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _utilsFnJs = _dereq_('../../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); // Required children -var _VolumeLevel = _dereq_('./volume-level.js'); +var _volumeLevelJs = _dereq_('./volume-level.js'); -var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); +var _volumeLevelJs2 = _interopRequireDefault(_volumeLevelJs); /** * The bar that contains the volume level and can be clicked on to adjust the level @@ -6153,6 +6028,8 @@ var _VolumeLevel2 = _interopRequireWildcard(_VolumeLevel); */ var VolumeBar = (function (_Slider) { + _inherits(VolumeBar, _Slider); + function VolumeBar(player, options) { _classCallCheck(this, VolumeBar); @@ -6161,8 +6038,6 @@ var VolumeBar = (function (_Slider) { player.ready(Fn.bind(this, this.updateARIAAttributes)); } - _inherits(VolumeBar, _Slider); - /** * Create the component's DOM element * @@ -6240,44 +6115,44 @@ var VolumeBar = (function (_Slider) { }; return VolumeBar; -})(_Slider3['default']); +})(_sliderSliderJs2['default']); VolumeBar.prototype.options_ = { children: { - volumeLevel: {} + 'volumeLevel': {} }, - barName: 'volumeLevel' + 'barName': 'volumeLevel' }; VolumeBar.prototype.playerEvent = 'volumechange'; -_Component2['default'].registerComponent('VolumeBar', VolumeBar); +_componentJs2['default'].registerComponent('VolumeBar', VolumeBar); exports['default'] = VolumeBar; module.exports = exports['default']; -},{"../../component.js":52,"../../slider/slider.js":95,"../../utils/fn.js":113,"./volume-level.js":80}],79:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"../../slider/slider.js":91,"../../utils/fn.js":109,"./volume-level.js":76}],75:[function(_dereq_,module,exports){ /** * @file volume-control.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); // Required children -var _VolumeBar = _dereq_('./volume-bar.js'); +var _volumeBarJs = _dereq_('./volume-bar.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _volumeBarJs2 = _interopRequireDefault(_volumeBarJs); /** * The component for controlling the volume level @@ -6289,17 +6164,19 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeControl = (function (_Component) { + _inherits(VolumeControl, _Component); + function VolumeControl(player, options) { _classCallCheck(this, VolumeControl); _Component.call(this, player, options); // hide volume controls when they're not supported by the current tech - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6307,8 +6184,6 @@ var VolumeControl = (function (_Component) { }); } - _inherits(VolumeControl, _Component); - /** * Create the component's DOM element * @@ -6323,35 +6198,35 @@ var VolumeControl = (function (_Component) { }; return VolumeControl; -})(_Component3['default']); +})(_componentJs2['default']); VolumeControl.prototype.options_ = { children: { - volumeBar: {} + 'volumeBar': {} } }; -_Component3['default'].registerComponent('VolumeControl', VolumeControl); +_componentJs2['default'].registerComponent('VolumeControl', VolumeControl); exports['default'] = VolumeControl; module.exports = exports['default']; -},{"../../component.js":52,"./volume-bar.js":78}],80:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48,"./volume-bar.js":74}],76:[function(_dereq_,module,exports){ /** * @file volume-level.js */ +'use strict'; -var _Component2 = _dereq_('../../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _componentJs = _dereq_('../../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); /** * Shows volume level @@ -6363,16 +6238,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var VolumeLevel = (function (_Component) { + _inherits(VolumeLevel, _Component); + function VolumeLevel() { _classCallCheck(this, VolumeLevel); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(VolumeLevel, _Component); - /** * Create the component's DOM element * @@ -6388,49 +6261,49 @@ var VolumeLevel = (function (_Component) { }; return VolumeLevel; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('VolumeLevel', VolumeLevel); +_componentJs2['default'].registerComponent('VolumeLevel', VolumeLevel); exports['default'] = VolumeLevel; module.exports = exports['default']; -},{"../../component.js":52}],81:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../../component.js":48}],77:[function(_dereq_,module,exports){ /** * @file volume-menu-button.js */ +'use strict'; -var _Button = _dereq_('../button.js'); +exports.__esModule = true; -var _Button2 = _interopRequireWildcard(_Button); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu = _dereq_('../menu/menu.js'); +var _buttonJs = _dereq_('../button.js'); -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var _MenuButton2 = _dereq_('../menu/menu-button.js'); +var _componentJs = _dereq_('../component.js'); -var _MenuButton3 = _interopRequireWildcard(_MenuButton2); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _MuteToggle = _dereq_('./mute-toggle.js'); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _MuteToggle2 = _interopRequireWildcard(_MuteToggle); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var _VolumeBar = _dereq_('./volume-control/volume-bar.js'); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); + +var _muteToggleJs = _dereq_('./mute-toggle.js'); + +var _muteToggleJs2 = _interopRequireDefault(_muteToggleJs); + +var _volumeControlVolumeBarJs = _dereq_('./volume-control/volume-bar.js'); + +var _volumeControlVolumeBarJs2 = _interopRequireDefault(_volumeControlVolumeBarJs); /** * Button for volume menu @@ -6442,8 +6315,10 @@ var _VolumeBar2 = _interopRequireWildcard(_VolumeBar); */ var VolumeMenuButton = (function (_MenuButton) { + _inherits(VolumeMenuButton, _MenuButton); + function VolumeMenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, VolumeMenuButton); @@ -6470,11 +6345,11 @@ var VolumeMenuButton = (function (_MenuButton) { this.on(player, 'loadstart', this.volumeUpdate); // hide mute toggle if the current tech doesn't support volume control - if (player.tech && player.tech.featuresVolumeControl === false) { + if (player.tech && player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } this.on(player, 'loadstart', function () { - if (player.tech.featuresVolumeControl === false) { + if (player.tech['featuresVolumeControl'] === false) { this.addClass('vjs-hidden'); } else { this.removeClass('vjs-hidden'); @@ -6483,8 +6358,6 @@ var VolumeMenuButton = (function (_MenuButton) { this.addClass('vjs-menu-button'); } - _inherits(VolumeMenuButton, _MenuButton); - /** * Allow sub components to stack CSS class names * @@ -6511,11 +6384,11 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_, { + var menu = new _menuMenuJs2['default'](this.player_, { contentElType: 'div' }); - var vc = new _VolumeBar2['default'](this.player_, this.options_.volumeBar); + var vc = new _volumeControlVolumeBarJs2['default'](this.player_, this.options_.volumeBar); vc.on('focus', function () { menu.lockShowing(); @@ -6534,41 +6407,43 @@ var VolumeMenuButton = (function (_MenuButton) { */ VolumeMenuButton.prototype.handleClick = function handleClick() { - _MuteToggle2['default'].prototype.handleClick.call(this); + _muteToggleJs2['default'].prototype.handleClick.call(this); _MenuButton.prototype.handleClick.call(this); }; return VolumeMenuButton; -})(_MenuButton3['default']); +})(_menuMenuButtonJs2['default']); -VolumeMenuButton.prototype.volumeUpdate = _MuteToggle2['default'].prototype.update; +VolumeMenuButton.prototype.volumeUpdate = _muteToggleJs2['default'].prototype.update; VolumeMenuButton.prototype.controlText_ = 'Mute'; -_Component2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); +_componentJs2['default'].registerComponent('VolumeMenuButton', VolumeMenuButton); exports['default'] = VolumeMenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../menu/menu-button.js":88,"../menu/menu.js":90,"./mute-toggle.js":56,"./volume-control/volume-bar.js":78}],82:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../menu/menu-button.js":84,"../menu/menu.js":86,"./mute-toggle.js":52,"./volume-control/volume-bar.js":74}],78:[function(_dereq_,module,exports){ /** * @file error-display.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('./utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); /** * Display that an error has occurred making the video unplayable @@ -6580,6 +6455,8 @@ var Dom = _interopRequireWildcard(_import); */ var ErrorDisplay = (function (_Component) { + _inherits(ErrorDisplay, _Component); + function ErrorDisplay(player, options) { _classCallCheck(this, ErrorDisplay); @@ -6589,8 +6466,6 @@ var ErrorDisplay = (function (_Component) { this.on(player, 'error', this.update); } - _inherits(ErrorDisplay, _Component); - /** * Create the component's DOM element * @@ -6622,25 +6497,25 @@ var ErrorDisplay = (function (_Component) { }; return ErrorDisplay; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('ErrorDisplay', ErrorDisplay); +_component2['default'].registerComponent('ErrorDisplay', ErrorDisplay); exports['default'] = ErrorDisplay; module.exports = exports['default']; -},{"./component":52,"./utils/dom.js":111}],83:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48,"./utils/dom.js":107}],79:[function(_dereq_,module,exports){ /** * @file event-target.js */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +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; } } + +var _utilsEventsJs = _dereq_('./utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); var EventTarget = function EventTarget() {}; @@ -6687,16 +6562,16 @@ EventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger; exports['default'] = EventTarget; module.exports = exports['default']; -},{"./utils/events.js":112}],84:[function(_dereq_,module,exports){ +},{"./utils/events.js":108}],80:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./utils/log'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _utilsLog = _dereq_('./utils/log'); + +var _utilsLog2 = _interopRequireDefault(_utilsLog); /* * @file extends.js @@ -6743,7 +6618,7 @@ var _inherits = function _inherits(subClass, superClass) { * ``` */ var extendsFn = function extendsFn(superClass) { - var subClassMethods = arguments[1] === undefined ? {} : arguments[1]; + var subClassMethods = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var subClass = function subClass() { superClass.apply(this, arguments); @@ -6752,7 +6627,7 @@ var extendsFn = function extendsFn(superClass) { if (typeof subClassMethods === 'object') { if (typeof subClassMethods.init === 'function') { - _log2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); + _utilsLog2['default'].warn('Constructor logic via init() is deprecated; please use constructor() instead.'); subClassMethods.constructor = subClassMethods.init; } if (subClassMethods.constructor !== Object.prototype.constructor) { @@ -6778,19 +6653,19 @@ var extendsFn = function extendsFn(superClass) { exports['default'] = extendsFn; module.exports = exports['default']; -},{"./utils/log":116}],85:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./utils/log":112}],81:[function(_dereq_,module,exports){ /** * @file fullscreen-api.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * Store the browser-specific methods for the fullscreen API @@ -6819,7 +6694,7 @@ var browserApi = undefined; // determine the supported set of functions for (var i = 0; i < apiMap.length; i++) { // check for exitFullscreen function - if (apiMap[i][1] in _document2['default']) { + if (apiMap[i][1] in _globalDocument2['default']) { browserApi = apiMap[i]; break; } @@ -6835,23 +6710,23 @@ if (browserApi) { exports['default'] = FullscreenApi; module.exports = exports['default']; -},{"global/document":1}],86:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"global/document":1}],82:[function(_dereq_,module,exports){ /** * @file loading-spinner.js */ +'use strict'; -var _Component2 = _dereq_('./component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _component = _dereq_('./component'); + +var _component2 = _interopRequireDefault(_component); /* Loading Spinner ================================================================================ */ @@ -6863,16 +6738,14 @@ var _Component3 = _interopRequireWildcard(_Component2); */ var LoadingSpinner = (function (_Component) { + _inherits(LoadingSpinner, _Component); + function LoadingSpinner() { _classCallCheck(this, LoadingSpinner); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(LoadingSpinner, _Component); - /** * Create the component's DOM element * @@ -6886,42 +6759,32 @@ var LoadingSpinner = (function (_Component) { }; return LoadingSpinner; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('LoadingSpinner', LoadingSpinner); +_component2['default'].registerComponent('LoadingSpinner', LoadingSpinner); exports['default'] = LoadingSpinner; module.exports = exports['default']; -},{"./component":52}],87:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./component":48}],83:[function(_dereq_,module,exports){ /** * @file media-error.js */ +'use strict'; -var _assign = _dereq_('object.assign'); +exports.__esModule = true; -var _assign2 = _interopRequireWildcard(_assign); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /* * Custom MediaError to mimic the HTML5 MediaError * * @param {Number} code The media error code */ -var MediaError = (function (_MediaError) { - function MediaError(_x) { - return _MediaError.apply(this, arguments); - } - - MediaError.toString = function () { - return _MediaError.toString(); - }; - - return MediaError; -})(function (code) { +var MediaError = function MediaError(code) { if (typeof code === 'number') { this.code = code; } else if (typeof code === 'string') { @@ -6929,13 +6792,13 @@ var MediaError = (function (_MediaError) { this.message = code; } else if (typeof code === 'object') { // object - _assign2['default'](this, code); + _objectAssign2['default'](this, code); } if (!this.message) { this.message = MediaError.defaultMessages[this.code] || ''; } -}); +}; /* * The error code that refers two one of the defined @@ -6993,43 +6856,45 @@ for (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) { exports['default'] = MediaError; module.exports = exports['default']; -},{"object.assign":44}],88:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"object.assign":40}],84:[function(_dereq_,module,exports){ /** * @file menu-button.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('../component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Menu = _dereq_('./menu.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Menu2 = _interopRequireWildcard(_Menu); +var _buttonJs = _dereq_('../button.js'); -var _import = _dereq_('../utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import); +var _componentJs = _dereq_('../component.js'); -var _import2 = _dereq_('../utils/fn.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Fn = _interopRequireWildcard(_import2); +var _menuJs = _dereq_('./menu.js'); -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _menuJs2 = _interopRequireDefault(_menuJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * A button class with a popup menu @@ -7041,8 +6906,10 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MenuButton = (function (_Button) { + _inherits(MenuButton, _Button); + function MenuButton(player) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, MenuButton); @@ -7055,8 +6922,6 @@ var MenuButton = (function (_Button) { this.el_.setAttribute('role', 'button'); } - _inherits(MenuButton, _Button); - /** * Update menu * @@ -7096,18 +6961,18 @@ var MenuButton = (function (_Button) { */ MenuButton.prototype.createMenu = function createMenu() { - var menu = new _Menu2['default'](this.player_); + var menu = new _menuJs2['default'](this.player_); // Add a title list item to the top if (this.options_.title) { menu.contentEl().appendChild(Dom.createEl('li', { className: 'vjs-menu-title', - innerHTML: _toTitleCase2['default'](this.options_.title), + innerHTML: _utilsToTitleCaseJs2['default'](this.options_.title), tabIndex: -1 })); } - this.items = this.createItems(); + this.items = this['createItems'](); if (this.items) { // Add menu items to the menu @@ -7224,11 +7089,11 @@ var MenuButton = (function (_Button) { event.preventDefault(); // Check for escape (27) key } else if (event.which === 27) { - if (this.buttonPressed_) { - this.unpressButton(); + if (this.buttonPressed_) { + this.unpressButton(); + } + event.preventDefault(); } - event.preventDefault(); - } }; /** @@ -7259,37 +7124,37 @@ var MenuButton = (function (_Button) { }; return MenuButton; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuButton', MenuButton); +_componentJs2['default'].registerComponent('MenuButton', MenuButton); exports['default'] = MenuButton; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/to-title-case.js":120,"./menu.js":90}],89:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/to-title-case.js":116,"./menu.js":86}],85:[function(_dereq_,module,exports){ /** * @file menu-item.js */ +'use strict'; -var _Button2 = _dereq_('../button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component = _dereq_('../component.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _Component2 = _interopRequireWildcard(_Component); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _assign = _dereq_('object.assign'); +var _buttonJs = _dereq_('../button.js'); -var _assign2 = _interopRequireWildcard(_assign); +var _buttonJs2 = _interopRequireDefault(_buttonJs); + +var _componentJs = _dereq_('../component.js'); + +var _componentJs2 = _interopRequireDefault(_componentJs); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The component for a menu item. `
  • ` @@ -7301,15 +7166,15 @@ var _assign2 = _interopRequireWildcard(_assign); */ var MenuItem = (function (_Button) { + _inherits(MenuItem, _Button); + function MenuItem(player, options) { _classCallCheck(this, MenuItem); _Button.call(this, player, options); - this.selected(options.selected); + this.selected(options['selected']); } - _inherits(MenuItem, _Button); - /** * Create the component's DOM element * @@ -7320,9 +7185,9 @@ var MenuItem = (function (_Button) { */ MenuItem.prototype.createEl = function createEl(type, props) { - return _Button.prototype.createEl.call(this, 'li', _assign2['default']({ + return _Button.prototype.createEl.call(this, 'li', _objectAssign2['default']({ className: 'vjs-menu-item', - innerHTML: this.localize(this.options_.label) + innerHTML: this.localize(this.options_['label']) }, props)); }; @@ -7343,62 +7208,54 @@ var MenuItem = (function (_Button) { * @method selected */ - MenuItem.prototype.selected = (function (_selected) { - function selected(_x) { - return _selected.apply(this, arguments); - } - - selected.toString = function () { - return _selected.toString(); - }; - - return selected; - })(function (selected) { - if (selected) { + MenuItem.prototype.selected = function selected(_selected) { + if (_selected) { this.addClass('vjs-selected'); this.el_.setAttribute('aria-selected', true); } else { this.removeClass('vjs-selected'); this.el_.setAttribute('aria-selected', false); } - }); + }; return MenuItem; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('MenuItem', MenuItem); +_componentJs2['default'].registerComponent('MenuItem', MenuItem); exports['default'] = MenuItem; module.exports = exports['default']; -},{"../button.js":51,"../component.js":52,"object.assign":44}],90:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../button.js":47,"../component.js":48,"object.assign":40}],86:[function(_dereq_,module,exports){ /** * @file menu.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('../component.js'); -var _import3 = _dereq_('../utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import3); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsEventsJs = _dereq_('../utils/events.js'); + +var Events = _interopRequireWildcard(_utilsEventsJs); /** * The Menu component is used to build pop up menus, including subtitle and @@ -7409,16 +7266,14 @@ var Events = _interopRequireWildcard(_import3); */ var Menu = (function (_Component) { + _inherits(Menu, _Component); + function Menu() { _classCallCheck(this, Menu); - if (_Component != null) { - _Component.apply(this, arguments); - } + _Component.apply(this, arguments); } - _inherits(Menu, _Component); - /** * Add a menu item to the menu * @@ -7462,138 +7317,140 @@ var Menu = (function (_Component) { }; return Menu; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Menu', Menu); +_componentJs2['default'].registerComponent('Menu', Menu); exports['default'] = Menu; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"../utils/events.js":112,"../utils/fn.js":113}],91:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"../utils/events.js":108,"../utils/fn.js":109}],87:[function(_dereq_,module,exports){ /** * @file player.js */ // Subclasses Component +'use strict'; -var _Component2 = _dereq_('./component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window = _dereq_('global/window'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _window2 = _interopRequireWildcard(_window); +var _componentJs = _dereq_('./component.js'); -var _import = _dereq_('./utils/events.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var Events = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/dom.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var Dom = _interopRequireWildcard(_import2); +var _globalWindow = _dereq_('global/window'); -var _import3 = _dereq_('./utils/fn.js'); +var _globalWindow2 = _interopRequireDefault(_globalWindow); -var Fn = _interopRequireWildcard(_import3); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _import4 = _dereq_('./utils/guid.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var Guid = _interopRequireWildcard(_import4); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import5 = _dereq_('./utils/browser.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var browser = _interopRequireWildcard(_import5); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _log = _dereq_('./utils/log.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _log2 = _interopRequireWildcard(_log); +var _utilsGuidJs = _dereq_('./utils/guid.js'); -var _toTitleCase = _dereq_('./utils/to-title-case.js'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _bufferedPercent2 = _dereq_('./utils/buffer.js'); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import6 = _dereq_('./utils/stylesheet.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var stylesheet = _interopRequireWildcard(_import6); +var _utilsToTitleCaseJs = _dereq_('./utils/to-title-case.js'); -var _FullscreenApi = _dereq_('./fullscreen-api.js'); +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); -var _FullscreenApi2 = _interopRequireWildcard(_FullscreenApi); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _MediaError = _dereq_('./media-error.js'); +var _utilsBufferJs = _dereq_('./utils/buffer.js'); -var _MediaError2 = _interopRequireWildcard(_MediaError); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _fullscreenApiJs = _dereq_('./fullscreen-api.js'); -var _assign = _dereq_('object.assign'); +var _fullscreenApiJs2 = _interopRequireDefault(_fullscreenApiJs); -var _assign2 = _interopRequireWildcard(_assign); +var _mediaErrorJs = _dereq_('./media-error.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); -var _textTrackConverter = _dereq_('./tracks/text-track-list-converter.js'); +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); -var _textTrackConverter2 = _interopRequireWildcard(_textTrackConverter); +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _tracksTextTrackListConverterJs = _dereq_('./tracks/text-track-list-converter.js'); + +var _tracksTextTrackListConverterJs2 = _interopRequireDefault(_tracksTextTrackListConverterJs); // Include required child components (importing also registers them) -var _MediaLoader = _dereq_('./tech/loader.js'); +var _techLoaderJs = _dereq_('./tech/loader.js'); -var _MediaLoader2 = _interopRequireWildcard(_MediaLoader); +var _techLoaderJs2 = _interopRequireDefault(_techLoaderJs); -var _PosterImage = _dereq_('./poster-image.js'); +var _posterImageJs = _dereq_('./poster-image.js'); -var _PosterImage2 = _interopRequireWildcard(_PosterImage); +var _posterImageJs2 = _interopRequireDefault(_posterImageJs); -var _TextTrackDisplay = _dereq_('./tracks/text-track-display.js'); +var _tracksTextTrackDisplayJs = _dereq_('./tracks/text-track-display.js'); -var _TextTrackDisplay2 = _interopRequireWildcard(_TextTrackDisplay); +var _tracksTextTrackDisplayJs2 = _interopRequireDefault(_tracksTextTrackDisplayJs); -var _LoadingSpinner = _dereq_('./loading-spinner.js'); +var _loadingSpinnerJs = _dereq_('./loading-spinner.js'); -var _LoadingSpinner2 = _interopRequireWildcard(_LoadingSpinner); +var _loadingSpinnerJs2 = _interopRequireDefault(_loadingSpinnerJs); -var _BigPlayButton = _dereq_('./big-play-button.js'); +var _bigPlayButtonJs = _dereq_('./big-play-button.js'); -var _BigPlayButton2 = _interopRequireWildcard(_BigPlayButton); +var _bigPlayButtonJs2 = _interopRequireDefault(_bigPlayButtonJs); -var _ControlBar = _dereq_('./control-bar/control-bar.js'); +var _controlBarControlBarJs = _dereq_('./control-bar/control-bar.js'); -var _ControlBar2 = _interopRequireWildcard(_ControlBar); +var _controlBarControlBarJs2 = _interopRequireDefault(_controlBarControlBarJs); -var _ErrorDisplay = _dereq_('./error-display.js'); +var _errorDisplayJs = _dereq_('./error-display.js'); -var _ErrorDisplay2 = _interopRequireWildcard(_ErrorDisplay); +var _errorDisplayJs2 = _interopRequireDefault(_errorDisplayJs); -var _TextTrackSettings = _dereq_('./tracks/text-track-settings.js'); +var _tracksTextTrackSettingsJs = _dereq_('./tracks/text-track-settings.js'); -var _TextTrackSettings2 = _interopRequireWildcard(_TextTrackSettings); +var _tracksTextTrackSettingsJs2 = _interopRequireDefault(_tracksTextTrackSettingsJs); // Require html5 tech, at least for disposing the original video tag -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); /** * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video. @@ -7616,6 +7473,7 @@ var _Html52 = _interopRequireWildcard(_Html5); */ var Player = (function (_Component) { + _inherits(Player, _Component); /** * player's constructor function @@ -7640,7 +7498,7 @@ var Player = (function (_Component) { // which overrides globally set options. // This latter part coincides with the load order // (tag must exist before Player) - options = _assign2['default'](Player.getTagSettings(tag), options); + options = _objectAssign2['default'](Player.getTagSettings(tag), options); // Delay the initialization of children because we need to set up // player properties first, and can't use `this` before `super()` @@ -7713,7 +7571,7 @@ var Player = (function (_Component) { // as well so they don't need to reach back into the player for options later. // We also need to do another copy of this.options_ so we don't end up with // an infinite loop. - var playerOptionsCopy = _mergeOptions2['default'](this.options_); + var playerOptionsCopy = _utilsMergeOptionsJs2['default'](this.options_); // Load plugins if (options.plugins) { @@ -7721,11 +7579,10 @@ var Player = (function (_Component) { var plugins = options.plugins; Object.getOwnPropertyNames(plugins).forEach(function (name) { - plugins[name].playerOptions = playerOptionsCopy; if (typeof this[name] === 'function') { this[name](plugins[name]); } else { - _log2['default'].error('Unable to find plugin:', name); + _utilsLogJs2['default'].error('Unable to find plugin:', name); } }, _this); })(); @@ -7773,7 +7630,11 @@ var Player = (function (_Component) { this.on('stageclick', this.handleStageClick); } - _inherits(Player, _Component); + /* + * Global player list + * + * @type {Object} + */ /** * Destroys the video player and does any necessary cleanup @@ -7855,8 +7716,8 @@ var Player = (function (_Component) { // of the player in a way that's still overrideable by CSS, just like the // video element this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions'); - var defaultsStyleEl = _document2['default'].querySelector('.vjs-styles-defaults'); - var head = _document2['default'].querySelector('head'); + var defaultsStyleEl = _globalDocument2['default'].querySelector('.vjs-styles-defaults'); + var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild); // Pass in the width/height/aspectRatio options which will update the style el @@ -7913,18 +7774,8 @@ var Player = (function (_Component) { * @method dimension */ - Player.prototype.dimension = (function (_dimension) { - function dimension(_x, _x2) { - return _dimension.apply(this, arguments); - } - - dimension.toString = function () { - return _dimension.toString(); - }; - - return dimension; - })(function (dimension, value) { - var privDimension = dimension + '_'; + Player.prototype.dimension = function dimension(_dimension, value) { + var privDimension = _dimension + '_'; if (value === undefined) { return this[privDimension] || 0; @@ -7937,7 +7788,7 @@ var Player = (function (_Component) { var parsedVal = parseFloat(value); if (isNaN(parsedVal)) { - _log2['default'].error('Improper value "' + value + '" supplied for for ' + dimension); + _utilsLogJs2['default'].error('Improper value "' + value + '" supplied for for ' + _dimension); return this; } @@ -7946,7 +7797,7 @@ var Player = (function (_Component) { this.updateStyleEl_(); return this; - }); + }; /** * Add/remove the vjs-fluid class @@ -8068,7 +7919,7 @@ var Player = (function (_Component) { // get rid of the HTML5 video tag as soon as we are using another tech if (techName !== 'Html5' && this.tag) { - _Component3['default'].getComponent('Html5').disposeMediaElement(this.tag); + _componentJs2['default'].getComponent('Html5').disposeMediaElement(this.tag); this.tag.player = null; this.tag = null; } @@ -8083,17 +7934,18 @@ var Player = (function (_Component) { }); // Grab tech-specific options from player options and add source and parent element to use. - var techOptions = _assign2['default']({ - source: source, - playerId: this.id(), - techId: '' + this.id() + '_' + techName + '_api', - textTracks: this.textTracks_, - autoplay: this.options_.autoplay, - preload: this.options_.preload, - loop: this.options_.loop, - muted: this.options_.muted, - poster: this.poster(), - language: this.language(), + var techOptions = _objectAssign2['default']({ + 'nativeControlsForTouch': this.options_.nativeControlsForTouch, + 'source': source, + 'playerId': this.id(), + 'techId': this.id() + '_' + techName + '_api', + 'textTracks': this.textTracks_, + 'autoplay': this.options_.autoplay, + 'preload': this.options_.preload, + 'loop': this.options_.loop, + 'muted': this.options_.muted, + 'poster': this.poster(), + 'language': this.language(), 'vtt.js': this.options_['vtt.js'] }, this.options_[techName.toLowerCase()]); @@ -8111,13 +7963,12 @@ var Player = (function (_Component) { } // Initialize tech instance - var techComponent = _Component3['default'].getComponent(techName); + var techComponent = _componentJs2['default'].getComponent(techName); this.tech = new techComponent(techOptions); - _textTrackConverter2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); + _tracksTextTrackListConverterJs2['default'].jsonToTextTracks(this.textTracksJson_ || [], this.tech); this.on(this.tech, 'ready', this.handleTechReady); - this.on(this.tech, 'usenativecontrols', this.handleTechUseNativeControls); // Listen to every HTML5 events and trigger them back on the player for the plugins this.on(this.tech, 'loadstart', this.handleTechLoadStart); @@ -8147,6 +7998,8 @@ var Player = (function (_Component) { this.on(this.tech, 'texttrackchange', this.onTextTrackChange); this.on(this.tech, 'loadedmetadata', this.updateStyleEl_); + this.usingNativeControls(this.techGet('controls')); + if (this.controls() && !this.usingNativeControls()) { this.addTechControlsListeners(); } @@ -8176,7 +8029,7 @@ var Player = (function (_Component) { Player.prototype.unloadTech = function unloadTech() { // Save the current text tracks so that we can reuse the same text tracks with the next tech this.textTracks_ = this.textTracks(); - this.textTracksJson_ = _textTrackConverter2['default'].textTracksToJson(this); + this.textTracksJson_ = _tracksTextTrackListConverterJs2['default'].textTracksToJson(this); this.isReady_ = false; @@ -8192,6 +8045,9 @@ var Player = (function (_Component) { */ Player.prototype.addTechControlsListeners = function addTechControlsListeners() { + // Make sure to remove all the previous listeners in case we are called multiple times. + this.removeTechControlsListeners(); + // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do // trigger mousedown/up. // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object @@ -8252,17 +8108,6 @@ var Player = (function (_Component) { } }; - /** - * Fired when the native controls are used - * - * @private - * @method handleTechUseNativeControls - */ - - Player.prototype.handleTechUseNativeControls = function handleTechUseNativeControls() { - this.usingNativeControls(true); - }; - /** * Fired when the user agent begins looking for media data * @@ -8298,22 +8143,12 @@ var Player = (function (_Component) { * @method hasStarted */ - Player.prototype.hasStarted = (function (_hasStarted) { - function hasStarted(_x3) { - return _hasStarted.apply(this, arguments); - } - - hasStarted.toString = function () { - return _hasStarted.toString(); - }; - - return hasStarted; - })(function (hasStarted) { - if (hasStarted !== undefined) { + Player.prototype.hasStarted = function hasStarted(_hasStarted) { + if (_hasStarted !== undefined) { // only update if this is a new value - if (this.hasStarted_ !== hasStarted) { - this.hasStarted_ = hasStarted; - if (hasStarted) { + if (this.hasStarted_ !== _hasStarted) { + this.hasStarted_ = _hasStarted; + if (_hasStarted) { this.addClass('vjs-has-started'); // trigger the firstplay event if this newly has played this.trigger('firstplay'); @@ -8324,7 +8159,7 @@ var Player = (function (_Component) { return this; } return !!this.hasStarted_; - }); + }; /** * Fired whenever the media begins or resumes playback @@ -8499,9 +8334,9 @@ var Player = (function (_Component) { Player.prototype.handleTechClick = function handleTechClick(event) { // We're using mousedown to detect clicks thanks to Flash, but mousedown // will also be triggered with right-clicks, so we need to prevent that - if (event.button !== 0) { - return; - } // When controls are disabled a click should not toggle playback because + if (event.button !== 0) return; + + // When controls are disabled a click should not toggle playback because // the click is considered a control if (this.controls()) { if (this.paused()) { @@ -8628,7 +8463,8 @@ var Player = (function (_Component) { */ Player.prototype.handleTechError = function handleTechError() { - this.error(this.tech.error().code); + var error = this.tech.error(); + this.error(error && error.code); }; /** @@ -8759,13 +8595,13 @@ var Player = (function (_Component) { // Otherwise call method now } else { - try { - this.tech[method](arg); - } catch (e) { - _log2['default'](e); - throw e; + try { + this.tech[method](arg); + } catch (e) { + _utilsLogJs2['default'](e); + throw e; + } } - } }; /** @@ -8787,14 +8623,14 @@ var Player = (function (_Component) { } catch (e) { // When building additional tech libs, an expected method may not be defined yet if (this.tech[method] === undefined) { - _log2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' method not defined for ' + this.techName + ' playback technology.', e); } else { // When a method isn't available on the object it throws a TypeError if (e.name === 'TypeError') { - _log2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); + _utilsLogJs2['default']('Video.js: ' + method + ' unavailable on ' + this.techName + ' playback technology element.', e); this.tech.isReady_ = false; } else { - _log2['default'](e); + _utilsLogJs2['default'](e); } } throw e; @@ -8976,25 +8812,15 @@ var Player = (function (_Component) { * @method buffered */ - Player.prototype.buffered = (function (_buffered) { - function buffered() { - return _buffered.apply(this, arguments); - } - - buffered.toString = function () { - return _buffered.toString(); - }; - - return buffered; - })(function () { + Player.prototype.buffered = function buffered() { var buffered = this.techGet('buffered'); if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _utilsTimeRangesJs.createTimeRange(0, 0); } return buffered; - }); + }; /** * Get the percent (as a decimal) of the video that's been downloaded @@ -9008,19 +8834,9 @@ var Player = (function (_Component) { * @method bufferedPercent */ - Player.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration()); - }); + Player.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration()); + }; /** * Get the ending time of the last buffered time range @@ -9089,23 +8905,13 @@ var Player = (function (_Component) { * @method muted */ - Player.prototype.muted = (function (_muted) { - function muted(_x4) { - return _muted.apply(this, arguments); - } - - muted.toString = function () { - return _muted.toString(); - }; - - return muted; - })(function (muted) { - if (muted !== undefined) { - this.techCall('setMuted', muted); + Player.prototype.muted = function muted(_muted) { + if (_muted !== undefined) { + this.techCall('setMuted', _muted); return this; } return this.techGet('muted') || false; // Default to false - }); + }; // Check if current tech can support native fullscreen // (e.g. with built in controls like iOS, so not our flash swf) @@ -9163,7 +8969,7 @@ var Player = (function (_Component) { */ Player.prototype.requestFullscreen = function requestFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(true); @@ -9176,12 +8982,12 @@ var Player = (function (_Component) { // when canceling fullscreen. Otherwise if there's multiple // players on a page, they would all be reacting to the same fullscreen // events - Events.on(_document2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { - this.isFullscreen(_document2['default'][fsApi.fullscreenElement]); + Events.on(_globalDocument2['default'], fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e) { + this.isFullscreen(_globalDocument2['default'][fsApi.fullscreenElement]); // If cancelling fullscreen, remove event listener. if (this.isFullscreen() === false) { - Events.off(_document2['default'], fsApi.fullscreenchange, documentFullscreenChange); + Events.off(_globalDocument2['default'], fsApi.fullscreenchange, documentFullscreenChange); } this.trigger('fullscreenchange'); @@ -9213,12 +9019,12 @@ var Player = (function (_Component) { */ Player.prototype.exitFullscreen = function exitFullscreen() { - var fsApi = _FullscreenApi2['default']; + var fsApi = _fullscreenApiJs2['default']; this.isFullscreen(false); // Check for browser element fullscreen support if (fsApi.requestFullscreen) { - _document2['default'][fsApi.exitFullscreen](); + _globalDocument2['default'][fsApi.exitFullscreen](); } else if (this.tech.supportsFullScreen()) { this.techCall('exitFullScreen'); } else { @@ -9239,16 +9045,16 @@ var Player = (function (_Component) { this.isFullWindow = true; // Storing original doc overflow value to return to when fullscreen is off - this.docOrigOverflow = _document2['default'].documentElement.style.overflow; + this.docOrigOverflow = _globalDocument2['default'].documentElement.style.overflow; // Add listener for esc key to exit fullscreen - Events.on(_document2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); + Events.on(_globalDocument2['default'], 'keydown', Fn.bind(this, this.fullWindowOnEscKey)); // Hide any scroll bars - _document2['default'].documentElement.style.overflow = 'hidden'; + _globalDocument2['default'].documentElement.style.overflow = 'hidden'; // Apply fullscreen styles - Dom.addElClass(_document2['default'].body, 'vjs-full-window'); + Dom.addElClass(_globalDocument2['default'].body, 'vjs-full-window'); this.trigger('enterFullWindow'); }; @@ -9278,13 +9084,13 @@ var Player = (function (_Component) { Player.prototype.exitFullWindow = function exitFullWindow() { this.isFullWindow = false; - Events.off(_document2['default'], 'keydown', this.fullWindowOnEscKey); + Events.off(_globalDocument2['default'], 'keydown', this.fullWindowOnEscKey); // Unhide scroll bars. - _document2['default'].documentElement.style.overflow = this.docOrigOverflow; + _globalDocument2['default'].documentElement.style.overflow = this.docOrigOverflow; // Remove fullscreen styles - Dom.removeElClass(_document2['default'].body, 'vjs-full-window'); + Dom.removeElClass(_globalDocument2['default'].body, 'vjs-full-window'); // Resize the box, controller, and poster to original sizes // this.positionAll(); @@ -9302,12 +9108,12 @@ var Player = (function (_Component) { Player.prototype.selectSource = function selectSource(sources) { // Loop through each playback technology in the options order for (var i = 0, j = this.options_.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _componentJs2['default'].getComponent(techName); // Check if the current tech is defined before continuing if (!tech) { - _log2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); + _utilsLogJs2['default'].error('The "' + techName + '" tech is undefined. Skipped browser support check for that tech.'); continue; } @@ -9366,7 +9172,7 @@ var Player = (function (_Component) { return this.techGet('src'); } - var currentTech = _Component3['default'].getComponent(this.techName); + var currentTech = _componentJs2['default'].getComponent(this.techName); // case: Array of source objects to choose from and pick the best to play if (Array.isArray(source)) { @@ -9374,46 +9180,46 @@ var Player = (function (_Component) { // case: URL String (http://myvideo...) } else if (typeof source === 'string') { - // create a source object from the string - this.src({ src: source }); + // create a source object from the string + this.src({ src: source }); - // case: Source object { src: '', type: '' ... } - } else if (source instanceof Object) { - // check if the source has a type and the loaded tech cannot play the source - // if there's no type we'll just try the current tech - if (source.type && !currentTech.canPlaySource(source)) { - // create a source list with the current source and send through - // the tech loop to check for a compatible technology - this.sourceList_([source]); - } else { - this.cache_.src = source.src; - this.currentType_ = source.type || ''; - - // wait until the tech is ready to set the source - this.ready(function () { - - // The setSource tech method was added with source handlers - // so older techs won't support it - // We need to check the direct prototype for the case where subclasses - // of the tech do not support source handlers - if (currentTech.prototype.hasOwnProperty('setSource')) { - this.techCall('setSource', source); + // case: Source object { src: '', type: '' ... } + } else if (source instanceof Object) { + // check if the source has a type and the loaded tech cannot play the source + // if there's no type we'll just try the current tech + if (source.type && !currentTech.canPlaySource(source)) { + // create a source list with the current source and send through + // the tech loop to check for a compatible technology + this.sourceList_([source]); } else { - this.techCall('src', source.src); - } + this.cache_.src = source.src; + this.currentType_ = source.type || ''; - if (this.options_.preload === 'auto') { - this.load(); - } + // wait until the tech is ready to set the source + this.ready(function () { - if (this.options_.autoplay) { - this.play(); - } + // The setSource tech method was added with source handlers + // so older techs won't support it + // We need to check the direct prototype for the case where subclasses + // of the tech do not support source handlers + if (currentTech.prototype.hasOwnProperty('setSource')) { + this.techCall('setSource', source); + } else { + this.techCall('src', source.src); + } - // Set the source synchronously if possible (#2326) - }, true); - } - } + if (this.options_.preload === 'auto') { + this.load(); + } + + if (this.options_.autoplay) { + this.play(); + } + + // Set the source synchronously if possible (#2326) + }, true); + } + } return this; }; @@ -9534,7 +9340,7 @@ var Player = (function (_Component) { Player.prototype.loop = function loop(value) { if (value !== undefined) { this.techCall('setLoop', value); - this.options_.loop = value; + this.options_['loop'] = value; return this; } return this.techGet('loop'); @@ -9693,10 +9499,10 @@ var Player = (function (_Component) { } // error instance - if (err instanceof _MediaError2['default']) { + if (err instanceof _mediaErrorJs2['default']) { this.error_ = err; } else { - this.error_ = new _MediaError2['default'](err); + this.error_ = new _mediaErrorJs2['default'](err); } // fire an error event on the player @@ -9707,7 +9513,7 @@ var Player = (function (_Component) { // log the name of the error type and any message // ie8 just logs "[object object]" if you just log the error object - _log2['default'].error('(CODE:' + this.error_.code + ' ' + _MediaError2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); + _utilsLogJs2['default'].error('(CODE:' + this.error_.code + ' ' + _mediaErrorJs2['default'].errorTypes[this.error_.code] + ')', this.error_.message, this.error_); return this; }; @@ -9876,7 +9682,7 @@ var Player = (function (_Component) { // Clear any existing inactivity timeout to start the timer over this.clearTimeout(inactivityTimeout); - var timeout = this.options_.inactivityTimeout; + var timeout = this.options_['inactivityTimeout']; if (timeout > 0) { // In milliseconds, if no more activity has occurred the // user will be considered inactive @@ -9911,10 +9717,10 @@ var Player = (function (_Component) { return this; } - if (this.tech && this.tech.featuresPlaybackRate) { + if (this.tech && this.tech['featuresPlaybackRate']) { return this.techGet('playbackRate'); } else { - return 1; + return 1.0; } }; @@ -10009,7 +9815,7 @@ var Player = (function (_Component) { Player.prototype.textTracks = function textTracks() { // cannot use techGet directly because it checks to see whether the tech is ready. // Flash is unlikely to be ready in time but textTracks should still work. - return this.tech && this.tech.textTracks(); + return this.tech && this.tech['textTracks'](); }; /** @@ -10020,7 +9826,7 @@ var Player = (function (_Component) { */ Player.prototype.remoteTextTracks = function remoteTextTracks() { - return this.tech && this.tech.remoteTextTracks(); + return this.tech && this.tech['remoteTextTracks'](); }; /** @@ -10035,7 +9841,7 @@ var Player = (function (_Component) { */ Player.prototype.addTextTrack = function addTextTrack(kind, label, language) { - return this.tech && this.tech.addTextTrack(kind, label, language); + return this.tech && this.tech['addTextTrack'](kind, label, language); }; /** @@ -10046,7 +9852,7 @@ var Player = (function (_Component) { */ Player.prototype.addRemoteTextTrack = function addRemoteTextTrack(options) { - return this.tech && this.tech.addRemoteTextTrack(options); + return this.tech && this.tech['addRemoteTextTrack'](options); }; /** @@ -10057,7 +9863,7 @@ var Player = (function (_Component) { */ Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - this.tech && this.tech.removeRemoteTextTrack(track); + this.tech && this.tech['removeRemoteTextTrack'](track); }; /** @@ -10129,7 +9935,7 @@ var Player = (function (_Component) { */ Player.prototype.languages = function languages() { - return _mergeOptions2['default'](Player.prototype.options_.languages, this.languages_); + return _utilsMergeOptionsJs2['default'](Player.prototype.options_.languages, this.languages_); }; /** @@ -10140,7 +9946,7 @@ var Player = (function (_Component) { */ Player.prototype.toJSON = function toJSON() { - var options = _mergeOptions2['default'](this.options_); + var options = _utilsMergeOptionsJs2['default'](this.options_); var tracks = options.tracks; options.tracks = []; @@ -10149,7 +9955,7 @@ var Player = (function (_Component) { var track = tracks[i]; // deep merge tracks and null out player so no circular references - track = _mergeOptions2['default'](track); + track = _utilsMergeOptionsJs2['default'](track); track.player = undefined; options.tracks[i] = track; } @@ -10168,8 +9974,8 @@ var Player = (function (_Component) { Player.getTagSettings = function getTagSettings(tag) { var baseOptions = { - sources: [], - tracks: [] + 'sources': [], + 'tracks': [] }; var tagOptions = Dom.getElAttributes(tag); @@ -10178,20 +9984,19 @@ var Player = (function (_Component) { // Check if data-setup attr exists. if (dataSetup !== null) { // Parse options JSON - // If empty string, make it a parsable json object. - var _safeParseTuple = _safeParseTuple3['default'](dataSetup || '{}'); + var _safeParseTuple = _safeJsonParseTuple2['default'](dataSetup || '{}'); var err = _safeParseTuple[0]; var data = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } - _assign2['default'](tagOptions, data); + _objectAssign2['default'](tagOptions, data); } - _assign2['default'](baseOptions, tagOptions); + _objectAssign2['default'](baseOptions, tagOptions); // Get tag children settings if (tag.hasChildNodes()) { @@ -10213,16 +10018,11 @@ var Player = (function (_Component) { }; return Player; -})(_Component3['default']); +})(_componentJs2['default']); -/* - * Global player list - * - * @type {Object} - */ Player.players = {}; -var navigator = _window2['default'].navigator; +var navigator = _globalWindow2['default'].navigator; /* * Player instance options, surfaced using options * options = Player.prototype.options_ @@ -10240,7 +10040,7 @@ Player.prototype.options_ = { flash: {}, // defaultVolume: 0.85, - defaultVolume: 0, // The freakin seaguls are driving me crazy! + defaultVolume: 0.00, // The freakin seaguls are driving me crazy! // default inactivity timeout inactivityTimeout: 2000, @@ -10262,7 +10062,7 @@ Player.prototype.options_ = { textTrackSettings: {} }, - language: _document2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', + language: _globalDocument2['default'].getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en', // locales and their language translations languages: {}, @@ -10330,30 +10130,31 @@ Player.prototype.handleVolumeChange; Player.prototype.handleError; Player.prototype.flexNotSupported_ = function () { - var elem = _document2['default'].createElement('i'); + var elem = _globalDocument2['default'].createElement('i'); // Note: We don't actually use flexBasis (or flexOrder), but it's one of the more // common flex features that we can rely on when checking for flex support. - return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style /* IE10-specific (2012 flex spec) */); + return !('flexBasis' in elem.style || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style || 'msFlexOrder' in elem.style) /* IE10-specific (2012 flex spec) */; }; -_Component3['default'].registerComponent('Player', Player); +_componentJs2['default'].registerComponent('Player', Player); exports['default'] = Player; module.exports = exports['default']; +// If empty string, make it a parsable json object. -},{"./big-play-button.js":50,"./component.js":52,"./control-bar/control-bar.js":53,"./error-display.js":82,"./fullscreen-api.js":85,"./loading-spinner.js":86,"./media-error.js":87,"./poster-image.js":93,"./tech/html5.js":98,"./tech/loader.js":99,"./tracks/text-track-display.js":102,"./tracks/text-track-list-converter.js":104,"./tracks/text-track-settings.js":106,"./utils/browser.js":108,"./utils/buffer.js":109,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/guid.js":115,"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/to-title-case.js":120,"global/document":1,"global/window":2,"object.assign":44,"safe-json-parse/tuple":49}],92:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./big-play-button.js":46,"./component.js":48,"./control-bar/control-bar.js":49,"./error-display.js":78,"./fullscreen-api.js":81,"./loading-spinner.js":82,"./media-error.js":83,"./poster-image.js":89,"./tech/html5.js":94,"./tech/loader.js":95,"./tracks/text-track-display.js":98,"./tracks/text-track-list-converter.js":100,"./tracks/text-track-settings.js":102,"./utils/browser.js":104,"./utils/buffer.js":105,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/guid.js":111,"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/to-title-case.js":116,"global/document":1,"global/window":2,"object.assign":40,"safe-json-parse/tuple":45}],88:[function(_dereq_,module,exports){ /** * @file plugins.js */ +'use strict'; -var _Player = _dereq_('./player.js'); +exports.__esModule = true; -var _Player2 = _interopRequireWildcard(_Player); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _playerJs = _dereq_('./player.js'); + +var _playerJs2 = _interopRequireDefault(_playerJs); /** * The method for registering a video.js plugin @@ -10363,45 +10164,47 @@ var _Player2 = _interopRequireWildcard(_Player); * @method plugin */ var plugin = function plugin(name, init) { - _Player2['default'].prototype[name] = init; + _playerJs2['default'].prototype[name] = init; }; exports['default'] = plugin; module.exports = exports['default']; -},{"./player.js":91}],93:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./player.js":87}],89:[function(_dereq_,module,exports){ /** * @file poster-image.js */ +'use strict'; -var _Button2 = _dereq_('./button.js'); +exports.__esModule = true; -var _Button3 = _interopRequireWildcard(_Button2); +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; } } -var _Component = _dereq_('./component.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Component2 = _interopRequireWildcard(_Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import = _dereq_('./utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import); +var _buttonJs = _dereq_('./button.js'); -var _import2 = _dereq_('./utils/dom.js'); +var _buttonJs2 = _interopRequireDefault(_buttonJs); -var Dom = _interopRequireWildcard(_import2); +var _componentJs = _dereq_('./component.js'); -var _import3 = _dereq_('./utils/browser.js'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var browser = _interopRequireWildcard(_import3); +var _utilsFnJs = _dereq_('./utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _utilsDomJs = _dereq_('./utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _utilsBrowserJs = _dereq_('./utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); /** * The component that handles showing the poster image. @@ -10413,6 +10216,8 @@ var browser = _interopRequireWildcard(_import3); */ var PosterImage = (function (_Button) { + _inherits(PosterImage, _Button); + function PosterImage(player, options) { _classCallCheck(this, PosterImage); @@ -10422,8 +10227,6 @@ var PosterImage = (function (_Button) { player.on('posterchange', Fn.bind(this, this.update)); } - _inherits(PosterImage, _Button); - /** * Clean up the poster image * @@ -10521,36 +10324,38 @@ var PosterImage = (function (_Button) { }; return PosterImage; -})(_Button3['default']); +})(_buttonJs2['default']); -_Component2['default'].registerComponent('PosterImage', PosterImage); +_componentJs2['default'].registerComponent('PosterImage', PosterImage); exports['default'] = PosterImage; module.exports = exports['default']; -},{"./button.js":51,"./component.js":52,"./utils/browser.js":108,"./utils/dom.js":111,"./utils/fn.js":113}],94:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"./button.js":47,"./component.js":48,"./utils/browser.js":104,"./utils/dom.js":107,"./utils/fn.js":109}],90:[function(_dereq_,module,exports){ /** * @file setup.js * * Functions for automatically setting up a player * based on the data-setup attribute of the video tag */ +'use strict'; -var _import = _dereq_('./utils/events.js'); +exports.__esModule = true; -var Events = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _window = _dereq_('global/window'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var _windowLoaded = false; var videojs = undefined; @@ -10564,8 +10369,8 @@ var autoSetup = function autoSetup() { // Because IE8 doesn't support calling slice on a node list, we need to loop through each list of elements // to build up a new, combined list of elements. - var vids = _document2['default'].getElementsByTagName('video'); - var audios = _document2['default'].getElementsByTagName('audio'); + var vids = _globalDocument2['default'].getElementsByTagName('video'); + var audios = _globalDocument2['default'].getElementsByTagName('audio'); var mediaEls = []; if (vids && vids.length > 0) { for (var i = 0, e = vids.length; i < e; i++) { @@ -10589,7 +10394,7 @@ var autoSetup = function autoSetup() { if (mediaEl && mediaEl.getAttribute) { // Make sure this player hasn't already been set up. - if (mediaEl.player === undefined) { + if (mediaEl['player'] === undefined) { var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists. @@ -10602,15 +10407,15 @@ var autoSetup = function autoSetup() { // If getAttribute isn't defined, we need to wait for the DOM. } else { - autoSetupTimeout(1); - break; - } + autoSetupTimeout(1); + break; + } } // No videos were found, so keep looping unless page is finished loading. } else if (!_windowLoaded) { - autoSetupTimeout(1); - } + autoSetupTimeout(1); + } }; // Pause to let the DOM keep processing @@ -10619,10 +10424,10 @@ var autoSetupTimeout = function autoSetupTimeout(wait, vjs) { setTimeout(autoSetup, wait); }; -if (_document2['default'].readyState === 'complete') { +if (_globalDocument2['default'].readyState === 'complete') { _windowLoaded = true; } else { - Events.one(_window2['default'], 'load', function () { + Events.one(_globalWindow2['default'], 'load', function () { _windowLoaded = true; }); } @@ -10635,35 +10440,37 @@ exports.autoSetup = autoSetup; exports.autoSetupTimeout = autoSetupTimeout; exports.hasLoaded = hasLoaded; -},{"./utils/events.js":112,"global/document":1,"global/window":2}],95:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"./utils/events.js":108,"global/document":1,"global/window":2}],91:[function(_dereq_,module,exports){ /** * @file slider.js */ +'use strict'; -var _Component2 = _dereq_('../component.js'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/dom.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Dom = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _document = _dereq_('global/document'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _document2 = _interopRequireWildcard(_document); +var _componentJs = _dereq_('../component.js'); -var _assign = _dereq_('object.assign'); +var _componentJs2 = _interopRequireDefault(_componentJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsDomJs = _dereq_('../utils/dom.js'); + +var Dom = _interopRequireWildcard(_utilsDomJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); /** * The base functionality for sliders like the volume bar and seek bar @@ -10675,6 +10482,8 @@ var _assign2 = _interopRequireWildcard(_assign); */ var Slider = (function (_Component) { + _inherits(Slider, _Component); + function Slider(player, options) { _classCallCheck(this, Slider); @@ -10696,8 +10505,6 @@ var Slider = (function (_Component) { this.on(player, this.playerEvent, this.update); } - _inherits(Slider, _Component); - /** * Create the component's DOM element * @@ -10708,12 +10515,12 @@ var Slider = (function (_Component) { */ Slider.prototype.createEl = function createEl(type) { - var props = arguments[1] === undefined ? {} : arguments[1]; + var props = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Add the slider element class to all sub classes props.className = props.className + ' vjs-slider'; - props = _assign2['default']({ - role: 'slider', + props = _objectAssign2['default']({ + 'role': 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, @@ -10735,10 +10542,10 @@ var Slider = (function (_Component) { Dom.blockTextSelection(); this.addClass('vjs-sliding'); - this.on(_document2['default'], 'mousemove', this.handleMouseMove); - this.on(_document2['default'], 'mouseup', this.handleMouseUp); - this.on(_document2['default'], 'touchmove', this.handleMouseMove); - this.on(_document2['default'], 'touchend', this.handleMouseUp); + this.on(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.on(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.on(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.handleMouseMove(event); }; @@ -10761,10 +10568,10 @@ var Slider = (function (_Component) { Dom.unblockTextSelection(); this.removeClass('vjs-sliding'); - this.off(_document2['default'], 'mousemove', this.handleMouseMove); - this.off(_document2['default'], 'mouseup', this.handleMouseUp); - this.off(_document2['default'], 'touchmove', this.handleMouseMove); - this.off(_document2['default'], 'touchend', this.handleMouseUp); + this.off(_globalDocument2['default'], 'mousemove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'mouseup', this.handleMouseUp); + this.off(_globalDocument2['default'], 'touchmove', this.handleMouseMove); + this.off(_globalDocument2['default'], 'touchend', this.handleMouseUp); this.update(); }; @@ -10778,18 +10585,18 @@ var Slider = (function (_Component) { Slider.prototype.update = function update() { // In VolumeBar init we have a setTimeout for update that pops and update to the end of the // execution stack. The player is destroyed before then update will cause an error - if (!this.el_) { - return; - } // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. + if (!this.el_) return; + + // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse. // On HTML5 browsers scrubbing is really smooth, but some flash players are slow, so we might want to utilize this later. // var progress = (this.player_.scrubbing()) ? this.player_.getCache().currentTime / this.player_.duration() : this.player_.currentTime() / this.player_.duration(); var progress = this.getPercent(); var bar = this.bar; // If there's no bar... - if (!bar) { - return; - } // Protect against no duration and other division issues + if (!bar) return; + + // Protect against no duration and other division issues if (typeof progress !== 'number' || progress !== progress || progress < 0 || progress === Infinity) { progress = 0; } @@ -10852,7 +10659,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleFocus = function handleFocus() { - this.on(_document2['default'], 'keydown', this.handleKeyPress); + this.on(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10881,7 +10688,7 @@ var Slider = (function (_Component) { */ Slider.prototype.handleBlur = function handleBlur() { - this.off(_document2['default'], 'keydown', this.handleKeyPress); + this.off(_globalDocument2['default'], 'keydown', this.handleKeyPress); }; /** @@ -10922,19 +10729,19 @@ var Slider = (function (_Component) { }; return Slider; -})(_Component3['default']); +})(_componentJs2['default']); -_Component3['default'].registerComponent('Slider', Slider); +_componentJs2['default'].registerComponent('Slider', Slider); exports['default'] = Slider; module.exports = exports['default']; -},{"../component.js":52,"../utils/dom.js":111,"global/document":1,"object.assign":44}],96:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component.js":48,"../utils/dom.js":107,"global/document":1,"object.assign":40}],92:[function(_dereq_,module,exports){ /** * @file flash-rtmp.js */ +'use strict'; + +exports.__esModule = true; function FlashRtmpDecorator(Flash) { Flash.streamingFormats = { 'rtmp/mp4': 'MP4', @@ -11015,8 +10822,8 @@ function FlashRtmpDecorator(Flash) { Flash.rtmpSourceHandler.handleSource = function (source, tech) { var srcParts = Flash.streamToParts(source.src); - tech.setRtmpConnection(srcParts.connection); - tech.setRtmpStream(srcParts.stream); + tech['setRtmpConnection'](srcParts.connection); + tech['setRtmpStream'](srcParts.stream); }; // Register the native source handler @@ -11028,16 +10835,7 @@ function FlashRtmpDecorator(Flash) { exports['default'] = FlashRtmpDecorator; module.exports = exports['default']; -},{}],97:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{}],93:[function(_dereq_,module,exports){ /** * @file flash.js * VideoJS-SWF - Custom Flash Player with HTML5-ish API @@ -11045,37 +10843,49 @@ exports.__esModule = true; * Not using setupTriggers. Using global onEvent func to distribute events */ -var _Tech2 = _dereq_('./tech'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _import = _dereq_('../utils/dom.js'); +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; } } -var Dom = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import2 = _dereq_('../utils/url.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Url = _interopRequireWildcard(_import2); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tech = _dereq_('./tech'); -var _FlashRtmpDecorator = _dereq_('./flash-rtmp'); +var _tech2 = _interopRequireDefault(_tech); -var _FlashRtmpDecorator2 = _interopRequireWildcard(_FlashRtmpDecorator); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _Component = _dereq_('../component'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var _window = _dereq_('global/window'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); -var _assign = _dereq_('object.assign'); +var _flashRtmp = _dereq_('./flash-rtmp'); -var _assign2 = _interopRequireWildcard(_assign); +var _flashRtmp2 = _interopRequireDefault(_flashRtmp); -var navigator = _window2['default'].navigator; +var _component = _dereq_('../component'); + +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var navigator = _globalWindow2['default'].navigator; /** * Flash Media Controller - Wrapper for fallback SWF API * @@ -11086,6 +10896,8 @@ var navigator = _window2['default'].navigator; */ var Flash = (function (_Tech) { + _inherits(Flash, _Tech); + function Flash(options, ready) { _classCallCheck(this, Flash); @@ -11112,18 +10924,18 @@ var Flash = (function (_Tech) { // A 4.x workflow we weren't able to solve for in 5.0 // because of the need to hard code these functions // into the swf for security reasons - _window2['default'].videojs = _window2['default'].videojs || {}; - _window2['default'].videojs.Flash = _window2['default'].videojs.Flash || {}; - _window2['default'].videojs.Flash.onReady = Flash.onReady; - _window2['default'].videojs.Flash.onEvent = Flash.onEvent; - _window2['default'].videojs.Flash.onError = Flash.onError; + _globalWindow2['default'].videojs = _globalWindow2['default'].videojs || {}; + _globalWindow2['default'].videojs.Flash = _globalWindow2['default'].videojs.Flash || {}; + _globalWindow2['default'].videojs.Flash.onReady = Flash.onReady; + _globalWindow2['default'].videojs.Flash.onEvent = Flash.onEvent; + _globalWindow2['default'].videojs.Flash.onError = Flash.onError; this.on('seeked', function () { this.lastSeekTarget_ = undefined; }); } - _inherits(Flash, _Tech); + // Create setters and getters for attributes /** * Create the component's DOM element @@ -11139,31 +10951,31 @@ var Flash = (function (_Tech) { var objId = options.techId; // Merge default flashvars with ones passed in to init - var flashVars = _assign2['default']({ + var flashVars = _objectAssign2['default']({ // SWF Callback Functions - readyFunction: 'videojs.Flash.onReady', - eventProxyFunction: 'videojs.Flash.onEvent', - errorEventProxyFunction: 'videojs.Flash.onError', + 'readyFunction': 'videojs.Flash.onReady', + 'eventProxyFunction': 'videojs.Flash.onEvent', + 'errorEventProxyFunction': 'videojs.Flash.onError', // Player Settings - autoplay: options.autoplay, - preload: options.preload, - loop: options.loop, - muted: options.muted + 'autoplay': options.autoplay, + 'preload': options.preload, + 'loop': options.loop, + 'muted': options.muted }, options.flashVars); // Merge default parames with ones passed in - var params = _assign2['default']({ - wmode: 'opaque', // Opaque is needed to overlay controls, but can affect playback performance - bgcolor: '#000000' // Using bgcolor prevents a white flash when the object is loading + var params = _objectAssign2['default']({ + 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance + 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading }, options.params); // Merge default attributes with ones passed in - var attributes = _assign2['default']({ - id: objId, - name: objId, // Both ID and Name needed or swf to identify itself + var attributes = _objectAssign2['default']({ + 'id': objId, + 'name': objId, // Both ID and Name needed or swf to identify itself 'class': 'vjs-tech' }, options.attributes); @@ -11180,6 +10992,9 @@ var Flash = (function (_Tech) { */ Flash.prototype.play = function play() { + if (this.ended()) { + this.setCurrentTime(0); + } this.el_.vjs_play(); }; @@ -11201,24 +11016,14 @@ var Flash = (function (_Tech) { * @method src */ - Flash.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Flash.prototype.src = function src(_src) { + if (_src === undefined) { return this.currentSrc(); } // Setting src through `src` not `setSrc` will be deprecated - return this.setSrc(src); - }); + return this.setSrc(_src); + }; /** * Set video @@ -11342,9 +11147,9 @@ var Flash = (function (_Tech) { Flash.prototype.seekable = function seekable() { var duration = this.duration(); if (duration === 0) { - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); } - return _createTimeRange.createTimeRange(0, duration); + return _utilsTimeRangesJs.createTimeRange(0, duration); }; /** @@ -11355,7 +11160,11 @@ var Flash = (function (_Tech) { */ Flash.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, this.el_.vjs_getProperty('buffered')); + var ranges = this.el_.vjs_getProperty('buffered'); + if (ranges.length === 0) { + return _utilsTimeRangesJs.createTimeRange(); + } + return _utilsTimeRangesJs.createTimeRange(ranges[0][0], ranges[0][1]); }; /** @@ -11385,12 +11194,11 @@ var Flash = (function (_Tech) { }; return Flash; -})(_Tech3['default']); +})(_tech2['default']); -// Create setters and getters for attributes var _api = Flash.prototype; var _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(','); -var _readOnly = 'error,networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); +var _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(','); function _createSetter(attr) { var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1); @@ -11423,7 +11231,7 @@ Flash.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Flash); +_tech2['default'].withSourceHandlers(Flash); /* * The default native source handler. @@ -11520,7 +11328,7 @@ Flash.checkReady = function (tech) { } else { // wait longer this.setTimeout(function () { - Flash.checkReady(tech); + Flash['checkReady'](tech); }, 50); } }; @@ -11534,15 +11342,14 @@ Flash.onEvent = function (swfID, eventName) { // Log errors from the swf Flash.onError = function (swfID, err) { var tech = Dom.getEl(swfID).tech; - var msg = 'FLASH: ' + err; + // trigger MEDIA_ERR_SRC_NOT_SUPPORTED if (err === 'srcnotfound') { - tech.trigger('error', { code: 4, message: msg }); - - // errors we haven't categorized into the media errors - } else { - tech.trigger('error', msg); + return tech.error(4); } + + // trigger a custom error + tech.error('FLASH: ' + err); }; // Flash Version Check @@ -11551,7 +11358,7 @@ Flash.version = function () { // IE try { - version = new _window2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; + version = new _globalWindow2['default'].ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; // other browsers } catch (e) { @@ -11583,16 +11390,16 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { // Convert flash vars to string if (flashVars) { Object.getOwnPropertyNames(flashVars).forEach(function (key) { - flashVarsString += '' + key + '=' + flashVars[key] + '&'; + flashVarsString += key + '=' + flashVars[key] + '&'; }); } // Add swf, flashVars, and other default params - params = _assign2['default']({ - movie: swf, - flashvars: flashVarsString, - allowScriptAccess: 'always', // Required to talk to swf - allowNetworking: 'all' // All should be default, but having security issues. + params = _objectAssign2['default']({ + 'movie': swf, + 'flashvars': flashVarsString, + 'allowScriptAccess': 'always', // Required to talk to swf + 'allowNetworking': 'all' // All should be default, but having security issues. }, params); // Create param tags string @@ -11600,89 +11407,92 @@ Flash.getEmbedCode = function (swf, flashVars, params, attributes) { paramsString += ''; }); - attributes = _assign2['default']({ + attributes = _objectAssign2['default']({ // Add swf to attributes (need both for IE and Others to work) - data: swf, + 'data': swf, // Default to 100% width/height - width: '100%', - height: '100%' + 'width': '100%', + 'height': '100%' }, attributes); // Create Attributes string Object.getOwnPropertyNames(attributes).forEach(function (key) { - attrsString += '' + key + '="' + attributes[key] + '" '; + attrsString += key + '="' + attributes[key] + '" '; }); - return '' + objTag + '' + attrsString + '>' + paramsString + ''; + return '' + objTag + attrsString + '>' + paramsString + ''; }; // Run Flash through the RTMP decorator -_FlashRtmpDecorator2['default'](Flash); +_flashRtmp2['default'](Flash); -_Component2['default'].registerComponent('Flash', Flash); +_component2['default'].registerComponent('Flash', Flash); exports['default'] = Flash; module.exports = exports['default']; -},{"../component":52,"../utils/dom.js":111,"../utils/time-ranges.js":119,"../utils/url.js":121,"./flash-rtmp":96,"./tech":100,"global/window":2,"object.assign":44}],98:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/dom.js":107,"../utils/time-ranges.js":115,"../utils/url.js":117,"./flash-rtmp":92,"./tech":96,"global/window":2,"object.assign":40}],94:[function(_dereq_,module,exports){ /** * @file html5.js * HTML5 Media Controller - Wrapper for HTML5 Media API */ -var _Tech2 = _dereq_('./tech.js'); +'use strict'; -var _Tech3 = _interopRequireWildcard(_Tech2); +exports.__esModule = true; -var _Component = _dereq_('../component'); +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; } } -var _Component2 = _interopRequireWildcard(_Component); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _import = _dereq_('../utils/dom.js'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var Dom = _interopRequireWildcard(_import); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import2 = _dereq_('../utils/url.js'); +var _techJs = _dereq_('./tech.js'); -var Url = _interopRequireWildcard(_import2); +var _techJs2 = _interopRequireDefault(_techJs); -var _import3 = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import3); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _utilsDomJs = _dereq_('../utils/dom.js'); -var _log2 = _interopRequireWildcard(_log); +var Dom = _interopRequireWildcard(_utilsDomJs); -var _import4 = _dereq_('../utils/browser.js'); +var _utilsUrlJs = _dereq_('../utils/url.js'); -var browser = _interopRequireWildcard(_import4); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _document = _dereq_('global/document'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document2 = _interopRequireWildcard(_document); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window = _dereq_('global/window'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _assign = _dereq_('object.assign'); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _assign2 = _interopRequireWildcard(_assign); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _mergeOptions = _dereq_('../utils/merge-options.js'); +var _globalDocument = _dereq_('global/document'); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _objectAssign = _dereq_('object.assign'); + +var _objectAssign2 = _interopRequireDefault(_objectAssign); + +var _utilsMergeOptionsJs = _dereq_('../utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); /** * HTML5 Media Controller - Wrapper for HTML5 Media API @@ -11694,6 +11504,8 @@ var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); */ var Html5 = (function (_Tech) { + _inherits(Html5, _Tech); + function Html5(options, ready) { _classCallCheck(this, Html5); @@ -11747,14 +11559,22 @@ var Html5 = (function (_Tech) { // Our goal should be to get the custom controls on mobile solid everywhere // so we can remove this all together. Right now this will block custom // controls on touch enabled laptops like the Chrome Pixel - if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true) { - this.trigger('usenativecontrols'); + if (browser.TOUCH_ENABLED && options.nativeControlsForTouch === true || browser.IS_IPHONE || browser.IS_NATIVE_ANDROID) { + this.setControls(true); } this.triggerReady(); } - _inherits(Html5, _Tech); + /* HTML5 Support Testing ---------------------------------------------------- */ + + /* + * Element for testing browser HTML5 video capabilities + * + * @type {Element} + * @constant + * @private + */ /** * Dispose of html5 media element @@ -11797,7 +11617,7 @@ var Html5 = (function (_Tech) { // Check if this browser supports moving the element into the box. // On the iPhone video will break if you move the element, // So we have to create a brand new element. - if (!el || this.movingMediaElementInDOM === false) { + if (!el || this['movingMediaElementInDOM'] === false) { // If the original tag is still there, clone and remove it. if (el) { @@ -11806,16 +11626,16 @@ var Html5 = (function (_Tech) { Html5.disposeMediaElement(el); el = clone; } else { - el = _document2['default'].createElement('video'); + el = _globalDocument2['default'].createElement('video'); // determine if native controls should be used var tagAttributes = this.options_.tag && Dom.getElAttributes(this.options_.tag); - var attributes = _mergeOptions2['default']({}, tagAttributes); + var attributes = _utilsMergeOptionsJs2['default']({}, tagAttributes); if (!browser.TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) { delete attributes.controls; } - Dom.setElAttributes(el, _assign2['default'](attributes, { + Dom.setElAttributes(el, _objectAssign2['default'](attributes, { id: this.options_.techId, 'class': 'vjs-tech' })); @@ -11918,7 +11738,7 @@ var Html5 = (function (_Tech) { try { this.el_.currentTime = seconds; } catch (e) { - _log2['default'](e, 'Video is not ready. (Video.js)'); + _utilsLogJs2['default'](e, 'Video is not ready. (Video.js)'); // this.warning(VideoJS.warnings.videoNotReady); } }; @@ -12022,7 +11842,7 @@ var Html5 = (function (_Tech) { Html5.prototype.supportsFullScreen = function supportsFullScreen() { if (typeof this.el_.webkitEnterFullScreen === 'function') { - var userAgent = _window2['default'].navigator.userAgent; + var userAgent = _globalWindow2['default'].navigator.userAgent; // Seems to be broken in Chromium/Chrome && Safari in Leopard if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) { return true; @@ -12084,24 +11904,14 @@ var Html5 = (function (_Tech) { * @method src */ - Html5.prototype.src = (function (_src) { - function src(_x) { - return _src.apply(this, arguments); - } - - src.toString = function () { - return _src.toString(); - }; - - return src; - })(function (src) { - if (src === undefined) { + Html5.prototype.src = function src(_src) { + if (_src === undefined) { return this.el_.src; } else { // Setting src through `src` instead of `setSrc` will be deprecated - this.setSrc(src); + this.setSrc(_src); } - }); + }; /** * Set video @@ -12418,7 +12228,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addTextTrack = function addTextTrack(kind, label, language) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addTextTrack.call(this, kind, label, language); } @@ -12435,31 +12245,31 @@ var Html5 = (function (_Tech) { */ Html5.prototype.addRemoteTextTrack = function addRemoteTextTrack() { - var options = arguments[0] === undefined ? {} : arguments[0]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.addRemoteTextTrack.call(this, options); } - var track = _document2['default'].createElement('track'); + var track = _globalDocument2['default'].createElement('track'); - if (options.kind) { - track.kind = options.kind; + if (options['kind']) { + track['kind'] = options['kind']; } - if (options.label) { - track.label = options.label; + if (options['label']) { + track['label'] = options['label']; } - if (options.language || options.srclang) { - track.srclang = options.language || options.srclang; + if (options['language'] || options['srclang']) { + track['srclang'] = options['language'] || options['srclang']; } if (options['default']) { track['default'] = options['default']; } - if (options.id) { - track.id = options.id; + if (options['id']) { + track['id'] = options['id']; } - if (options.src) { - track.src = options.src; + if (options['src']) { + track['src'] = options['src']; } this.el().appendChild(track); @@ -12477,7 +12287,7 @@ var Html5 = (function (_Tech) { */ Html5.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - if (!this.featuresNativeTextTracks) { + if (!this['featuresNativeTextTracks']) { return _Tech.prototype.removeRemoteTextTrack.call(this, track); } @@ -12496,19 +12306,10 @@ var Html5 = (function (_Tech) { }; return Html5; -})(_Tech3['default']); +})(_techJs2['default']); -/* HTML5 Support Testing ---------------------------------------------------- */ - -/* -* Element for testing browser HTML5 video capabilities -* -* @type {Element} -* @constant -* @private -*/ -Html5.TEST_VID = _document2['default'].createElement('video'); -var track = _document2['default'].createElement('track'); +Html5.TEST_VID = _globalDocument2['default'].createElement('video'); +var track = _globalDocument2['default'].createElement('track'); track.kind = 'captions'; track.srclang = 'en'; track.label = 'English'; @@ -12522,7 +12323,7 @@ Html5.TEST_VID.appendChild(track); Html5.isSupported = function () { // IE9 with no Media Player is a LIAR! (#984) try { - Html5.TEST_VID.volume = 0.5; + Html5.TEST_VID['volume'] = 0.5; } catch (e) { return false; } @@ -12531,7 +12332,7 @@ Html5.isSupported = function () { }; // Add Source Handler pattern functions to this tech -_Tech3['default'].withSourceHandlers(Html5); +_techJs2['default'].withSourceHandlers(Html5); /* * The default native source handler. @@ -12634,7 +12435,7 @@ Html5.supportsNativeTextTracks = function () { // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862 supportsTextTracks = !!Html5.TEST_VID.textTracks; if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) { - supportsTextTracks = typeof Html5.TEST_VID.textTracks[0].mode !== 'number'; + supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number'; } if (supportsTextTracks && browser.IS_FIREFOX) { supportsTextTracks = false; @@ -12659,14 +12460,14 @@ Html5.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', * * @type {Boolean} */ -Html5.prototype.featuresVolumeControl = Html5.canControlVolume(); +Html5.prototype['featuresVolumeControl'] = Html5.canControlVolume(); /* * Set the tech's playbackRate support status * * @type {Boolean} */ -Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); +Html5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate(); /* * Set the tech's status on moving the video element. @@ -12674,27 +12475,27 @@ Html5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate(); * * @type {Boolean} */ -Html5.prototype.movingMediaElementInDOM = !browser.IS_IOS; +Html5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS; /* * Set the the tech's fullscreen resize support status. * HTML video is able to automatically resize when going to fullscreen. * (No longer appears to be used. Can probably be removed.) */ -Html5.prototype.featuresFullscreenResize = true; +Html5.prototype['featuresFullscreenResize'] = true; /* * Set the tech's progress event support status * (this disables the manual progress events of the Tech) */ -Html5.prototype.featuresProgressEvents = true; +Html5.prototype['featuresProgressEvents'] = true; /* * Sets the tech's status on native text track support * * @type {Boolean} */ -Html5.prototype.featuresNativeTextTracks = Html5.supportsNativeTextTracks(); +Html5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks(); // HTML5 Feature detection and Device Fixes --------------------------------- // var canPlayType = undefined; @@ -12703,7 +12504,7 @@ var mp4RE = /^video\/mp4/i; Html5.patchCanPlayType = function () { // Android 4.0 and above can play HLS to some extent but it reports being unable to do so - if (browser.ANDROID_VERSION >= 4) { + if (browser.ANDROID_VERSION >= 4.0) { if (!canPlayType) { canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; } @@ -12766,42 +12567,42 @@ Html5.disposeMediaElement = function (el) { (function () { try { el.load(); - } catch (e) {} + } catch (e) { + // not supported + } })(); } }; -_Component2['default'].registerComponent('Html5', Html5); +_component2['default'].registerComponent('Html5', Html5); exports['default'] = Html5; module.exports = exports['default']; -// not supported - -},{"../component":52,"../utils/browser.js":108,"../utils/dom.js":111,"../utils/fn.js":113,"../utils/log.js":116,"../utils/merge-options.js":117,"../utils/url.js":121,"./tech.js":100,"global/document":1,"global/window":2,"object.assign":44}],99:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/browser.js":104,"../utils/dom.js":107,"../utils/fn.js":109,"../utils/log.js":112,"../utils/merge-options.js":113,"../utils/url.js":117,"./tech.js":96,"global/document":1,"global/window":2,"object.assign":40}],95:[function(_dereq_,module,exports){ /** * @file loader.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _window2 = _interopRequireWildcard(_window); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _toTitleCase = _dereq_('../utils/to-title-case.js'); +var _component = _dereq_('../component'); -var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); +var _component2 = _interopRequireDefault(_component); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _utilsToTitleCaseJs = _dereq_('../utils/to-title-case.js'); + +var _utilsToTitleCaseJs2 = _interopRequireDefault(_utilsToTitleCaseJs); /** * The Media Loader is the component that decides which playback technology to load @@ -12815,6 +12616,8 @@ var _toTitleCase2 = _interopRequireWildcard(_toTitleCase); */ var MediaLoader = (function (_Component) { + _inherits(MediaLoader, _Component); + function MediaLoader(player, options, ready) { _classCallCheck(this, MediaLoader); @@ -12823,10 +12626,10 @@ var MediaLoader = (function (_Component) { // If there are no sources when the player is initialized, // load the first supported playback technology. - if (!options.playerOptions.sources || options.playerOptions.sources.length === 0) { - for (var i = 0, j = options.playerOptions.techOrder; i < j.length; i++) { - var techName = _toTitleCase2['default'](j[i]); - var tech = _Component3['default'].getComponent(techName); + if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) { + for (var i = 0, j = options.playerOptions['techOrder']; i < j.length; i++) { + var techName = _utilsToTitleCaseJs2['default'](j[i]); + var tech = _component2['default'].getComponent(techName); // Check if the browser supports this technology if (tech && tech.isSupported()) { @@ -12839,66 +12642,71 @@ var MediaLoader = (function (_Component) { // // Then load the best source. // // A few assumptions here: // // All playback technologies respect preload false. - player.src(options.playerOptions.sources); + player.src(options.playerOptions['sources']); } } - _inherits(MediaLoader, _Component); - return MediaLoader; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('MediaLoader', MediaLoader); +_component2['default'].registerComponent('MediaLoader', MediaLoader); exports['default'] = MediaLoader; module.exports = exports['default']; -},{"../component":52,"../utils/to-title-case.js":120,"global/window":2}],100:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../component":48,"../utils/to-title-case.js":116,"global/window":2}],96:[function(_dereq_,module,exports){ /** * @file tech.js * Media Technology Controller - Base class for media playback * technology controllers like Flash and HTML5 */ -var _Component2 = _dereq_('../component'); +'use strict'; -var _Component3 = _interopRequireWildcard(_Component2); +exports.__esModule = true; -var _TextTrack = _dereq_('../tracks/text-track'); +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; } } -var _TextTrack2 = _interopRequireWildcard(_TextTrack); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _TextTrackList = _dereq_('../tracks/text-track-list'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _TextTrackList2 = _interopRequireWildcard(_TextTrackList); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _import = _dereq_('../utils/fn.js'); +var _component = _dereq_('../component'); -var Fn = _interopRequireWildcard(_import); +var _component2 = _interopRequireDefault(_component); -var _log = _dereq_('../utils/log.js'); +var _tracksTextTrack = _dereq_('../tracks/text-track'); -var _log2 = _interopRequireWildcard(_log); +var _tracksTextTrack2 = _interopRequireDefault(_tracksTextTrack); -var _createTimeRange = _dereq_('../utils/time-ranges.js'); +var _tracksTextTrackList = _dereq_('../tracks/text-track-list'); -var _bufferedPercent2 = _dereq_('../utils/buffer.js'); +var _tracksTextTrackList2 = _interopRequireDefault(_tracksTextTrackList); -var _window = _dereq_('global/window'); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window2 = _interopRequireWildcard(_window); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document = _dereq_('global/document'); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document2 = _interopRequireWildcard(_document); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _utilsTimeRangesJs = _dereq_('../utils/time-ranges.js'); + +var _utilsBufferJs = _dereq_('../utils/buffer.js'); + +var _mediaErrorJs = _dereq_('../media-error.js'); + +var _mediaErrorJs2 = _interopRequireDefault(_mediaErrorJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Base class for media (HTML5 Video, Flash) controllers @@ -12910,9 +12718,11 @@ var _document2 = _interopRequireWildcard(_document); */ var Tech = (function (_Component) { + _inherits(Tech, _Component); + function Tech() { - var options = arguments[0] === undefined ? {} : arguments[0]; - var ready = arguments[1] === undefined ? function () {} : arguments[1]; + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var ready = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1]; _classCallCheck(this, Tech); @@ -12959,7 +12769,12 @@ var Tech = (function (_Component) { this.emitTapEvents(); } - _inherits(Tech, _Component); + /* + * List of associated text tracks + * + * @type {Array} + * @private + */ /** * Set up click and touch listeners for the playback element @@ -13070,7 +12885,7 @@ var Tech = (function (_Component) { */ Tech.prototype.buffered = function buffered() { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); }; /** @@ -13080,19 +12895,9 @@ var Tech = (function (_Component) { * @method bufferedPercent */ - Tech.prototype.bufferedPercent = (function (_bufferedPercent) { - function bufferedPercent() { - return _bufferedPercent.apply(this, arguments); - } - - bufferedPercent.toString = function () { - return _bufferedPercent.toString(); - }; - - return bufferedPercent; - })(function () { - return _bufferedPercent2.bufferedPercent(this.buffered(), this.duration_); - }); + Tech.prototype.bufferedPercent = function bufferedPercent() { + return _utilsBufferJs.bufferedPercent(this.buffered(), this.duration_); + }; /** * Stops tracking progress by clearing progress interval @@ -13168,10 +12973,13 @@ var Tech = (function (_Component) { Tech.prototype.dispose = function dispose() { // clear out text tracks because we can't reuse them between techs - var tt = this.textTracks(); - var i = tt.length; - while (i--) { - this.removeRemoteTextTrack(tt[i]); + var textTracks = this.textTracks(); + + if (textTracks) { + var i = textTracks.length; + while (i--) { + this.removeRemoteTextTrack(textTracks[i]); + } } // Turn off any manual progress or timeupdate tracking @@ -13186,6 +12994,28 @@ var Tech = (function (_Component) { _Component.prototype.dispose.call(this); }; + /** + * When invoked without an argument, returns a MediaError object + * representing the current error state of the player or null if + * there is no error. When invoked with an argument, set the current + * error state of the player. + * @param {MediaError=} err Optional an error object + * @return {MediaError} the current error object or null + * @method error + */ + + Tech.prototype.error = function error(err) { + if (err !== undefined) { + if (err instanceof _mediaErrorJs2['default']) { + this.error_ = err; + } else { + this.error_ = new _mediaErrorJs2['default'](err); + } + this.trigger('error'); + } + return this.error_; + }; + /** * Return the time ranges that have been played through for the * current source. This implementation is incomplete. It does not @@ -13198,9 +13028,9 @@ var Tech = (function (_Component) { Tech.prototype.played = function played() { if (this.hasStarted_) { - return _createTimeRange.createTimeRange(0, 0); + return _utilsTimeRangesJs.createTimeRange(0, 0); } - return _createTimeRange.createTimeRange(); + return _utilsTimeRangesJs.createTimeRange(); }; /** @@ -13229,9 +13059,9 @@ var Tech = (function (_Component) { var tracks = this.textTracks(); - if (!tracks) { - return; - }tracks.addEventListener('removetrack', textTrackListChanges); + if (!tracks) return; + + tracks.addEventListener('removetrack', textTrackListChanges); tracks.addEventListener('addtrack', textTrackListChanges); this.on('dispose', Fn.bind(this, function () { @@ -13247,11 +13077,11 @@ var Tech = (function (_Component) { */ Tech.prototype.emulateTextTracks = function emulateTextTracks() { - if (!_window2['default'].WebVTT && this.el().parentNode != null) { - var script = _document2['default'].createElement('script'); + if (!_globalWindow2['default']['WebVTT'] && this.el().parentNode != null) { + var script = _globalDocument2['default'].createElement('script'); script.src = this.options_['vtt.js'] || '../node_modules/vtt.js/dist/vtt.js'; this.el().parentNode.appendChild(script); - _window2['default'].WebVTT = true; + _globalWindow2['default']['WebVTT'] = true; } var tracks = this.textTracks(); @@ -13298,7 +13128,7 @@ var Tech = (function (_Component) { */ Tech.prototype.textTracks = function textTracks() { - this.textTracks_ = this.textTracks_ || new _TextTrackList2['default'](); + this.textTracks_ = this.textTracks_ || new _tracksTextTrackList2['default'](); return this.textTracks_; }; @@ -13310,7 +13140,7 @@ var Tech = (function (_Component) { */ Tech.prototype.remoteTextTracks = function remoteTextTracks() { - this.remoteTextTracks_ = this.remoteTextTracks_ || new _TextTrackList2['default'](); + this.remoteTextTracks_ = this.remoteTextTracks_ || new _tracksTextTrackList2['default'](); return this.remoteTextTracks_; }; @@ -13373,18 +13203,12 @@ var Tech = (function (_Component) { Tech.prototype.setPoster = function setPoster() {}; return Tech; -})(_Component3['default']); +})(_component2['default']); -/* - * List of associated text tracks - * - * @type {Array} - * @private - */ Tech.prototype.textTracks_; var createTrackHelper = function createTrackHelper(self, kind, label, language) { - var options = arguments[4] === undefined ? {} : arguments[4]; + var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4]; var tracks = self.textTracks(); @@ -13398,7 +13222,7 @@ var createTrackHelper = function createTrackHelper(self, kind, label, language) } options.tech = self; - var track = new _TextTrack2['default'](options); + var track = new _tracksTextTrack2['default'](options); tracks.addTrack_(track); return track; @@ -13513,7 +13337,7 @@ Tech.withSourceHandlers = function (_Tech) { if (_Tech.nativeSourceHandler) { sh = _Tech.nativeSourceHandler; } else { - _log2['default'].error('No source hander found for the current source.'); + _utilsLogJs2['default'].error('No source hander found for the current source.'); } } @@ -13538,29 +13362,31 @@ Tech.withSourceHandlers = function (_Tech) { }; }; -_Component3['default'].registerComponent('Tech', Tech); +_component2['default'].registerComponent('Tech', Tech); // Old name for Tech -_Component3['default'].registerComponent('MediaTechController', Tech); +_component2['default'].registerComponent('MediaTechController', Tech); exports['default'] = Tech; module.exports = exports['default']; -},{"../component":52,"../tracks/text-track":107,"../tracks/text-track-list":105,"../utils/buffer.js":109,"../utils/fn.js":113,"../utils/log.js":116,"../utils/time-ranges.js":119,"global/document":1,"global/window":2}],101:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../media-error.js":83,"../tracks/text-track":103,"../tracks/text-track-list":101,"../utils/buffer.js":105,"../utils/fn.js":109,"../utils/log.js":112,"../utils/time-ranges.js":115,"global/document":1,"global/window":2}],97:[function(_dereq_,module,exports){ /** * @file text-track-cue-list.js */ +'use strict'; -var _import = _dereq_('../utils/browser.js'); +exports.__esModule = true; -var browser = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document = _dereq_('global/document'); +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; } } -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist @@ -13572,21 +13398,11 @@ var _document2 = _interopRequireWildcard(_document); * }; */ -var TextTrackCueList = (function (_TextTrackCueList) { - function TextTrackCueList(_x) { - return _TextTrackCueList.apply(this, arguments); - } - - TextTrackCueList.toString = function () { - return _TextTrackCueList.toString(); - }; - - return TextTrackCueList; -})(function (cues) { +var TextTrackCueList = function TextTrackCueList(cues) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackCueList.prototype) { list[prop] = TextTrackCueList.prototype[prop]; @@ -13604,7 +13420,7 @@ var TextTrackCueList = (function (_TextTrackCueList) { if (browser.IS_IE8) { return list; } -}); +}; TextTrackCueList.prototype.setCues_ = function (cues) { var oldLength = this.length || 0; @@ -13649,47 +13465,49 @@ TextTrackCueList.prototype.getCueById = function (id) { exports['default'] = TextTrackCueList; module.exports = exports['default']; -},{"../utils/browser.js":108,"global/document":1}],102:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../utils/browser.js":104,"global/document":1}],98:[function(_dereq_,module,exports){ /** * @file text-track-display.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _Menu = _dereq_('../menu/menu.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Menu2 = _interopRequireWildcard(_Menu); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _MenuItem = _dereq_('../menu/menu-item.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _MenuItem2 = _interopRequireWildcard(_MenuItem); +var _component = _dereq_('../component'); -var _MenuButton = _dereq_('../menu/menu-button.js'); +var _component2 = _interopRequireDefault(_component); -var _MenuButton2 = _interopRequireWildcard(_MenuButton); +var _menuMenuJs = _dereq_('../menu/menu.js'); -var _import = _dereq_('../utils/fn.js'); +var _menuMenuJs2 = _interopRequireDefault(_menuMenuJs); -var Fn = _interopRequireWildcard(_import); +var _menuMenuItemJs = _dereq_('../menu/menu-item.js'); -var _document = _dereq_('global/document'); +var _menuMenuItemJs2 = _interopRequireDefault(_menuMenuItemJs); -var _document2 = _interopRequireWildcard(_document); +var _menuMenuButtonJs = _dereq_('../menu/menu-button.js'); -var _window = _dereq_('global/window'); +var _menuMenuButtonJs2 = _interopRequireDefault(_menuMenuButtonJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsFnJs = _dereq_('../utils/fn.js'); + +var Fn = _interopRequireWildcard(_utilsFnJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); var darkGray = '#222'; var lightGray = '#ccc'; @@ -13717,6 +13535,8 @@ var fontMap = { */ var TextTrackDisplay = (function (_Component) { + _inherits(TextTrackDisplay, _Component); + function TextTrackDisplay(player, options, ready) { _classCallCheck(this, TextTrackDisplay); @@ -13730,14 +13550,14 @@ var TextTrackDisplay = (function (_Component) { // Should probably be moved to an external track loader when we support // tracks that don't need a display. player.ready(Fn.bind(this, function () { - if (player.tech && player.tech.featuresNativeTextTracks) { + if (player.tech && player.tech['featuresNativeTextTracks']) { this.hide(); return; } player.on('fullscreenchange', Fn.bind(this, this.updateDisplay)); - var tracks = this.options_.playerOptions.tracks || []; + var tracks = this.options_.playerOptions['tracks'] || []; for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; this.player_.addRemoteTextTrack(track); @@ -13745,7 +13565,14 @@ var TextTrackDisplay = (function (_Component) { })); } - _inherits(TextTrackDisplay, _Component); + /** + * Add cue HTML to display + * + * @param {Number} color Hex number for color, like #f0e + * @param {Number} opacity Value for opacity,0.0 - 1.0 + * @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' + * @method constructColor + */ /** * Toggle display texttracks @@ -13754,7 +13581,7 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.toggleDisplay = function toggleDisplay() { - if (this.player_.tech && this.player_.tech.featuresNativeTextTracks) { + if (this.player_.tech && this.player_.tech['featuresNativeTextTracks']) { this.hide(); } else { this.show(); @@ -13781,8 +13608,8 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.clearDisplay = function clearDisplay() { - if (typeof _window2['default'].WebVTT === 'function') { - _window2['default'].WebVTT.processCues(_window2['default'], [], this.el_); + if (typeof _globalWindow2['default']['WebVTT'] === 'function') { + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], [], this.el_); } }; @@ -13803,7 +13630,7 @@ var TextTrackDisplay = (function (_Component) { for (var i = 0; i < tracks.length; i++) { var track = tracks[i]; - if (track.mode === 'showing') { + if (track['mode'] === 'showing') { this.updateForTrack(track); } } @@ -13817,18 +13644,18 @@ var TextTrackDisplay = (function (_Component) { */ TextTrackDisplay.prototype.updateForTrack = function updateForTrack(track) { - if (typeof _window2['default'].WebVTT !== 'function' || !track.activeCues) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function' || !track['activeCues']) { return; } - var overrides = this.player_.textTrackSettings.getValues(); + var overrides = this.player_['textTrackSettings'].getValues(); var cues = []; - for (var _i = 0; _i < track.activeCues.length; _i++) { - cues.push(track.activeCues[_i]); + for (var _i = 0; _i < track['activeCues'].length; _i++) { + cues.push(track['activeCues'][_i]); } - _window2['default'].WebVTT.processCues(_window2['default'], track.activeCues, this.el_); + _globalWindow2['default']['WebVTT']['processCues'](_globalWindow2['default'], track['activeCues'], this.el_); var i = cues.length; while (i--) { @@ -13864,7 +13691,7 @@ var TextTrackDisplay = (function (_Component) { } } if (overrides.fontPercent && overrides.fontPercent !== 1) { - var fontSize = _window2['default'].parseFloat(cueDiv.style.fontSize); + var fontSize = _globalWindow2['default'].parseFloat(cueDiv.style.fontSize); cueDiv.style.fontSize = fontSize * overrides.fontPercent + 'px'; cueDiv.style.height = 'auto'; cueDiv.style.top = 'auto'; @@ -13881,16 +13708,8 @@ var TextTrackDisplay = (function (_Component) { }; return TextTrackDisplay; -})(_Component3['default']); +})(_component2['default']); -/** -* Add cue HTML to display -* -* @param {Number} color Hex number for color, like #f0e -* @param {Number} opacity Value for opacity,0.0 - 1.0 -* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)' -* @method constructColor -*/ function constructColor(color, opacity) { return 'rgba(' + // color looks like "#f0e" @@ -13913,14 +13732,11 @@ function tryUpdateStyle(el, style, rule) { } catch (e) {} } -_Component3['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); +_component2['default'].registerComponent('TextTrackDisplay', TextTrackDisplay); exports['default'] = TextTrackDisplay; module.exports = exports['default']; -},{"../component":52,"../menu/menu-button.js":88,"../menu/menu-item.js":89,"../menu/menu.js":90,"../utils/fn.js":113,"global/document":1,"global/window":2}],103:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"../component":48,"../menu/menu-button.js":84,"../menu/menu-item.js":85,"../menu/menu.js":86,"../utils/fn.js":109,"global/document":1,"global/window":2}],99:[function(_dereq_,module,exports){ /** * @file text-track-enums.js * @@ -13928,10 +13744,13 @@ exports.__esModule = true; * * enum TextTrackMode { "disabled", "hidden", "showing" }; */ +'use strict'; + +exports.__esModule = true; var TextTrackMode = { - disabled: 'disabled', - hidden: 'hidden', - showing: 'showing' + 'disabled': 'disabled', + 'hidden': 'hidden', + 'showing': 'showing' }; /* @@ -13940,20 +13759,17 @@ var TextTrackMode = { * enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; */ var TextTrackKind = { - subtitles: 'subtitles', - captions: 'captions', - descriptions: 'descriptions', - chapters: 'chapters', - metadata: 'metadata' + 'subtitles': 'subtitles', + 'captions': 'captions', + 'descriptions': 'descriptions', + 'chapters': 'chapters', + 'metadata': 'metadata' }; exports.TextTrackMode = TextTrackMode; exports.TextTrackKind = TextTrackKind; -},{}],104:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{}],100:[function(_dereq_,module,exports){ /** * Utilities for capturing text track state and re-creating tracks * based on a capture. @@ -13968,6 +13784,9 @@ exports.__esModule = true; * @return {Object} a serializable javascript representation of the * @private */ +'use strict'; + +exports.__esModule = true; var trackToJson_ = function trackToJson_(track) { return { kind: track.kind, @@ -14037,31 +13856,33 @@ var jsonToTextTracks = function jsonToTextTracks(json, tech) { exports['default'] = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ }; module.exports = exports['default']; -},{}],105:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],101:[function(_dereq_,module,exports){ /** * @file text-track-list.js */ +'use strict'; -var _EventTarget = _dereq_('../event-target'); +exports.__esModule = true; -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _eventTarget = _dereq_('../event-target'); -var _import2 = _dereq_('../utils/browser.js'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var browser = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _document = _dereq_('global/document'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _document2 = _interopRequireWildcard(_document); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); + +var browser = _interopRequireWildcard(_utilsBrowserJs); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist @@ -14076,21 +13897,11 @@ var _document2 = _interopRequireWildcard(_document); * attribute EventHandler onremovetrack; * }; */ -var TextTrackList = (function (_TextTrackList) { - function TextTrackList(_x) { - return _TextTrackList.apply(this, arguments); - } - - TextTrackList.toString = function () { - return _TextTrackList.toString(); - }; - - return TextTrackList; -})(function (tracks) { +var TextTrackList = function TextTrackList(tracks) { var list = this; if (browser.IS_IE8) { - list = _document2['default'].createElement('custom'); + list = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrackList.prototype) { list[prop] = TextTrackList.prototype[prop]; @@ -14113,9 +13924,9 @@ var TextTrackList = (function (_TextTrackList) { if (browser.IS_IE8) { return list; } -}); +}; -TextTrackList.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrackList.prototype = Object.create(_eventTarget2['default'].prototype); TextTrackList.prototype.constructor = TextTrackList; /* @@ -14124,9 +13935,9 @@ TextTrackList.prototype.constructor = TextTrackList; * removetrack - A track has been removed from the track list. */ TextTrackList.prototype.allowedEvents_ = { - change: 'change', - addtrack: 'addtrack', - removetrack: 'removetrack' + 'change': 'change', + 'addtrack': 'addtrack', + 'removetrack': 'removetrack' }; // emulate attribute EventHandler support to allow for feature detection @@ -14190,43 +14001,45 @@ TextTrackList.prototype.getTrackById = function (id) { exports['default'] = TextTrackList; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"global/document":1}],106:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; - -var _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"global/document":1}],102:[function(_dereq_,module,exports){ /** * @file text-track-settings.js */ +'use strict'; -var _Component2 = _dereq_('../component'); +exports.__esModule = true; -var _Component3 = _interopRequireWildcard(_Component2); +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; } } -var _import = _dereq_('../utils/events.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Events = _interopRequireWildcard(_import); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _import2 = _dereq_('../utils/fn.js'); +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Fn = _interopRequireWildcard(_import2); +var _component = _dereq_('../component'); -var _log = _dereq_('../utils/log.js'); +var _component2 = _interopRequireDefault(_component); -var _log2 = _interopRequireWildcard(_log); +var _utilsEventsJs = _dereq_('../utils/events.js'); -var _safeParseTuple2 = _dereq_('safe-json-parse/tuple'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _safeParseTuple3 = _interopRequireWildcard(_safeParseTuple2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _window = _dereq_('global/window'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsLogJs = _dereq_('../utils/log.js'); + +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); + +var _safeJsonParseTuple = _dereq_('safe-json-parse/tuple'); + +var _safeJsonParseTuple2 = _interopRequireDefault(_safeJsonParseTuple); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Manipulate settings of texttracks @@ -14238,6 +14051,8 @@ var _window2 = _interopRequireWildcard(_window); */ var TextTrackSettings = (function (_Component) { + _inherits(TextTrackSettings, _Component); + function TextTrackSettings(player, options) { _classCallCheck(this, TextTrackSettings); @@ -14282,8 +14097,6 @@ var TextTrackSettings = (function (_Component) { } } - _inherits(TextTrackSettings, _Component); - /** * Create the component's DOM element * @@ -14325,21 +14138,21 @@ var TextTrackSettings = (function (_Component) { var bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select')); var windowColor = getSelectedOptionValue(el.querySelector('.window-color > select')); var windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select')); - var fontPercent = _window2['default'].parseFloat(getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); + var fontPercent = _globalWindow2['default']['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select'))); var result = { - backgroundOpacity: bgOpacity, - textOpacity: textOpacity, - windowOpacity: windowOpacity, - edgeStyle: textEdge, - fontFamily: fontFamily, - color: fgColor, - backgroundColor: bgColor, - windowColor: windowColor, - fontPercent: fontPercent + 'backgroundOpacity': bgOpacity, + 'textOpacity': textOpacity, + 'windowOpacity': windowOpacity, + 'edgeStyle': textEdge, + 'fontFamily': fontFamily, + 'color': fgColor, + 'backgroundColor': bgColor, + 'windowColor': windowColor, + 'fontPercent': fontPercent }; for (var _name in result) { - if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1) { + if (result[_name] === '' || result[_name] === 'none' || _name === 'fontPercent' && result[_name] === 1.00) { delete result[_name]; } } @@ -14390,13 +14203,13 @@ var TextTrackSettings = (function (_Component) { */ TextTrackSettings.prototype.restoreSettings = function restoreSettings() { - var _safeParseTuple = _safeParseTuple3['default'](_window2['default'].localStorage.getItem('vjs-text-track-settings')); + var _safeParseTuple = _safeJsonParseTuple2['default'](_globalWindow2['default'].localStorage.getItem('vjs-text-track-settings')); var err = _safeParseTuple[0]; var values = _safeParseTuple[1]; if (err) { - _log2['default'].error(err); + _utilsLogJs2['default'].error(err); } if (values) { @@ -14418,9 +14231,9 @@ var TextTrackSettings = (function (_Component) { var values = this.getValues(); try { if (Object.getOwnPropertyNames(values).length > 0) { - _window2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); + _globalWindow2['default'].localStorage.setItem('vjs-text-track-settings', JSON.stringify(values)); } else { - _window2['default'].localStorage.removeItem('vjs-text-track-settings'); + _globalWindow2['default'].localStorage.removeItem('vjs-text-track-settings'); } } catch (e) {} }; @@ -14439,9 +14252,9 @@ var TextTrackSettings = (function (_Component) { }; return TextTrackSettings; -})(_Component3['default']); +})(_component2['default']); -_Component3['default'].registerComponent('TextTrackSettings', TextTrackSettings); +_component2['default'].registerComponent('TextTrackSettings', TextTrackSettings); function getSelectedOptionValue(target) { var selectedOption = undefined; @@ -14480,55 +14293,57 @@ function captionOptionsMenuTemplate() { exports['default'] = TextTrackSettings; module.exports = exports['default']; -},{"../component":52,"../utils/events.js":112,"../utils/fn.js":113,"../utils/log.js":116,"global/window":2,"safe-json-parse/tuple":49}],107:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../component":48,"../utils/events.js":108,"../utils/fn.js":109,"../utils/log.js":112,"global/window":2,"safe-json-parse/tuple":45}],103:[function(_dereq_,module,exports){ /** * @file text-track.js */ +'use strict'; -var _TextTrackCueList = _dereq_('./text-track-cue-list'); +exports.__esModule = true; -var _TextTrackCueList2 = _interopRequireWildcard(_TextTrackCueList); +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; } } -var _import = _dereq_('../utils/fn.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var Fn = _interopRequireWildcard(_import); +var _textTrackCueList = _dereq_('./text-track-cue-list'); -var _import2 = _dereq_('../utils/guid.js'); +var _textTrackCueList2 = _interopRequireDefault(_textTrackCueList); -var Guid = _interopRequireWildcard(_import2); +var _utilsFnJs = _dereq_('../utils/fn.js'); -var _import3 = _dereq_('../utils/browser.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var browser = _interopRequireWildcard(_import3); +var _utilsGuidJs = _dereq_('../utils/guid.js'); -var _import4 = _dereq_('./text-track-enums'); +var Guid = _interopRequireWildcard(_utilsGuidJs); -var TextTrackEnum = _interopRequireWildcard(_import4); +var _utilsBrowserJs = _dereq_('../utils/browser.js'); -var _log = _dereq_('../utils/log.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _log2 = _interopRequireWildcard(_log); +var _textTrackEnums = _dereq_('./text-track-enums'); -var _EventTarget = _dereq_('../event-target'); +var TextTrackEnum = _interopRequireWildcard(_textTrackEnums); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _utilsLogJs = _dereq_('../utils/log.js'); -var _document = _dereq_('global/document'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _document2 = _interopRequireWildcard(_document); +var _eventTarget = _dereq_('../event-target'); -var _window = _dereq_('global/window'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument = _dereq_('global/document'); -var _XHR = _dereq_('../xhr.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var _XHR2 = _interopRequireWildcard(_XHR); +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _xhrJs = _dereq_('../xhr.js'); + +var _xhrJs2 = _interopRequireDefault(_xhrJs); /* * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack @@ -14552,18 +14367,8 @@ var _XHR2 = _interopRequireWildcard(_XHR); * attribute EventHandler oncuechange; * }; */ -var TextTrack = (function (_TextTrack) { - function TextTrack() { - return _TextTrack.apply(this, arguments); - } - - TextTrack.toString = function () { - return _TextTrack.toString(); - }; - - return TextTrack; -})(function () { - var options = arguments[0] === undefined ? {} : arguments[0]; +var TextTrack = function TextTrack() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; if (!options.tech) { throw new Error('A tech was not provided.'); @@ -14571,7 +14376,7 @@ var TextTrack = (function (_TextTrack) { var tt = this; if (browser.IS_IE8) { - tt = _document2['default'].createElement('custom'); + tt = _globalDocument2['default'].createElement('custom'); for (var prop in TextTrack.prototype) { tt[prop] = TextTrack.prototype[prop]; @@ -14580,11 +14385,11 @@ var TextTrack = (function (_TextTrack) { tt.tech_ = options.tech; - var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled'; - var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles'; - var label = options.label || ''; - var language = options.language || options.srclang || ''; - var id = options.id || 'vjs_text_track_' + Guid.newGUID(); + var mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled'; + var kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles'; + var label = options['label'] || ''; + var language = options['language'] || options['srclang'] || ''; + var id = options['id'] || 'vjs_text_track_' + Guid.newGUID(); if (kind === 'metadata' || kind === 'chapters') { mode = 'hidden'; @@ -14593,14 +14398,14 @@ var TextTrack = (function (_TextTrack) { tt.cues_ = []; tt.activeCues_ = []; - var cues = new _TextTrackCueList2['default'](tt.cues_); - var activeCues = new _TextTrackCueList2['default'](tt.activeCues_); + var cues = new _textTrackCueList2['default'](tt.cues_); + var activeCues = new _textTrackCueList2['default'](tt.activeCues_); var changed = false; var timeupdateHandler = Fn.bind(tt, function () { - this.activeCues; + this['activeCues']; if (changed) { - this.trigger('cuechange'); + this['trigger']('cuechange'); changed = false; } }); @@ -14669,18 +14474,18 @@ var TextTrack = (function (_TextTrack) { return null; } - if (this.cues.length === 0) { + if (this['cues'].length === 0) { return activeCues; // nothing to do } var ct = this.tech_.currentTime(); var active = []; - for (var i = 0, l = this.cues.length; i < l; i++) { - var cue = this.cues[i]; - if (cue.startTime <= ct && cue.endTime >= ct) { + for (var i = 0, l = this['cues'].length; i < l; i++) { + var cue = this['cues'][i]; + if (cue['startTime'] <= ct && cue['endTime'] >= ct) { active.push(cue); - } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) { + } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) { active.push(cue); } } @@ -14715,16 +14520,16 @@ var TextTrack = (function (_TextTrack) { if (browser.IS_IE8) { return tt; } -}); +}; -TextTrack.prototype = Object.create(_EventTarget2['default'].prototype); +TextTrack.prototype = Object.create(_eventTarget2['default'].prototype); TextTrack.prototype.constructor = TextTrack; /* * cuechange - One or more cues in the track have become active or stopped being active. */ TextTrack.prototype.allowedEvents_ = { - cuechange: 'cuechange' + 'cuechange': 'cuechange' }; TextTrack.prototype.addCue = function (cue) { @@ -14739,7 +14544,7 @@ TextTrack.prototype.addCue = function (cue) { } this.cues_.push(cue); - this.cues.setCues_(this.cues_); + this['cues'].setCues_(this.cues_); }; TextTrack.prototype.removeCue = function (removeCue) { @@ -14761,41 +14566,31 @@ TextTrack.prototype.removeCue = function (removeCue) { /* * Downloading stuff happens below this point */ -var parseCues = (function (_parseCues) { - function parseCues(_x, _x2) { - return _parseCues.apply(this, arguments); - } - - parseCues.toString = function () { - return _parseCues.toString(); - }; - - return parseCues; -})(function (srcContent, track) { - if (typeof _window2['default'].WebVTT !== 'function') { +var parseCues = function parseCues(srcContent, track) { + if (typeof _globalWindow2['default']['WebVTT'] !== 'function') { //try again a bit later - return _window2['default'].setTimeout(function () { + return _globalWindow2['default'].setTimeout(function () { parseCues(srcContent, track); }, 25); } - var parser = new _window2['default'].WebVTT.Parser(_window2['default'], _window2['default'].vttjs, _window2['default'].WebVTT.StringDecoder()); + var parser = new _globalWindow2['default']['WebVTT']['Parser'](_globalWindow2['default'], _globalWindow2['default']['vttjs'], _globalWindow2['default']['WebVTT']['StringDecoder']()); - parser.oncue = function (cue) { + parser['oncue'] = function (cue) { track.addCue(cue); }; - parser.onparsingerror = function (error) { - _log2['default'].error(error); + parser['onparsingerror'] = function (error) { + _utilsLogJs2['default'].error(error); }; - parser.parse(srcContent); - parser.flush(); -}); + parser['parse'](srcContent); + parser['flush'](); +}; var loadTrack = function loadTrack(src, track) { - _XHR2['default'](src, Fn.bind(this, function (err, response, responseBody) { + _xhrJs2['default'](src, Fn.bind(this, function (err, response, responseBody) { if (err) { - return _log2['default'].error(err); + return _utilsLogJs2['default'].error(err, response); } track.loaded_ = true; @@ -14840,25 +14635,27 @@ var indexOf = function indexOf(searchElement, fromIndex) { exports['default'] = TextTrack; module.exports = exports['default']; -},{"../event-target":83,"../utils/browser.js":108,"../utils/fn.js":113,"../utils/guid.js":115,"../utils/log.js":116,"../xhr.js":123,"./text-track-cue-list":101,"./text-track-enums":103,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../event-target":79,"../utils/browser.js":104,"../utils/fn.js":109,"../utils/guid.js":111,"../utils/log.js":112,"../xhr.js":119,"./text-track-cue-list":97,"./text-track-enums":99,"global/document":1,"global/window":2}],104:[function(_dereq_,module,exports){ /** * @file browser.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _window = _dereq_('global/window'); +var _globalDocument = _dereq_('global/document'); -var _window2 = _interopRequireWildcard(_window); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var USER_AGENT = _window2['default'].navigator.userAgent; +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var USER_AGENT = _globalWindow2['default'].navigator.userAgent; +var webkitVersionMap = /AppleWebKit\/([\d.]+)/i.exec(USER_AGENT); +var appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null; /* * Device is an iPhone @@ -14911,8 +14708,10 @@ var ANDROID_VERSION = (function () { exports.ANDROID_VERSION = ANDROID_VERSION; // Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser var IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3; - exports.IS_OLD_ANDROID = IS_OLD_ANDROID; +var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537; + +exports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID; var IS_FIREFOX = /Firefox/i.test(USER_AGENT); exports.IS_FIREFOX = IS_FIREFOX; var IS_CHROME = /Chrome/i.test(USER_AGENT); @@ -14920,15 +14719,21 @@ exports.IS_CHROME = IS_CHROME; var IS_IE8 = /MSIE\s8\.0/.test(USER_AGENT); exports.IS_IE8 = IS_IE8; -var TOUCH_ENABLED = !!('ontouchstart' in _window2['default'] || _window2['default'].DocumentTouch && _document2['default'] instanceof _window2['default'].DocumentTouch); +var TOUCH_ENABLED = !!('ontouchstart' in _globalWindow2['default'] || _globalWindow2['default'].DocumentTouch && _globalDocument2['default'] instanceof _globalWindow2['default'].DocumentTouch); exports.TOUCH_ENABLED = TOUCH_ENABLED; -var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _document2['default'].createElement('video').style); +var BACKGROUND_SIZE_SUPPORTED = ('backgroundSize' in _globalDocument2['default'].createElement('video').style); exports.BACKGROUND_SIZE_SUPPORTED = BACKGROUND_SIZE_SUPPORTED; -},{"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ +},{"global/document":1,"global/window":2}],105:[function(_dereq_,module,exports){ +/** + * @file buffer.js + */ 'use strict'; exports.__esModule = true; +exports.bufferedPercent = bufferedPercent; + +var _timeRangesJs = _dereq_('./time-ranges.js'); /** * Compute how much your video has been buffered @@ -14939,12 +14744,6 @@ exports.__esModule = true; * @private * @function bufferedPercent */ -exports.bufferedPercent = bufferedPercent; -/** - * @file buffer.js - */ - -var _createTimeRange = _dereq_('./time-ranges.js'); function bufferedPercent(buffered, duration) { var bufferedDuration = 0, @@ -14956,7 +14755,7 @@ function bufferedPercent(buffered, duration) { } if (!buffered || !buffered.length) { - buffered = _createTimeRange.createTimeRange(0, 0); + buffered = _timeRangesJs.createTimeRange(0, 0); } for (var i = 0; i < buffered.length; i++) { @@ -14974,16 +14773,16 @@ function bufferedPercent(buffered, duration) { return bufferedDuration / duration; } -},{"./time-ranges.js":119}],110:[function(_dereq_,module,exports){ +},{"./time-ranges.js":115}],106:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _log = _dereq_('./log.js'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log2 = _interopRequireWildcard(_log); +var _logJs = _dereq_('./log.js'); + +var _logJs2 = _interopRequireDefault(_logJs); /** * Object containing the default behaviors for available handler methods. @@ -15016,7 +14815,7 @@ var defaultBehaviors = { */ exports['default'] = function (target) { - var messages = arguments[1] === undefined ? {} : arguments[1]; + var messages = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; if (typeof Proxy === 'function') { var _ret = (function () { @@ -15027,7 +14826,7 @@ exports['default'] = function (target) { Object.keys(messages).forEach(function (key) { if (defaultBehaviors.hasOwnProperty(key)) { handler[key] = function () { - _log2['default'].warn(messages[key]); + _logJs2['default'].warn(messages[key]); return defaultBehaviors[key].apply(this, arguments); }; } @@ -15045,12 +14844,43 @@ exports['default'] = function (target) { module.exports = exports['default']; -},{"./log.js":116}],111:[function(_dereq_,module,exports){ +},{"./log.js":112}],107:[function(_dereq_,module,exports){ +/** + * @file dom.js + */ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.getEl = getEl; +exports.createEl = createEl; +exports.insertElFirst = insertElFirst; +exports.getElData = getElData; +exports.hasElData = hasElData; +exports.removeElData = removeElData; +exports.hasElClass = hasElClass; +exports.addElClass = addElClass; +exports.removeElClass = removeElClass; +exports.setElAttributes = setElAttributes; +exports.getElAttributes = getElAttributes; +exports.blockTextSelection = blockTextSelection; +exports.unblockTextSelection = unblockTextSelection; +exports.findElPosition = findElPosition; + +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; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); /** * Shorthand for document.getElementById() @@ -15060,7 +14890,14 @@ exports.__esModule = true; * @return {Element} Element with supplied ID * @function getEl */ -exports.getEl = getEl; + +function getEl(id) { + if (id.indexOf('#') === 0) { + id = id.slice(1); + } + + return _globalDocument2['default'].getElementById(id); +} /** * Creates an element and applies properties. @@ -15070,151 +14907,12 @@ exports.getEl = getEl; * @return {Element} * @function createEl */ -exports.createEl = createEl; - -/** - * Insert an element as the first child node of another - * - * @param {Element} child Element to insert - * @param {Element} parent Element to insert child into - * @private - * @function insertElFirst - */ -exports.insertElFirst = insertElFirst; - -/** - * Returns the cache object where data for an element is stored - * - * @param {Element} el Element to store data for. - * @return {Object} - * @function getElData - */ -exports.getElData = getElData; - -/** - * Returns whether or not an element has cached data - * - * @param {Element} el A dom element - * @return {Boolean} - * @private - * @function hasElData - */ -exports.hasElData = hasElData; - -/** - * Delete data for the element from the cache and the guid attr from getElementById - * - * @param {Element} el Remove data for an element - * @private - * @function removeElData - */ -exports.removeElData = removeElData; - -/** - * Check if an element has a CSS class - * - * @param {Element} element Element to check - * @param {String} classToCheck Classname to check - * @function hasElClass - */ -exports.hasElClass = hasElClass; - -/** - * Add a CSS class name to an element - * - * @param {Element} element Element to add class name to - * @param {String} classToAdd Classname to add - * @function addElClass - */ -exports.addElClass = addElClass; - -/** - * Remove a CSS class name from an element - * - * @param {Element} element Element to remove from class name - * @param {String} classToRemove Classname to remove - * @function removeElClass - */ -exports.removeElClass = removeElClass; - -/** - * Apply attributes to an HTML element. - * - * @param {Element} el Target element. - * @param {Object=} attributes Element attributes to be applied. - * @private - * @function setElAttributes - */ -exports.setElAttributes = setElAttributes; - -/** - * Get an element's attribute values, as defined on the HTML tag - * Attributes are not the same as properties. They're defined on the tag - * or with setAttribute (which shouldn't be used with HTML) - * This will return true or false for boolean attributes. - * - * @param {Element} tag Element from which to get tag attributes - * @return {Object} - * @private - * @function getElAttributes - */ -exports.getElAttributes = getElAttributes; - -/** - * Attempt to block the ability to select text while dragging controls - * - * @return {Boolean} - * @method blockTextSelection - */ -exports.blockTextSelection = blockTextSelection; - -/** - * Turn off text selection blocking - * - * @return {Boolean} - * @method unblockTextSelection - */ -exports.unblockTextSelection = unblockTextSelection; - -/** - * Offset Left - * getBoundingClientRect technique from - * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ - * - * @param {Element} el Element from which to get offset - * @return {Object=} - * @method findElPosition - */ -exports.findElPosition = findElPosition; -/** - * @file dom.js - */ - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _import = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import); - -function getEl(id) { - if (id.indexOf('#') === 0) { - id = id.slice(1); - } - - return _document2['default'].getElementById(id); -} function createEl() { - var tagName = arguments[0] === undefined ? 'div' : arguments[0]; - var properties = arguments[1] === undefined ? {} : arguments[1]; + var tagName = arguments.length <= 0 || arguments[0] === undefined ? 'div' : arguments[0]; + var properties = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - var el = _document2['default'].createElement(tagName); + var el = _globalDocument2['default'].createElement(tagName); Object.getOwnPropertyNames(properties).forEach(function (propName) { var val = properties[propName]; @@ -15237,6 +14935,15 @@ function createEl() { return el; } +/** + * Insert an element as the first child node of another + * + * @param {Element} child Element to insert + * @param {Element} parent Element to insert child into + * @private + * @function insertElFirst + */ + function insertElFirst(child, parent) { if (parent.firstChild) { parent.insertBefore(child, parent.firstChild); @@ -15263,6 +14970,15 @@ var elData = {}; * @private */ var elIdAttr = 'vdata' + new Date().getTime(); + +/** + * Returns the cache object where data for an element is stored + * + * @param {Element} el Element to store data for. + * @return {Object} + * @function getElData + */ + function getElData(el) { var id = el[elIdAttr]; @@ -15277,6 +14993,15 @@ function getElData(el) { return elData[id]; } +/** + * Returns whether or not an element has cached data + * + * @param {Element} el A dom element + * @return {Boolean} + * @private + * @function hasElData + */ + function hasElData(el) { var id = el[elIdAttr]; @@ -15287,6 +15012,14 @@ function hasElData(el) { return !!Object.getOwnPropertyNames(elData[id]).length; } +/** + * Delete data for the element from the cache and the guid attr from getElementById + * + * @param {Element} el Remove data for an element + * @private + * @function removeElData + */ + function removeElData(el) { var id = el[elIdAttr]; @@ -15310,16 +15043,40 @@ function removeElData(el) { } } +/** + * Check if an element has a CSS class + * + * @param {Element} element Element to check + * @param {String} classToCheck Classname to check + * @function hasElClass + */ + function hasElClass(element, classToCheck) { return (' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1; } +/** + * Add a CSS class name to an element + * + * @param {Element} element Element to add class name to + * @param {String} classToAdd Classname to add + * @function addElClass + */ + function addElClass(element, classToAdd) { if (!hasElClass(element, classToAdd)) { element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd; } } +/** + * Remove a CSS class name from an element + * + * @param {Element} element Element to remove from class name + * @param {String} classToRemove Classname to remove + * @function removeElClass + */ + function removeElClass(element, classToRemove) { if (!hasElClass(element, classToRemove)) { return; @@ -15337,6 +15094,15 @@ function removeElClass(element, classToRemove) { element.className = classNames.join(' '); } +/** + * Apply attributes to an HTML element. + * + * @param {Element} el Target element. + * @param {Object=} attributes Element attributes to be applied. + * @private + * @function setElAttributes + */ + function setElAttributes(el, attributes) { Object.getOwnPropertyNames(attributes).forEach(function (attrName) { var attrValue = attributes[attrName]; @@ -15349,6 +15115,18 @@ function setElAttributes(el, attributes) { }); } +/** + * Get an element's attribute values, as defined on the HTML tag + * Attributes are not the same as properties. They're defined on the tag + * or with setAttribute (which shouldn't be used with HTML) + * This will return true or false for boolean attributes. + * + * @param {Element} tag Element from which to get tag attributes + * @return {Object} + * @private + * @function getElAttributes + */ + function getElAttributes(tag) { var obj, knownBooleans, attrs, attrName, attrVal; @@ -15382,19 +15160,43 @@ function getElAttributes(tag) { return obj; } +/** + * Attempt to block the ability to select text while dragging controls + * + * @return {Boolean} + * @method blockTextSelection + */ + function blockTextSelection() { - _document2['default'].body.focus(); - _document2['default'].onselectstart = function () { + _globalDocument2['default'].body.focus(); + _globalDocument2['default'].onselectstart = function () { return false; }; } +/** + * Turn off text selection blocking + * + * @return {Boolean} + * @method unblockTextSelection + */ + function unblockTextSelection() { - _document2['default'].onselectstart = function () { + _globalDocument2['default'].onselectstart = function () { return true; }; } +/** + * Offset Left + * getBoundingClientRect technique from + * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/ + * + * @param {Element} el Element from which to get offset + * @return {Object=} + * @method findElPosition + */ + function findElPosition(el) { var box = undefined; @@ -15409,15 +15211,15 @@ function findElPosition(el) { }; } - var docEl = _document2['default'].documentElement; - var body = _document2['default'].body; + var docEl = _globalDocument2['default'].documentElement; + var body = _globalDocument2['default'].body; var clientLeft = docEl.clientLeft || body.clientLeft || 0; - var scrollLeft = _window2['default'].pageXOffset || body.scrollLeft; + var scrollLeft = _globalWindow2['default'].pageXOffset || body.scrollLeft; var left = box.left + scrollLeft - clientLeft; var clientTop = docEl.clientTop || body.clientTop || 0; - var scrollTop = _window2['default'].pageYOffset || body.scrollTop; + var scrollTop = _globalWindow2['default'].pageYOffset || body.scrollTop; var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round @@ -15427,12 +15229,44 @@ function findElPosition(el) { }; } -},{"./guid.js":115,"global/document":1,"global/window":2}],112:[function(_dereq_,module,exports){ +},{"./guid.js":111,"global/document":1,"global/window":2}],108:[function(_dereq_,module,exports){ +/** + * @file events.js + * + * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) + * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) + * This should work very similarly to jQuery's events, however it's based off the book version which isn't as + * robust as jquery's, so there's probably some differences. + */ + 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; +exports.on = on; +exports.off = off; +exports.trigger = trigger; +exports.one = one; +exports.fixEvent = fixEvent; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +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; } } + +var _domJs = _dereq_('./dom.js'); + +var Dom = _interopRequireWildcard(_domJs); + +var _guidJs = _dereq_('./guid.js'); + +var Guid = _interopRequireWildcard(_guidJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Add an event listener to element @@ -15445,72 +15279,6 @@ exports.__esModule = true; * @param {Function} fn Event listener. * @method on */ -exports.on = on; - -/** - * Removes event listeners from an element - * - * @param {Element|Object} elem Object to remove listeners from - * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. - * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. - * @method off - */ -exports.off = off; - -/** - * Trigger an event for an element - * - * @param {Element|Object} elem Element to trigger an event on - * @param {Event|Object|String} event A string (the type) or an event object with a type attribute - * @param {Object} [hash] data hash to pass along with the event - * @return {Boolean=} Returned only if default was prevented - * @method trigger - */ -exports.trigger = trigger; - -/** - * Trigger a listener only once for an event - * - * @param {Element|Object} elem Element or object to - * @param {String|Array} type Name/type of event - * @param {Function} fn Event handler function - * @method one - */ -exports.one = one; - -/** - * Fix a native event to have standard property values - * - * @param {Object} event Event object to fix - * @return {Object} - * @private - * @method fixEvent - */ -exports.fixEvent = fixEvent; -/** - * @file events.js - * - * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) - * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) - * This should work very similarly to jQuery's events, however it's based off the book version which isn't as - * robust as jquery's, so there's probably some differences. - */ - -var _import = _dereq_('./dom.js'); - -var Dom = _interopRequireWildcard(_import); - -var _import2 = _dereq_('./guid.js'); - -var Guid = _interopRequireWildcard(_import2); - -var _window = _dereq_('global/window'); - -var _window2 = _interopRequireWildcard(_window); - -var _document = _dereq_('global/document'); - -var _document2 = _interopRequireWildcard(_document); function on(elem, type, fn) { if (Array.isArray(type)) { @@ -15562,11 +15330,20 @@ function on(elem, type, fn) { } } +/** + * Removes event listeners from an element + * + * @param {Element|Object} elem Object to remove listeners from + * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element. + * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type. + * @method off + */ + function off(elem, type, fn) { // Don't want to add a cache object through getElData if not needed - if (!Dom.hasElData(elem)) { - return; - }var data = Dom.getElData(elem); + if (!Dom.hasElData(elem)) return; + + var data = Dom.getElData(elem); // If no events exist, nothing to unbind if (!data.handlers) { @@ -15593,9 +15370,9 @@ function off(elem, type, fn) { var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind - if (!handlers) { - return; - } // If no listener was provided, remove all listeners for type + if (!handlers) return; + + // If no listener was provided, remove all listeners for type if (!fn) { removeType(type); return; @@ -15613,6 +15390,16 @@ function off(elem, type, fn) { _cleanUpEvents(elem, type); } +/** + * Trigger an event for an element + * + * @param {Element|Object} elem Element to trigger an event on + * @param {Event|Object|String} event A string (the type) or an event object with a type attribute + * @param {Object} [hash] data hash to pass along with the event + * @return {Boolean=} Returned only if default was prevented + * @method trigger + */ + function trigger(elem, event, hash) { // Fetches element data and a reference to the parent (for bubbling). // Don't want to add a data object to cache for every parent, @@ -15641,48 +15428,56 @@ function trigger(elem, event, hash) { // If at the top of the DOM, triggers the default action unless disabled. } else if (!parent && !event.defaultPrevented) { - var targetData = Dom.getElData(event.target); + var targetData = Dom.getElData(event.target); - // Checks if the target has a default action for this event. - if (event.target[event.type]) { - // Temporarily disables event dispatching on the target as we have already executed the handler. - targetData.disabled = true; - // Executes the default action. - if (typeof event.target[event.type] === 'function') { - event.target[event.type](); + // Checks if the target has a default action for this event. + if (event.target[event.type]) { + // Temporarily disables event dispatching on the target as we have already executed the handler. + targetData.disabled = true; + // Executes the default action. + if (typeof event.target[event.type] === 'function') { + event.target[event.type](); + } + // Re-enables event dispatching. + targetData.disabled = false; } - // Re-enables event dispatching. - targetData.disabled = false; } - } // Inform the triggerer if the default was prevented by returning false return !event.defaultPrevented; } +/** + * Trigger a listener only once for an event + * + * @param {Element|Object} elem Element or object to + * @param {String|Array} type Name/type of event + * @param {Function} fn Event handler function + * @method one + */ + function one(elem, type, fn) { if (Array.isArray(type)) { return _handleMultipleEvents(one, elem, type, fn); } - var func = (function (_func) { - function func() { - return _func.apply(this, arguments); - } - - func.toString = function () { - return _func.toString(); - }; - - return func; - })(function () { + var func = function func() { off(elem, type, func); fn.apply(this, arguments); - }); + }; // copy the guid to the new function so it can removed using the original function's ID func.guid = fn.guid = fn.guid || Guid.newGUID(); on(elem, type, func); } +/** + * Fix a native event to have standard property values + * + * @param {Object} event Event object to fix + * @return {Object} + * @private + * @method fixEvent + */ + function fixEvent(event) { function returnTrue() { @@ -15698,7 +15493,7 @@ function fixEvent(event) { // other expected methods like isPropagationStopped. Seems to be a problem // with the Javascript Ninja code. So we're just overriding all events now. if (!event || !event.isPropagationStopped) { - var old = event || _window2['default'].event; + var old = event || _globalWindow2['default'].event; event = {}; // Clone the old object so that we can modify the values event = {}; @@ -15720,7 +15515,7 @@ function fixEvent(event) { // The event occurred on this element if (!event.target) { - event.target = event.srcElement || _document2['default']; + event.target = event.srcElement || _globalDocument2['default']; } // Handle which other element the event is related to @@ -15763,8 +15558,8 @@ function fixEvent(event) { // Handle mouse position if (event.clientX != null) { - var doc = _document2['default'].documentElement, - body = _document2['default'].body; + var doc = _globalDocument2['default'].documentElement, + body = _globalDocument2['default'].body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); @@ -15839,15 +15634,15 @@ function _handleMultipleEvents(fn, elem, types, callback) { }); } -},{"./dom.js":111,"./guid.js":115,"global/document":1,"global/window":2}],113:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./dom.js":107,"./guid.js":111,"global/document":1,"global/window":2}],109:[function(_dereq_,module,exports){ /** * @file fn.js */ +'use strict'; -var _newGUID = _dereq_('./guid.js'); +exports.__esModule = true; + +var _guidJs = _dereq_('./guid.js'); /** * Bind (a.k.a proxy or Context). A simple method for changing the context of a function @@ -15863,7 +15658,7 @@ var _newGUID = _dereq_('./guid.js'); var bind = function bind(context, fn, uid) { // Make sure the function has a unique ID if (!fn.guid) { - fn.guid = _newGUID.newGUID(); + fn.guid = _guidJs.newGUID(); } // Create the new function that changes the context @@ -15883,10 +15678,7 @@ var bind = function bind(context, fn, uid) { }; exports.bind = bind; -},{"./guid.js":115}],114:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"./guid.js":111}],110:[function(_dereq_,module,exports){ /** * @file format-time.js * @@ -15900,8 +15692,11 @@ exports.__esModule = true; * @private * @function formatTime */ +'use strict'; + +exports.__esModule = true; function formatTime(seconds) { - var guide = arguments[1] === undefined ? seconds : arguments[1]; + var guide = arguments.length <= 1 || arguments[1] === undefined ? seconds : arguments[1]; return (function () { var s = Math.floor(seconds % 60); var m = Math.floor(seconds / 60 % 60); @@ -15933,18 +15728,7 @@ function formatTime(seconds) { exports['default'] = formatTime; module.exports = exports['default']; -},{}],115:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; - -/** - * Get the next unique ID - * - * @return {String} - * @function newGUID - */ -exports.newGUID = newGUID; +},{}],111:[function(_dereq_,module,exports){ /** * @file guid.js * @@ -15952,24 +15736,36 @@ exports.newGUID = newGUID; * @type {Number} * @private */ +"use strict"; + +exports.__esModule = true; +exports.newGUID = newGUID; var _guid = 1; + +/** + * Get the next unique ID + * + * @return {String} + * @function newGUID + */ + function newGUID() { return _guid++; } -},{}],116:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],112:[function(_dereq_,module,exports){ /** * @file log.js */ +'use strict'; -var _window = _dereq_('global/window'); +exports.__esModule = true; -var _window2 = _interopRequireWildcard(_window); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /** * Log plain debug messages @@ -16015,10 +15811,10 @@ function _logType(type, args) { // in the function makes it easier to test cases where console doesn't exist var noop = function noop() {}; - var console = _window2['default'].console || { - log: noop, - warn: noop, - error: noop + var console = _globalWindow2['default']['console'] || { + 'log': noop, + 'warn': noop, + 'error': noop }; if (type) { @@ -16047,30 +15843,20 @@ function _logType(type, args) { exports['default'] = log; module.exports = exports['default']; -},{"global/window":2}],117:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; - -/** - * Merge one or more options objects, recursively merging **only** - * plain object properties. Previously `deepMerge`. - * - * @param {...Object} source One or more objects to merge - * @returns {Object} a new object that is the union of all - * provided objects - * @function mergeOptions - */ -exports['default'] = mergeOptions; +},{"global/window":2}],113:[function(_dereq_,module,exports){ /** * @file merge-options.js */ +'use strict'; -var _merge = _dereq_('lodash-compat/object/merge'); +exports.__esModule = true; +exports['default'] = mergeOptions; -var _merge2 = _interopRequireWildcard(_merge); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); function isPlain(obj) { return !!obj && typeof obj === 'object' && obj.toString() === '[object Object]' && obj.constructor === Object; @@ -16097,6 +15883,17 @@ var customizer = function customizer(destination, source) { return mergeOptions(source); } }; + +/** + * Merge one or more options objects, recursively merging **only** + * plain object properties. Previously `deepMerge`. + * + * @param {...Object} source One or more objects to merge + * @returns {Object} a new object that is the union of all + * provided objects + * @function mergeOptions + */ + function mergeOptions() { // contruct the call dynamically to handle the variable number of // objects to merge @@ -16109,7 +15906,7 @@ function mergeOptions() { // customize conflict resolution to match our historical merge behavior args.push(customizer); - _merge2['default'].apply(null, args); + _lodashCompatObjectMerge2['default'].apply(null, args); // return the mutated result object return args[0]; @@ -16117,19 +15914,19 @@ function mergeOptions() { module.exports = exports['default']; -},{"lodash-compat/object/merge":40}],118:[function(_dereq_,module,exports){ +},{"lodash-compat/object/merge":37}],114:[function(_dereq_,module,exports){ 'use strict'; -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - exports.__esModule = true; -var _document = _dereq_('global/document'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _document2 = _interopRequireWildcard(_document); +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); var createStyleElement = function createStyleElement(className) { - var style = _document2['default'].createElement('style'); + var style = _globalDocument2['default'].createElement('style'); style.className = className; return style; @@ -16145,10 +15942,7 @@ var setTextContent = function setTextContent(el, content) { }; exports.setTextContent = setTextContent; -},{"global/document":1}],119:[function(_dereq_,module,exports){ -'use strict'; - -exports.__esModule = true; +},{"global/document":1}],115:[function(_dereq_,module,exports){ /** * @file time-ranges.js * @@ -16163,10 +15957,13 @@ exports.__esModule = true; * @private * @method createTimeRange */ +'use strict'; + +exports.__esModule = true; exports.createTimeRange = createTimeRange; -function createTimeRange(start, end) { - if (start === undefined && end === undefined) { +function createTimeRange(_start, _end) { + if (_start === undefined && _end === undefined) { return { length: 0, start: function start() { @@ -16179,39 +15976,16 @@ function createTimeRange(start, end) { } return { length: 1, - start: (function (_start) { - function start() { - return _start.apply(this, arguments); - } - - start.toString = function () { - return _start.toString(); - }; - - return start; - })(function () { - return start; - }), - end: (function (_end) { - function end() { - return _end.apply(this, arguments); - } - - end.toString = function () { - return _end.toString(); - }; - - return end; - })(function () { - return end; - }) + start: function start() { + return _start; + }, + end: function end() { + return _end; + } }; } -},{}],120:[function(_dereq_,module,exports){ -"use strict"; - -exports.__esModule = true; +},{}],116:[function(_dereq_,module,exports){ /** * @file to-title-case.js * @@ -16222,6 +15996,9 @@ exports.__esModule = true; * @private * @method toTitleCase */ +"use strict"; + +exports.__esModule = true; function toTitleCase(string) { return string.charAt(0).toUpperCase() + string.slice(1); } @@ -16229,19 +16006,19 @@ function toTitleCase(string) { exports["default"] = toTitleCase; module.exports = exports["default"]; -},{}],121:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{}],117:[function(_dereq_,module,exports){ /** * @file url.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = _dereq_('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); /** * Resolve and parse the elements of a URL @@ -16254,7 +16031,7 @@ var parseUrl = function parseUrl(url) { var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL - var a = _document2['default'].createElement('a'); + var a = _globalDocument2['default'].createElement('a'); a.href = url; // IE8 (and 9?) Fix @@ -16263,12 +16040,12 @@ var parseUrl = function parseUrl(url) { var addToBody = a.host === '' && a.protocol !== 'file:'; var div = undefined; if (addToBody) { - div = _document2['default'].createElement('div'); + div = _globalDocument2['default'].createElement('div'); div.innerHTML = ''; a = div.firstChild; // prevent the div from affecting layout div.setAttribute('style', 'display:none; position:absolute;'); - _document2['default'].body.appendChild(div); + _globalDocument2['default'].body.appendChild(div); } // Copy the specific URL properties to a new object @@ -16289,7 +16066,7 @@ var parseUrl = function parseUrl(url) { } if (addToBody) { - _document2['default'].body.removeChild(div); + _globalDocument2['default'].body.removeChild(div); } return details; @@ -16309,7 +16086,7 @@ var getAbsoluteURL = function getAbsoluteURL(url) { // Check if absolute URL if (!url.match(/^https?:\/\//)) { // Convert to absolute URL. Flash hosted off-site needs an absolute URL. - var div = _document2['default'].createElement('div'); + var div = _globalDocument2['default'].createElement('div'); div.innerHTML = 'x'; url = div.firstChild.href; } @@ -16339,113 +16116,115 @@ var getFileExtension = function getFileExtension(path) { }; exports.getFileExtension = getFileExtension; -},{"global/document":1}],122:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"global/document":1}],118:[function(_dereq_,module,exports){ /** * @file video.js */ +'use strict'; -var _document = _dereq_('global/document'); +exports.__esModule = true; -var _document2 = _interopRequireWildcard(_document); +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; } } -var _import = _dereq_('./setup'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var setup = _interopRequireWildcard(_import); +var _globalDocument = _dereq_('global/document'); -var _import2 = _dereq_('./utils/stylesheet.js'); +var _globalDocument2 = _interopRequireDefault(_globalDocument); -var stylesheet = _interopRequireWildcard(_import2); +var _setup = _dereq_('./setup'); -var _Component = _dereq_('./component'); +var setup = _interopRequireWildcard(_setup); -var _Component2 = _interopRequireWildcard(_Component); +var _utilsStylesheetJs = _dereq_('./utils/stylesheet.js'); -var _EventTarget = _dereq_('./event-target'); +var stylesheet = _interopRequireWildcard(_utilsStylesheetJs); -var _EventTarget2 = _interopRequireWildcard(_EventTarget); +var _component = _dereq_('./component'); -var _import3 = _dereq_('./utils/events.js'); +var _component2 = _interopRequireDefault(_component); -var Events = _interopRequireWildcard(_import3); +var _eventTarget = _dereq_('./event-target'); -var _Player = _dereq_('./player'); +var _eventTarget2 = _interopRequireDefault(_eventTarget); -var _Player2 = _interopRequireWildcard(_Player); +var _utilsEventsJs = _dereq_('./utils/events.js'); -var _plugin = _dereq_('./plugins.js'); +var Events = _interopRequireWildcard(_utilsEventsJs); -var _plugin2 = _interopRequireWildcard(_plugin); +var _player = _dereq_('./player'); -var _mergeOptions = _dereq_('../../src/js/utils/merge-options.js'); +var _player2 = _interopRequireDefault(_player); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _pluginsJs = _dereq_('./plugins.js'); -var _import4 = _dereq_('./utils/fn.js'); +var _pluginsJs2 = _interopRequireDefault(_pluginsJs); -var Fn = _interopRequireWildcard(_import4); +var _srcJsUtilsMergeOptionsJs = _dereq_('../../src/js/utils/merge-options.js'); -var _assign = _dereq_('object.assign'); +var _srcJsUtilsMergeOptionsJs2 = _interopRequireDefault(_srcJsUtilsMergeOptionsJs); -var _assign2 = _interopRequireWildcard(_assign); +var _utilsFnJs = _dereq_('./utils/fn.js'); -var _createTimeRange = _dereq_('./utils/time-ranges.js'); +var Fn = _interopRequireWildcard(_utilsFnJs); -var _formatTime = _dereq_('./utils/format-time.js'); +var _objectAssign = _dereq_('object.assign'); -var _formatTime2 = _interopRequireWildcard(_formatTime); +var _objectAssign2 = _interopRequireDefault(_objectAssign); -var _log = _dereq_('./utils/log.js'); +var _utilsTimeRangesJs = _dereq_('./utils/time-ranges.js'); -var _log2 = _interopRequireWildcard(_log); +var _utilsFormatTimeJs = _dereq_('./utils/format-time.js'); -var _xhr = _dereq_('./xhr.js'); +var _utilsFormatTimeJs2 = _interopRequireDefault(_utilsFormatTimeJs); -var _xhr2 = _interopRequireWildcard(_xhr); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _import5 = _dereq_('./utils/dom.js'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var Dom = _interopRequireWildcard(_import5); +var _xhrJs = _dereq_('./xhr.js'); -var _import6 = _dereq_('./utils/browser.js'); +var _xhrJs2 = _interopRequireDefault(_xhrJs); -var browser = _interopRequireWildcard(_import6); +var _utilsDomJs = _dereq_('./utils/dom.js'); -var _import7 = _dereq_('./utils/url.js'); +var Dom = _interopRequireWildcard(_utilsDomJs); -var Url = _interopRequireWildcard(_import7); +var _utilsBrowserJs = _dereq_('./utils/browser.js'); -var _extendsFn = _dereq_('./extends.js'); +var browser = _interopRequireWildcard(_utilsBrowserJs); -var _extendsFn2 = _interopRequireWildcard(_extendsFn); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _merge2 = _dereq_('lodash-compat/object/merge'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _merge3 = _interopRequireWildcard(_merge2); +var _extendsJs = _dereq_('./extends.js'); -var _createDeprecationProxy = _dereq_('./utils/create-deprecation-proxy.js'); +var _extendsJs2 = _interopRequireDefault(_extendsJs); -var _createDeprecationProxy2 = _interopRequireWildcard(_createDeprecationProxy); +var _lodashCompatObjectMerge = _dereq_('lodash-compat/object/merge'); + +var _lodashCompatObjectMerge2 = _interopRequireDefault(_lodashCompatObjectMerge); + +var _utilsCreateDeprecationProxyJs = _dereq_('./utils/create-deprecation-proxy.js'); + +var _utilsCreateDeprecationProxyJs2 = _interopRequireDefault(_utilsCreateDeprecationProxyJs); // Include the built-in techs -var _Html5 = _dereq_('./tech/html5.js'); +var _techHtml5Js = _dereq_('./tech/html5.js'); -var _Html52 = _interopRequireWildcard(_Html5); +var _techHtml5Js2 = _interopRequireDefault(_techHtml5Js); -var _Flash = _dereq_('./tech/flash.js'); +var _techFlashJs = _dereq_('./tech/flash.js'); -var _Flash2 = _interopRequireWildcard(_Flash); +var _techFlashJs2 = _interopRequireDefault(_techFlashJs); // HTML5 Element Shim for IE8 if (typeof HTMLVideoElement === 'undefined') { - _document2['default'].createElement('video'); - _document2['default'].createElement('audio'); - _document2['default'].createElement('track'); + _globalDocument2['default'].createElement('video'); + _globalDocument2['default'].createElement('audio'); + _globalDocument2['default'].createElement('track'); } /** @@ -16463,17 +16242,7 @@ if (typeof HTMLVideoElement === 'undefined') { * @mixes videojs * @method videojs */ -var videojs = (function (_videojs) { - function videojs(_x, _x2, _x3) { - return _videojs.apply(this, arguments); - } - - videojs.toString = function () { - return _videojs.toString(); - }; - - return videojs; -})(function (id, options, ready) { +var videojs = function videojs(id, options, ready) { var tag; // Element of ID // Allow for element or ID to be passed in @@ -16490,7 +16259,7 @@ var videojs = (function (_videojs) { // If options or ready funtion are passed, warn if (options) { - _log2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); + _utilsLogJs2['default'].warn('Player "' + id + '" is already initialised. Options will not be applied.'); } if (ready) { @@ -16501,13 +16270,13 @@ var videojs = (function (_videojs) { // Otherwise get element for ID } else { - tag = Dom.getEl(id); - } + tag = Dom.getEl(id); + } // ID is a media element } else { - tag = id; - } + tag = id; + } // Check for a useable element if (!tag || !tag.nodeName) { @@ -16517,12 +16286,12 @@ var videojs = (function (_videojs) { // Element may have a player attr referring to an already created player instance. // If not, set up a new player and return the instance. - return tag.player || new _Player2['default'](tag, options, ready); -}); + return tag['player'] || new _player2['default'](tag, options, ready); +}; // Add default styles var style = stylesheet.createStyleElement('vjs-styles-defaults'); -var head = _document2['default'].querySelector('head'); +var head = _globalDocument2['default'].querySelector('head'); head.insertBefore(style, head.firstChild); stylesheet.setTextContent(style, '\n .video-js {\n width: 300px;\n height: 150px;\n'); @@ -16535,7 +16304,7 @@ setup.autoSetupTimeout(1, videojs); * * @type {String} */ -videojs.VERSION = '5.0.0-rc.59'; +videojs.VERSION = '5.0.0-rc.72'; /** * The global options object. These are the settings that take effect @@ -16548,7 +16317,7 @@ videojs.VERSION = '5.0.0-rc.59'; * * @type {Object} */ -videojs.options = _Player2['default'].prototype.options_; +videojs.options = _player2['default'].prototype.options_; /** * Get an object with the currently created players, keyed by player ID @@ -16558,7 +16327,7 @@ videojs.options = _Player2['default'].prototype.options_; * @method getPlayers */ videojs.getPlayers = function () { - return _Player2['default'].players; + return _player2['default'].players; }; /** @@ -16568,7 +16337,7 @@ videojs.getPlayers = function () { * @memberOf videojs * @property {Object|Proxy} players */ -videojs.players = _createDeprecationProxy2['default'](_Player2['default'].players, { +videojs.players = _utilsCreateDeprecationProxyJs2['default'](_player2['default'].players, { get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead', set: 'Modification of videojs.players is deprecated' }); @@ -16585,7 +16354,7 @@ videojs.players = _createDeprecationProxy2['default'](_Player2['default'].player * @mixes videojs * @method getComponent */ -videojs.getComponent = _Component2['default'].getComponent; +videojs.getComponent = _component2['default'].getComponent; /** * Register a component so it can referred to by name @@ -16613,7 +16382,7 @@ videojs.getComponent = _Component2['default'].getComponent; * @mixes videojs * @method registerComponent */ -videojs.registerComponent = _Component2['default'].registerComponent; +videojs.registerComponent = _component2['default'].registerComponent; /** * A suite of browser and device tests @@ -16666,7 +16435,7 @@ videojs.TOUCH_ENABLED = browser.TOUCH_ENABLED; * @mixes videojs * @method extends */ -videojs['extends'] = _extendsFn2['default']; +videojs['extends'] = _extendsJs2['default']; /** * Merge two options objects recursively @@ -16701,7 +16470,7 @@ videojs['extends'] = _extendsFn2['default']; * @mixes videojs * @method mergeOptions */ -videojs.mergeOptions = _mergeOptions2['default']; +videojs.mergeOptions = _srcJsUtilsMergeOptionsJs2['default']; /** * Change the context (this) of a function @@ -16765,7 +16534,7 @@ videojs.bind = Fn.bind; * @mixes videojs * @method plugin */ -videojs.plugin = _plugin2['default']; +videojs.plugin = _pluginsJs2['default']; /** * Adding languages so that they're available to all players. @@ -16783,7 +16552,7 @@ videojs.addLanguage = function (code, data) { var _merge; code = ('' + code).toLowerCase(); - return _merge3['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; + return _lodashCompatObjectMerge2['default'](videojs.options.languages, (_merge = {}, _merge[code] = data, _merge))[code]; }; /** @@ -16791,7 +16560,7 @@ videojs.addLanguage = function (code, data) { * * @param {...Object} messages One or more messages to log */ -videojs.log = _log2['default']; +videojs.log = _utilsLogJs2['default']; /** * Creates an emulated TimeRange object. @@ -16801,7 +16570,7 @@ videojs.log = _log2['default']; * @return {Object} Fake TimeRange object * @method createTimeRange */ -videojs.createTimeRange = _createTimeRange.createTimeRange; +videojs.createTimeRange = _utilsTimeRangesJs.createTimeRange; /** * Format seconds as a time string, H:MM:SS or M:SS @@ -16813,7 +16582,7 @@ videojs.createTimeRange = _createTimeRange.createTimeRange; * @return {String} Time formatted as H:MM:SS or M:SS * @method formatTime */ -videojs.formatTime = _formatTime2['default']; +videojs.formatTime = _utilsFormatTimeJs2['default']; /** * Simple http request for retrieving external files (e.g. text tracks) @@ -16844,7 +16613,7 @@ videojs.formatTime = _formatTime2['default']; * @param {Function} callback The callback function * @returns {Object} The request */ -videojs.xhr = _xhr2['default']; +videojs.xhr = _xhrJs2['default']; /** * Resolve and parse the elements of a URL @@ -16860,7 +16629,7 @@ videojs.parseUrl = Url.parseUrl; * * @type {Function} */ -videojs.EventTarget = _EventTarget2['default']; +videojs.EventTarget = _eventTarget2['default']; /** * Add an event listener to element @@ -16930,44 +16699,46 @@ videojs.trigger = Events.trigger; * still support requirejs and browserify. This also needs to be closure * compiler compatible, so string keys are used. */ -if (typeof define === 'function' && define.amd) { +if (typeof define === 'function' && define['amd']) { define('videojs', [], function () { return videojs; }); // checking that module is an object too because of umdjs/umd#35 } else if (typeof exports === 'object' && typeof module === 'object') { - module.exports = videojs; -} + module['exports'] = videojs; + } exports['default'] = videojs; module.exports = exports['default']; -},{"../../src/js/utils/merge-options.js":117,"./component":52,"./event-target":83,"./extends.js":84,"./player":91,"./plugins.js":92,"./setup":94,"./tech/flash.js":97,"./tech/html5.js":98,"./utils/browser.js":108,"./utils/create-deprecation-proxy.js":110,"./utils/dom.js":111,"./utils/events.js":112,"./utils/fn.js":113,"./utils/format-time.js":114,"./utils/log.js":116,"./utils/stylesheet.js":118,"./utils/time-ranges.js":119,"./utils/url.js":121,"./xhr.js":123,"global/document":1,"lodash-compat/object/merge":40,"object.assign":44}],123:[function(_dereq_,module,exports){ -'use strict'; - -var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; - -exports.__esModule = true; +},{"../../src/js/utils/merge-options.js":113,"./component":48,"./event-target":79,"./extends.js":80,"./player":87,"./plugins.js":88,"./setup":90,"./tech/flash.js":93,"./tech/html5.js":94,"./utils/browser.js":104,"./utils/create-deprecation-proxy.js":106,"./utils/dom.js":107,"./utils/events.js":108,"./utils/fn.js":109,"./utils/format-time.js":110,"./utils/log.js":112,"./utils/stylesheet.js":114,"./utils/time-ranges.js":115,"./utils/url.js":117,"./xhr.js":119,"global/document":1,"lodash-compat/object/merge":37,"object.assign":40}],119:[function(_dereq_,module,exports){ /** * @file xhr.js */ +'use strict'; -var _import = _dereq_('./utils/url.js'); +exports.__esModule = true; -var Url = _interopRequireWildcard(_import); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _log = _dereq_('./utils/log.js'); +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; } } -var _log2 = _interopRequireWildcard(_log); +var _utilsUrlJs = _dereq_('./utils/url.js'); -var _mergeOptions = _dereq_('./utils/merge-options.js'); +var Url = _interopRequireWildcard(_utilsUrlJs); -var _mergeOptions2 = _interopRequireWildcard(_mergeOptions); +var _utilsLogJs = _dereq_('./utils/log.js'); -var _window = _dereq_('global/window'); +var _utilsLogJs2 = _interopRequireDefault(_utilsLogJs); -var _window2 = _interopRequireWildcard(_window); +var _utilsMergeOptionsJs = _dereq_('./utils/merge-options.js'); + +var _utilsMergeOptionsJs2 = _interopRequireDefault(_utilsMergeOptionsJs); + +var _globalWindow = _dereq_('global/window'); + +var _globalWindow2 = _interopRequireDefault(_globalWindow); /* * Simple http request for retrieving external files (e.g. text tracks) @@ -17008,26 +16779,26 @@ var xhr = function xhr(options, callback) { } // Merge with default options - options = _mergeOptions2['default']({ + options = _utilsMergeOptionsJs2['default']({ method: 'GET', timeout: 45 * 1000 }, options); callback = callback || function () {}; - var XHR = _window2['default'].XMLHttpRequest; + var XHR = _globalWindow2['default'].XMLHttpRequest; if (typeof XHR === 'undefined') { // Shim XMLHttpRequest for older IEs XHR = function () { try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch (f) {} try { - return new _window2['default'].ActiveXObject('Msxml2.XMLHTTP'); + return new _globalWindow2['default'].ActiveXObject('Msxml2.XMLHTTP'); } catch (g) {} throw new Error('This browser does not support XMLHttpRequest.'); }; @@ -17038,18 +16809,18 @@ var xhr = function xhr(options, callback) { request.uri = options.uri; var urlInfo = Url.parseUrl(options.uri); - var winLoc = _window2['default'].location; + var winLoc = _globalWindow2['default'].location; var successHandler = function successHandler() { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); callback(null, request, request.response || request.responseText); }; var errorHandler = function errorHandler(err) { - _window2['default'].clearTimeout(abortTimeout); + _globalWindow2['default'].clearTimeout(abortTimeout); if (!err || typeof err === 'string') { - err = new Error(err); + err = new Error(err || 'XHR Failed with a response of: ' + (request && (request.response || request.responseText))); } callback(err, request); @@ -17062,8 +16833,8 @@ var xhr = function xhr(options, callback) { // XDomainRequest -- Use for IE if XMLHTTPRequest2 isn't available // 'withCredentials' is only available in XMLHTTPRequest2 // Also XDomainRequest has a lot of gotchas, so only use if cross domain - if (crossOrigin && _window2['default'].XDomainRequest && !('withCredentials' in request)) { - request = new _window2['default'].XDomainRequest(); + if (crossOrigin && _globalWindow2['default'].XDomainRequest && !('withCredentials' in request)) { + request = new _globalWindow2['default'].XDomainRequest(); request.onload = successHandler; request.onerror = errorHandler; // These blank handlers need to be set to fix ie9 @@ -17073,33 +16844,33 @@ var xhr = function xhr(options, callback) { // XMLHTTPRequest } else { - (function () { - var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; + (function () { + var fileUrl = urlInfo.protocol === 'file:' || winLoc.protocol === 'file:'; - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.timedout) { - return errorHandler('timeout'); - } + request.onreadystatechange = function () { + if (request.readyState === 4) { + if (request.timedout) { + return errorHandler('timeout'); + } - if (request.status === 200 || fileUrl && request.status === 0) { - successHandler(); - } else { - errorHandler(); + if (request.status === 200 || fileUrl && request.status === 0) { + successHandler(); + } else { + errorHandler(); + } } + }; + + if (options.timeout) { + abortTimeout = _globalWindow2['default'].setTimeout(function () { + if (request.readyState !== 4) { + request.timedout = true; + request.abort(); + } + }, options.timeout); } - }; - - if (options.timeout) { - abortTimeout = _window2['default'].setTimeout(function () { - if (request.readyState !== 4) { - request.timedout = true; - request.abort(); - } - }, options.timeout); - } - })(); - } + })(); + } // open the connection try { @@ -17131,7 +16902,7 @@ var xhr = function xhr(options, callback) { exports['default'] = xhr; module.exports = exports['default']; -},{"./utils/log.js":116,"./utils/merge-options.js":117,"./utils/url.js":121,"global/window":2}]},{},[122])(122) +},{"./utils/log.js":112,"./utils/merge-options.js":113,"./utils/url.js":117,"global/window":2}]},{},[118])(118) });