diff options
Diffstat (limited to 'libretube-theme/static/modules/plyr/plyr.polyfilled.js')
-rw-r--r-- | libretube-theme/static/modules/plyr/plyr.polyfilled.js | 2530 |
1 files changed, 1529 insertions, 1001 deletions
diff --git a/libretube-theme/static/modules/plyr/plyr.polyfilled.js b/libretube-theme/static/modules/plyr/plyr.polyfilled.js index a46575e..60040e9 100644 --- a/libretube-theme/static/modules/plyr/plyr.polyfilled.js +++ b/libretube-theme/static/modules/plyr/plyr.polyfilled.js @@ -2,7 +2,7 @@ typeof navigator === "object" && (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('Plyr', factory) : (global = global || self, global.Plyr = factory()); -}(this, function () { 'use strict'; +}(this, (function () { 'use strict'; // Polyfill for creating CustomEvents on IE9/10/11 // code pulled from: @@ -62,7 +62,6 @@ typeof navigator === "object" && (function (global, factory) { return module = { exports: {} }, fn(module, module.exports), module.exports; } - var O = 'object'; var check = function (it) { return it && it.Math == Math && it; }; @@ -70,10 +69,10 @@ typeof navigator === "object" && (function (global, factory) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global_1 = // eslint-disable-next-line no-undef - check(typeof globalThis == O && globalThis) || - check(typeof window == O && window) || - check(typeof self == O && self) || - check(typeof commonjsGlobal == O && commonjsGlobal) || + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func Function('return this')(); @@ -87,7 +86,7 @@ typeof navigator === "object" && (function (global, factory) { // Thank's IE8 for his funny defineProperty var descriptors = !fails(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); var nativePropertyIsEnumerable = {}.propertyIsEnumerable; @@ -229,7 +228,7 @@ typeof navigator === "object" && (function (global, factory) { f: f$2 }; - var hide = descriptors ? function (object, key, value) { + var createNonEnumerableProperty = descriptors ? function (object, key, value) { return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; @@ -238,33 +237,44 @@ typeof navigator === "object" && (function (global, factory) { var setGlobal = function (key, value) { try { - hide(global_1, key, value); + createNonEnumerableProperty(global_1, key, value); } catch (error) { global_1[key] = value; } return value; }; - var isPure = false; - - var shared = createCommonjsModule(function (module) { var SHARED = '__core-js_shared__'; var store = global_1[SHARED] || setGlobal(SHARED, {}); + var sharedStore = store; + + var functionToString = Function.toString; + + // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper + if (typeof sharedStore.inspectSource != 'function') { + sharedStore.inspectSource = function (it) { + return functionToString.call(it); + }; + } + + var inspectSource = sharedStore.inspectSource; + + var WeakMap$1 = global_1.WeakMap; + + var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(inspectSource(WeakMap$1)); + + var isPure = false; + + var shared = createCommonjsModule(function (module) { (module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); + return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); })('versions', []).push({ - version: '3.1.3', + version: '3.6.4', mode: 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); }); - var functionToString = shared('native-function-to-string', Function.toString); - - var WeakMap$1 = global_1.WeakMap; - - var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(functionToString.call(WeakMap$1)); - var id = 0; var postfix = Math.random(); @@ -297,25 +307,25 @@ typeof navigator === "object" && (function (global, factory) { }; if (nativeWeakMap) { - var store = new WeakMap$2(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; + var store$1 = new WeakMap$2(); + var wmget = store$1.get; + var wmhas = store$1.has; + var wmset = store$1.set; set = function (it, metadata) { - wmset.call(store, it, metadata); + wmset.call(store$1, it, metadata); return metadata; }; get = function (it) { - return wmget.call(store, it) || {}; + return wmget.call(store$1, it) || {}; }; has$1 = function (it) { - return wmhas.call(store, it); + return wmhas.call(store$1, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { - hide(it, STATE, metadata); + createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { @@ -337,18 +347,14 @@ typeof navigator === "object" && (function (global, factory) { var redefine = createCommonjsModule(function (module) { var getInternalState = internalState.get; var enforceInternalState = internalState.enforce; - var TEMPLATE = String(functionToString).split('toString'); - - shared('inspectSource', function (it) { - return functionToString.call(it); - }); + var TEMPLATE = String(String).split('String'); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); + if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global_1) { @@ -361,10 +367,10 @@ typeof navigator === "object" && (function (global, factory) { simple = true; } if (simple) O[key] = value; - else hide(O, key, value); + else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || functionToString.call(this); + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); }); }); @@ -401,7 +407,7 @@ typeof navigator === "object" && (function (global, factory) { // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). var toAbsoluteIndex = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min$1(integer, length); @@ -565,7 +571,7 @@ typeof navigator === "object" && (function (global, factory) { } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { - hide(sourceProperty, 'sham', true); + createNonEnumerableProperty(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); @@ -578,6 +584,12 @@ typeof navigator === "object" && (function (global, factory) { return !String(Symbol()); }); + var useSymbolAsUid = nativeSymbol + // eslint-disable-next-line no-undef + && !Symbol.sham + // eslint-disable-next-line no-undef + && typeof Symbol.iterator == 'symbol'; + // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray var isArray = Array.isArray || function isArray(arg) { @@ -610,49 +622,77 @@ typeof navigator === "object" && (function (global, factory) { var html = getBuiltIn('document', 'documentElement'); + var GT = '>'; + var LT = '<'; + var PROTOTYPE = 'prototype'; + var SCRIPT = 'script'; var IE_PROTO = sharedKey('IE_PROTO'); - var PROTOTYPE = 'prototype'; - var Empty = function () { /* empty */ }; + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; // Create object with fake `null` prototype: use iframe Object with cleared prototype - var createDict = function () { + var NullProtoObjectViaIFrame = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); - var length = enumBugKeys.length; - var lt = '<'; - var script = 'script'; - var gt = '>'; - var js = 'java' + script + ':'; + var JS = 'java' + SCRIPT + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); - iframe.src = String(js); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); - iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); + iframeDocument.write(scriptTag('document.F=Object')); iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); + return iframeDocument.F; }; + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + /* global ActiveXObject */ + activeXDocument = document.domain && new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); + }; + + hiddenKeys[IE_PROTO] = true; + // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create var objectCreate = Object.create || function create(O, Properties) { var result; if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; - } else result = createDict(); + } else result = NullProtoObject(); return Properties === undefined ? result : objectDefineProperties(result, Properties); }; - hiddenKeys[IE_PROTO] = true; - var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f; var toString$1 = {}.toString; @@ -679,17 +719,20 @@ typeof navigator === "object" && (function (global, factory) { f: f$5 }; + var WellKnownSymbolsStore = shared('wks'); var Symbol$1 = global_1.Symbol; - var store$1 = shared('wks'); + var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; var wellKnownSymbol = function (name) { - return store$1[name] || (store$1[name] = nativeSymbol && Symbol$1[name] - || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name)); + if (!has(WellKnownSymbolsStore, name)) { + if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name]; + else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; }; var f$6 = wellKnownSymbol; - var wrappedWellKnownSymbol = { + var wellKnownSymbolWrapped = { f: f$6 }; @@ -698,7 +741,7 @@ typeof navigator === "object" && (function (global, factory) { var defineWellKnownSymbol = function (NAME) { var Symbol = path.Symbol || (path.Symbol = {}); if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { - value: wrappedWellKnownSymbol.f(NAME) + value: wellKnownSymbolWrapped.f(NAME) }); }; @@ -721,7 +764,7 @@ typeof navigator === "object" && (function (global, factory) { }; // optional / simple context binding - var bindContext = function (fn, that, length) { + var functionBindContext = function (fn, that, length) { aFunction$1(fn); if (that === undefined) return fn; switch (length) { @@ -773,7 +816,7 @@ typeof navigator === "object" && (function (global, factory) { return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = indexedObject(O); - var boundFunction = bindContext(callbackfn, that, 3); + var boundFunction = functionBindContext(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate; @@ -830,8 +873,7 @@ typeof navigator === "object" && (function (global, factory) { var getInternalState = internalState.getterFor(SYMBOL); var ObjectPrototype = Object[PROTOTYPE$1]; var $Symbol = global_1.Symbol; - var JSON$1 = global_1.JSON; - var nativeJSONStringify = JSON$1 && JSON$1.stringify; + var $stringify = getBuiltIn('JSON', 'stringify'); var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; var nativeDefineProperty$1 = objectDefineProperty.f; var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f; @@ -840,7 +882,7 @@ typeof navigator === "object" && (function (global, factory) { var ObjectPrototypeSymbols = shared('op-symbols'); var StringToSymbolRegistry = shared('string-to-symbol-registry'); var SymbolToStringRegistry = shared('symbol-to-string-registry'); - var WellKnownSymbolsStore = shared('wks'); + var WellKnownSymbolsStore$1 = shared('wks'); var QObject = global_1.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; @@ -870,7 +912,7 @@ typeof navigator === "object" && (function (global, factory) { return symbol; }; - var isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) { + var isSymbol = useSymbolAsUid ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol; @@ -965,12 +1007,20 @@ typeof navigator === "object" && (function (global, factory) { return getInternalState(this).tag; }); + redefine($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + objectPropertyIsEnumerable.f = $propertyIsEnumerable; objectDefineProperty.f = $defineProperty; objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor; objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames; objectGetOwnPropertySymbols.f = $getOwnPropertySymbols; + wellKnownSymbolWrapped.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + if (descriptors) { // https://github.com/tc39/proposal-Symbol-description nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', { @@ -983,17 +1033,13 @@ typeof navigator === "object" && (function (global, factory) { redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); } } - - wrappedWellKnownSymbol.f = function (name) { - return wrap(wellKnownSymbol(name), name); - }; } _export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, { Symbol: $Symbol }); - $forEach(objectKeys(WellKnownSymbolsStore), function (name) { + $forEach(objectKeys(WellKnownSymbolsStore$1), function (name) { defineWellKnownSymbol(name); }); @@ -1052,34 +1098,41 @@ typeof navigator === "object" && (function (global, factory) { // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify - JSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () { - var symbol = $Symbol(); - // MS Edge converts symbol values to JSON as {} - return nativeJSONStringify([symbol]) != '[null]' - // WebKit converts symbol values to JSON as null - || nativeJSONStringify({ a: symbol }) != '{}' - // V8 throws on boxed symbols - || nativeJSONStringify(Object(symbol)) != '{}'; - }) }, { - stringify: function stringify(it) { - var args = [it]; - var index = 1; - var replacer, $replacer; - while (arguments.length > index) args.push(arguments[index++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return nativeJSONStringify.apply(JSON$1, args); - } - }); + if ($stringify) { + var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () { + var symbol = $Symbol(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; + }); + + _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var args = [it]; + var index = 1; + var $replacer; + while (arguments.length > index) args.push(arguments[index++]); + $replacer = replacer; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return $stringify.apply(null, args); + } + }); + } // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive - if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); + if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) { + createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); + } // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag setToStringTag($Symbol, SYMBOL); @@ -1133,13 +1186,88 @@ typeof navigator === "object" && (function (global, factory) { // https://tc39.github.io/ecma262/#sec-symbol.iterator defineWellKnownSymbol('iterator'); + var arrayMethodIsStrict = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal + method.call(null, argument || function () { throw 1; }, 1); + }); + }; + + var defineProperty$3 = Object.defineProperty; + var cache = {}; + + var thrower = function (it) { throw it; }; + + var arrayMethodUsesToLength = function (METHOD_NAME, options) { + if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; + if (!options) options = {}; + var method = [][METHOD_NAME]; + var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; + var argument0 = has(options, 0) ? options[0] : thrower; + var argument1 = has(options, 1) ? options[1] : undefined; + + return cache[METHOD_NAME] = !!method && !fails(function () { + if (ACCESSORS && !descriptors) return true; + var O = { length: -1 }; + + if (ACCESSORS) defineProperty$3(O, 1, { enumerable: true, get: thrower }); + else O[1] = 1; + + method.call(O, argument0, argument1); + }); + }; + + var $forEach$1 = arrayIteration.forEach; + + + + var STRICT_METHOD = arrayMethodIsStrict('forEach'); + var USES_TO_LENGTH = arrayMethodUsesToLength('forEach'); + + // `Array.prototype.forEach` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + var arrayForEach = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) { + return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } : [].forEach; + + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + _export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, { + forEach: arrayForEach + }); + + var $indexOf = arrayIncludes.indexOf; + + + + var nativeIndexOf = [].indexOf; + + var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; + var STRICT_METHOD$1 = arrayMethodIsStrict('indexOf'); + var USES_TO_LENGTH$1 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + _export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD$1 || !USES_TO_LENGTH$1 }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } + }); + var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype[UNSCOPABLES] == undefined) { - hide(ArrayPrototype, UNSCOPABLES, objectCreate(null)); + objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: objectCreate(null) + }); } // add a key to Array.prototype[@@unscopables] @@ -1190,7 +1318,9 @@ typeof navigator === "object" && (function (global, factory) { if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() - if ( !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); + if ( !has(IteratorPrototype, ITERATOR)) { + createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); + } var iteratorsCore = { IteratorPrototype: IteratorPrototype, @@ -1281,7 +1411,7 @@ typeof navigator === "object" && (function (global, factory) { if (objectSetPrototypeOf) { objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2); } else if (typeof CurrentIteratorPrototype[ITERATOR$1] != 'function') { - hide(CurrentIteratorPrototype, ITERATOR$1, returnThis$2); + createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$1, returnThis$2); } } // Set @@toStringTag to native iterators @@ -1297,7 +1427,7 @@ typeof navigator === "object" && (function (global, factory) { // define iterator if ( IterablePrototype[ITERATOR$1] !== defaultIterator) { - hide(IterablePrototype, ITERATOR$1, defaultIterator); + createNonEnumerableProperty(IterablePrototype, ITERATOR$1, defaultIterator); } iterators[NAME] = defaultIterator; @@ -1365,22 +1495,14 @@ typeof navigator === "object" && (function (global, factory) { addToUnscopables('values'); addToUnscopables('entries'); - var sloppyArrayMethod = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !method || !fails(function () { - // eslint-disable-next-line no-useless-call,no-throw-literal - method.call(null, argument || function () { throw 1; }, 1); - }); - }; - var nativeJoin = [].join; var ES3_STRINGS = indexedObject != Object; - var SLOPPY_METHOD = sloppyArrayMethod('join', ','); + var STRICT_METHOD$2 = arrayMethodIsStrict('join', ','); // `Array.prototype.join` method // https://tc39.github.io/ecma262/#sec-array.prototype.join - _export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, { + _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$2 }, { join: function join(separator) { return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); } @@ -1392,10 +1514,33 @@ typeof navigator === "object" && (function (global, factory) { else object[propertyKey] = value; }; + var engineUserAgent = getBuiltIn('navigator', 'userAgent') || ''; + + var process = global_1.process; + var versions = process && process.versions; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; + } else if (engineUserAgent) { + match = engineUserAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = engineUserAgent.match(/Chrome\/(\d+)/); + if (match) version = match[1]; + } + } + + var engineV8Version = version && +version; + var SPECIES$1 = wellKnownSymbol('species'); var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { - return !fails(function () { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return engineV8Version >= 51 || !fails(function () { var array = []; var constructor = array.constructor = {}; constructor[SPECIES$1] = function () { @@ -1405,6 +1550,9 @@ typeof navigator === "object" && (function (global, factory) { }); }; + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + var USES_TO_LENGTH$2 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 }); + var SPECIES$2 = wellKnownSymbol('species'); var nativeSlice = [].slice; var max$1 = Math.max; @@ -1412,7 +1560,7 @@ typeof navigator === "object" && (function (global, factory) { // `Array.prototype.slice` method // https://tc39.github.io/ecma262/#sec-array.prototype.slice // fallback for not array-like ES3 strings and DOM objects - _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, { + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$2 }, { slice: function slice(start, end) { var O = toIndexedObject(this); var length = toLength(O.length); @@ -1441,6 +1589,13 @@ typeof navigator === "object" && (function (global, factory) { }); var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); + var test = {}; + + test[TO_STRING_TAG$1] = 'z'; + + var toStringTagSupport = String(test) === '[object z]'; + + var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; @@ -1452,34 +1607,27 @@ typeof navigator === "object" && (function (global, factory) { }; // getting tag from ES6+ `Object.prototype.toString` - var classof = function (it) { + var classof = toStringTagSupport ? classofRaw : function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$2)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; }; - var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$2] = 'z'; - // `Object.prototype.toString` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - var objectToString = String(test) !== '[object z]' ? function toString() { + var objectToString = toStringTagSupport ? {}.toString : function toString() { return '[object ' + classof(this) + ']'; - } : test.toString; - - var ObjectPrototype$2 = Object.prototype; + }; // `Object.prototype.toString` method // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - if (objectToString !== ObjectPrototype$2.toString) { - redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true }); + if (!toStringTagSupport) { + redefine(Object.prototype, 'toString', objectToString, { unsafe: true }); } // `RegExp.prototype.flags` getter implementation @@ -1496,6 +1644,119 @@ typeof navigator === "object" && (function (global, factory) { return result; }; + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, + // so we use an intermediate function. + function RE(s, f) { + return RegExp(s, f); + } + + var UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; + }); + + var BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; + }); + + var regexpStickyHelpers = { + UNSUPPORTED_Y: UNSUPPORTED_Y, + BROKEN_CARET: BROKEN_CARET + }; + + var nativeExec = RegExp.prototype.exec; + // This always refers to the native implementation, because the + // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, + // which loads this file before patching the method. + var nativeReplace = String.prototype.replace; + + var patchedExec = nativeExec; + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1; + + if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y$1 && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; + } + + var regexpExec = patchedExec; + + _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, { + exec: regexpExec + }); + var TO_STRING = 'toString'; var RegExpPrototype = RegExp.prototype; var nativeToString = RegExpPrototype[TO_STRING]; @@ -1570,57 +1831,13 @@ typeof navigator === "object" && (function (global, factory) { return { value: point, done: false }; }); - var nativeExec = RegExp.prototype.exec; - // This always refers to the native implementation, because the - // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, - // which loads this file before patching the method. - var nativeReplace = String.prototype.replace; + // TODO: Remove from `core-js@4` since it's moved to entry points - var patchedExec = nativeExec; - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; - if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = nativeExec.call(re, str); - - if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - return match; - }; - } - var regexpExec = patchedExec; var SPECIES$3 = wellKnownSymbol('species'); @@ -1637,6 +1854,21 @@ typeof navigator === "object" && (function (global, factory) { return ''.replace(re, '$<a>') !== '7'; }); + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + return 'a'.replace(/./, '$0') === '$0'; + })(); + + var REPLACE = wellKnownSymbol('replace'); + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; + })(); + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec // Weex JS has frozen built-in prototypes, so use try / catch wrapper var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { @@ -1661,15 +1893,22 @@ typeof navigator === "object" && (function (global, factory) { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; - re.exec = function () { execCalled = true; return null; }; if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; re.constructor[SPECIES$3] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; } + re.exec = function () { execCalled = true; return null; }; + re[SYMBOL](''); return !execCalled; }); @@ -1677,7 +1916,11 @@ typeof navigator === "object" && (function (global, factory) { if ( !DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'replace' && !( + REPLACE_SUPPORTS_NAMED_GROUPS && + REPLACE_KEEPS_$0 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + )) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) ) { var nativeRegExpMethod = /./[SYMBOL]; @@ -1692,6 +1935,9 @@ typeof navigator === "object" && (function (global, factory) { return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE }); var stringMethod = methods[0]; var regexMethod = methods[1]; @@ -1705,8 +1951,9 @@ typeof navigator === "object" && (function (global, factory) { // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return regexMethod.call(string, this); } ); - if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); } + + if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); }; var charAt$1 = stringMultibyte.charAt; @@ -1747,7 +1994,11 @@ typeof navigator === "object" && (function (global, factory) { }; // @@replace logic - fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { + fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + return [ // `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace @@ -1761,8 +2012,13 @@ typeof navigator === "object" && (function (global, factory) { // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { - var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); - if (res.done) return res.value; + if ( + (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || + (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) + ) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + } var rx = anObject(regexp); var S = String(this); @@ -2066,21 +2322,12 @@ typeof navigator === "object" && (function (global, factory) { TouchList: 0 }; - var $forEach$1 = arrayIteration.forEach; - - - // `Array.prototype.forEach` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - var arrayForEach = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) { - return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } : [].forEach; - for (var COLLECTION_NAME in domIterables) { var Collection = global_1[COLLECTION_NAME]; var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try { - hide(CollectionPrototype, 'forEach', arrayForEach); + createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach); } catch (error) { CollectionPrototype.forEach = arrayForEach; } @@ -2096,15 +2343,17 @@ typeof navigator === "object" && (function (global, factory) { if (CollectionPrototype$1) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[ITERATOR$2] !== ArrayValues) try { - hide(CollectionPrototype$1, ITERATOR$2, ArrayValues); + createNonEnumerableProperty(CollectionPrototype$1, ITERATOR$2, ArrayValues); } catch (error) { CollectionPrototype$1[ITERATOR$2] = ArrayValues; } - if (!CollectionPrototype$1[TO_STRING_TAG$3]) hide(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1); + if (!CollectionPrototype$1[TO_STRING_TAG$3]) { + createNonEnumerableProperty(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1); + } if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try { - hide(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); + createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); } catch (error) { CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME]; } @@ -2115,13 +2364,18 @@ typeof navigator === "object" && (function (global, factory) { var ITERATOR$3 = wellKnownSymbol('iterator'); var nativeUrl = !fails(function () { - var url = new URL('b?e=1', 'http://a'); + var url = new URL('b?a=1&b=2&c=3', 'http://a'); var searchParams = url.searchParams; + var result = ''; url.pathname = 'c%20d'; + searchParams.forEach(function (value, key) { + searchParams['delete']('b'); + result += key + value; + }); return (isPure && !url.toJSON) || !searchParams.sort - || url.href !== 'http://a/c%20d?e=1' - || searchParams.get('e') !== '1' + || url.href !== 'http://a/c%20d?a=1&c=3' + || searchParams.get('c') !== '3' || String(new URLSearchParams('?a=1')) !== 'a=1' || !searchParams[ITERATOR$3] // throws in Edge @@ -2130,7 +2384,11 @@ typeof navigator === "object" && (function (global, factory) { // not punycoded in Edge || new URL('http://тест').host !== 'xn--e1aybc' // not escaped in Chrome 62- - || new URL('http://a#б').hash !== '#%D0%B1'; + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; }); var anInstance = function (it, Constructor, name) { @@ -2140,11 +2398,22 @@ typeof navigator === "object" && (function (global, factory) { }; var nativeAssign = Object.assign; + var defineProperty$4 = Object.defineProperty; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign - // should work with symbols and should have deterministic property order (V8 bug) var objectAssign = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty$4({}, 'a', { + enumerable: true, + get: function () { + defineProperty$4(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) var A = {}; var B = {}; // eslint-disable-next-line no-undef @@ -2208,25 +2477,25 @@ typeof navigator === "object" && (function (global, factory) { var argumentsLength = arguments.length; var mapfn = argumentsLength > 1 ? arguments[1] : undefined; var mapping = mapfn !== undefined; - var index = 0; var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) mapfn = bindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + var index = 0; + var length, result, step, iterator, next, value; + if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { iterator = iteratorMethod.call(O); + next = iterator.next; result = new C(); - for (;!(step = iterator.next()).done; index++) { - createProperty(result, index, mapping - ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) - : step.value - ); + for (;!(step = next.call(iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); } } else { length = toLength(O.length); result = new C(length); for (;length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); } } result.length = index; @@ -2390,7 +2659,7 @@ typeof navigator === "object" && (function (global, factory) { return output.join(''); }; - var punycodeToAscii = function (input) { + var stringPunycodeToAscii = function (input) { var encoded = []; var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.'); var i, label; @@ -2431,6 +2700,12 @@ typeof navigator === "object" && (function (global, factory) { + + + + + var $fetch = getBuiltIn('fetch'); + var Headers = getBuiltIn('Headers'); var ITERATOR$6 = wellKnownSymbol('iterator'); var URL_SEARCH_PARAMS = 'URLSearchParams'; var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; @@ -2535,7 +2810,7 @@ typeof navigator === "object" && (function (global, factory) { var init = arguments.length > 0 ? arguments[0] : undefined; var that = this; var entries = []; - var iteratorMethod, iterator, step, entryIterator, first, second, key; + var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; setInternalState$3(that, { type: URL_SEARCH_PARAMS, @@ -2549,12 +2824,14 @@ typeof navigator === "object" && (function (global, factory) { iteratorMethod = getIteratorMethod(init); if (typeof iteratorMethod === 'function') { iterator = iteratorMethod.call(init); - while (!(step = iterator.next()).done) { + next = iterator.next; + while (!(step = next.call(iterator)).done) { entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; if ( - (first = entryIterator.next()).done || - (second = entryIterator.next()).done || - !entryIterator.next().done + (first = entryNext.call(entryIterator)).done || + (second = entryNext.call(entryIterator)).done || + !entryNext.call(entryIterator).done ) throw TypeError('Expected sequence with length 2'); entries.push({ key: first.value + '', value: second.value + '' }); } @@ -2675,7 +2952,7 @@ typeof navigator === "object" && (function (global, factory) { // `URLSearchParams.prototype.forEach` method forEach: function forEach(callback /* , thisArg */) { var entries = getInternalParamsState(this).entries; - var boundFunction = bindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); var index = 0; var entry; while (index < entries.length) { @@ -2719,6 +2996,34 @@ typeof navigator === "object" && (function (global, factory) { URLSearchParams: URLSearchParamsConstructor }); + // Wrap `fetch` for correct work with polyfilled `URLSearchParams` + // https://github.com/zloirock/core-js/issues/674 + if (!nativeUrl && typeof $fetch == 'function' && typeof Headers == 'function') { + _export({ global: true, enumerable: true, forced: true }, { + fetch: function fetch(input /* , init */) { + var args = [input]; + var init, body, headers; + if (arguments.length > 1) { + init = arguments[1]; + if (isObject(init)) { + body = init.body; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headers.has('content-type')) { + headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + init = objectCreate(init, { + body: createPropertyDescriptor(0, String(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } + args.push(init); + } return $fetch.apply(this, args); + } + }); + } + var web_urlSearchParams = { URLSearchParams: URLSearchParamsConstructor, getState: getInternalParamsState @@ -2789,7 +3094,7 @@ typeof navigator === "object" && (function (global, factory) { } url.host = result; } else { - input = punycodeToAscii(input); + input = stringPunycodeToAscii(input); if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST; result = parseIPv4(input); if (result === null) return INVALID_HOST; @@ -2985,7 +3290,6 @@ typeof navigator === "object" && (function (global, factory) { var specialSchemes = { ftp: 21, file: null, - gopher: 70, http: 80, https: 443, ws: 80, @@ -3733,6 +4037,8 @@ typeof navigator === "object" && (function (global, factory) { }); function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; @@ -3783,6 +4089,40 @@ typeof navigator === "object" && (function (global, factory) { return obj; } + function ownKeys$1(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys$1(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys$1(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } @@ -3808,6 +4148,10 @@ typeof navigator === "object" && (function (global, factory) { } function _iterableToArrayLimit(arr, i) { + if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { + return; + } + var _arr = []; var _n = true; var _d = false; @@ -4015,7 +4359,16 @@ typeof navigator === "object" && (function (global, factory) { global.URLSearchParams = URLSearchParams; }; - if (!('URLSearchParams' in global) || new global.URLSearchParams('?a=1').toString() !== 'a=1') { + var checkIfURLSearchParamsSupported = function checkIfURLSearchParamsSupported() { + try { + var URLSearchParams = global.URLSearchParams; + return new URLSearchParams('?a=1').toString() === 'a=1' && typeof URLSearchParams.prototype.set === 'function'; + } catch (e) { + return false; + } + }; + + if (!checkIfURLSearchParamsSupported()) { polyfillURLSearchParams(); } @@ -4096,7 +4449,7 @@ typeof navigator === "object" && (function (global, factory) { var checkIfURLIsSupported = function checkIfURLIsSupported() { try { var u = new global.URL('b', 'http://a'); - u.pathname = 'c%20d'; + u.pathname = 'c d'; return u.href === 'http://a/c%20d' && u.searchParams; } catch (e) { return false; @@ -4314,7 +4667,10 @@ typeof navigator === "object" && (function (global, factory) { var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; - var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () { var array = []; array[IS_CONCAT_SPREADABLE] = false; return array.concat()[0] !== array; @@ -4358,10 +4714,15 @@ typeof navigator === "object" && (function (global, factory) { var $filter = arrayIteration.filter; + + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('filter'); + // Edge 14- issue + var USES_TO_LENGTH$3 = arrayMethodUsesToLength('filter'); + // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, { + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$3 }, { filter: function filter(callbackfn /* , thisArg */) { return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } @@ -4370,15 +4731,18 @@ typeof navigator === "object" && (function (global, factory) { var $find = arrayIteration.find; + var FIND = 'find'; var SKIPS_HOLES = true; + var USES_TO_LENGTH$4 = arrayMethodUsesToLength(FIND); + // Shouldn't skip holes if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find - _export({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + _export({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH$4 }, { find: function find(callbackfn /* , that = undefined */) { return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } @@ -4437,9 +4801,12 @@ typeof navigator === "object" && (function (global, factory) { var $includes = arrayIncludes.includes; + + var USES_TO_LENGTH$5 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes - _export({ target: 'Array', proto: true }, { + _export({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$5 }, { includes: function includes(el /* , fromIndex = 0 */) { return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } @@ -4451,10 +4818,15 @@ typeof navigator === "object" && (function (global, factory) { var $map = arrayIteration.map; + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('map'); + // FF49- issue + var USES_TO_LENGTH$6 = arrayMethodUsesToLength('map'); + // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, { + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$6 }, { map: function map(callbackfn /* , thisArg */) { return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } @@ -4507,7 +4879,7 @@ typeof navigator === "object" && (function (global, factory) { var getOwnPropertyNames = objectGetOwnPropertyNames.f; var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; - var defineProperty$3 = objectDefineProperty.f; + var defineProperty$5 = objectDefineProperty.f; var trim = stringTrim.trim; var NUMBER = 'Number'; @@ -4565,7 +4937,7 @@ typeof navigator === "object" && (function (global, factory) { 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' ).split(','), j = 0, key; keys$1.length > j; j++) { if (has(NativeNumber, key = keys$1[j]) && !has(NumberWrapper, key)) { - defineProperty$3(NumberWrapper, key, getOwnPropertyDescriptor$2(NativeNumber, key)); + defineProperty$5(NumberWrapper, key, getOwnPropertyDescriptor$2(NativeNumber, key)); } } NumberWrapper.prototype = NumberPrototype; @@ -4688,8 +5060,8 @@ typeof navigator === "object" && (function (global, factory) { }; var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = bindContext(fn, that, AS_ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, step; + var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1); + var iterator, iterFn, index, length, result, next, step; if (IS_ITERATOR) { iterator = iterable; @@ -4708,9 +5080,10 @@ typeof navigator === "object" && (function (global, factory) { iterator = iterFn.call(iterable); } - while (!(step = iterator.next()).done) { + next = iterator.next; + while (!(step = next.call(iterator)).done) { result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); - if (result && result instanceof Result) return result; + if (typeof result == 'object' && result && result instanceof Result) return result; } return new Result(false); }; @@ -4719,27 +5092,29 @@ typeof navigator === "object" && (function (global, factory) { }; }); - var collection = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) { + var collection = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; var NativeConstructor = global_1[CONSTRUCTOR_NAME]; var NativePrototype = NativeConstructor && NativeConstructor.prototype; var Constructor = NativeConstructor; - var ADDER = IS_MAP ? 'set' : 'add'; var exported = {}; var fixMethod = function (KEY) { var nativeMethod = NativePrototype[KEY]; redefine(NativePrototype, KEY, - KEY == 'add' ? function add(a) { - nativeMethod.call(this, a === 0 ? 0 : a); + KEY == 'add' ? function add(value) { + nativeMethod.call(this, value === 0 ? 0 : value); return this; - } : KEY == 'delete' ? function (a) { - return IS_WEAK && !isObject(a) ? false : nativeMethod.call(this, a === 0 ? 0 : a); - } : KEY == 'get' ? function get(a) { - return IS_WEAK && !isObject(a) ? undefined : nativeMethod.call(this, a === 0 ? 0 : a); - } : KEY == 'has' ? function has(a) { - return IS_WEAK && !isObject(a) ? false : nativeMethod.call(this, a === 0 ? 0 : a); - } : function set(a, b) { - nativeMethod.call(this, a === 0 ? 0 : a, b); + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : function set(key, value) { + nativeMethod.call(this, key === 0 ? 0 : key, value); return this; } ); @@ -4756,7 +5131,7 @@ typeof navigator === "object" && (function (global, factory) { var instance = new Constructor(); // early implementations not supports chaining var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); // most early implementations doesn't supports iterables, most modern - not close it correctly // eslint-disable-next-line no-new @@ -4937,15 +5312,15 @@ typeof navigator === "object" && (function (global, factory) { var isExtensible = Object.isExtensible; var InternalWeakMap; - var wrapper = function (get) { + var wrapper = function (init) { return function WeakMap() { - return get(this, arguments.length ? arguments[0] : undefined); + return init(this, arguments.length ? arguments[0] : undefined); }; }; // `WeakMap` constructor // https://tc39.github.io/ecma262/#sec-weakmap-constructor - var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak, true, true); + var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); // IE11 WeakMap frozen keys fix // We can't use feature detection because it crash some old IE builds @@ -4992,6 +5367,21 @@ typeof navigator === "object" && (function (global, factory) { } }); + var $every = arrayIteration.every; + + + + var STRICT_METHOD$3 = arrayMethodIsStrict('every'); + var USES_TO_LENGTH$7 = arrayMethodUsesToLength('every'); + + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$3 || !USES_TO_LENGTH$7 }, { + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { @@ -5002,7 +5392,7 @@ typeof navigator === "object" && (function (global, factory) { // check that a method works with the correct list // of whitespaces and has a correct name - var forcedStringTrimMethod = function (METHOD_NAME) { + var stringTrimForced = function (METHOD_NAME) { return fails(function () { return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; }); @@ -5013,12 +5403,27 @@ typeof navigator === "object" && (function (global, factory) { // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim - _export({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + _export({ target: 'String', proto: true, forced: stringTrimForced('trim') }, { trim: function trim() { return $trim(this); } }); + var $some = arrayIteration.some; + + + + var STRICT_METHOD$4 = arrayMethodIsStrict('some'); + var USES_TO_LENGTH$8 = arrayMethodUsesToLength('some'); + + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$4 || !USES_TO_LENGTH$8 }, { + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + // `thisNumberValue` abstract operation // https://tc39.github.io/ecma262/#sec-thisnumbervalue var thisNumberValue = function (value) { @@ -5209,38 +5614,6 @@ typeof navigator === "object" && (function (global, factory) { } }); - var defaults = { - addCSS: true, - // Add CSS to the element to improve usability (required here or in your CSS!) - thumbWidth: 15, - // The width of the thumb handle - watch: true // Watch for new elements that match a string target - - }; - - // Element matches a selector - function matches(element, selector) { - - function match() { - return Array.from(document.querySelectorAll(selector)).includes(this); - } - - var matches = match; - return matches.call(element, selector); - } - - // Trigger event - function trigger(element, type) { - if (!element || !type) { - return; - } // Create and dispatch the event - - - var event = new Event(type); // Dispatch the event - - element.dispatchEvent(event); - } - // `Number.isNaN` method // https://tc39.github.io/ecma262/#sec-number.isnan _export({ target: 'Number', stat: true }, { @@ -5250,74 +5623,37 @@ typeof navigator === "object" && (function (global, factory) { } }); - // ========================================================================== - // Type checking utils - // ========================================================================== - var getConstructor = function getConstructor(input) { - return input !== null && typeof input !== 'undefined' ? input.constructor : null; - }; - - var instanceOf = function instanceOf(input, constructor) { - return Boolean(input && constructor && input instanceof constructor); - }; - - var isNullOrUndefined = function isNullOrUndefined(input) { - return input === null || typeof input === 'undefined'; - }; - - var isObject$1 = function isObject(input) { - return getConstructor(input) === Object; - }; - - var isNumber = function isNumber(input) { - return getConstructor(input) === Number && !Number.isNaN(input); - }; - - var isString = function isString(input) { - return getConstructor(input) === String; - }; - - var isBoolean = function isBoolean(input) { - return getConstructor(input) === Boolean; - }; - - var isFunction = function isFunction(input) { - return getConstructor(input) === Function; - }; + var nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; - var isArray$1 = function isArray(input) { - return Array.isArray(input); - }; - var isNodeList = function isNodeList(input) { - return instanceOf(input, NodeList); - }; + var FAILS_ON_PRIMITIVES$1 = fails(function () { nativeGetOwnPropertyDescriptor$2(1); }); + var FORCED$2 = !descriptors || FAILS_ON_PRIMITIVES$1; - var isElement = function isElement(input) { - return instanceOf(input, Element); - }; - - var isEvent = function isEvent(input) { - return instanceOf(input, Event); - }; - - var isEmpty = function isEmpty(input) { - return isNullOrUndefined(input) || (isString(input) || isArray$1(input) || isNodeList(input)) && !input.length || isObject$1(input) && !Object.keys(input).length; - }; + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor + _export({ target: 'Object', stat: true, forced: FORCED$2, sham: !descriptors }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor$2(toIndexedObject(it), key); + } + }); - var is = { - nullOrUndefined: isNullOrUndefined, - object: isObject$1, - number: isNumber, - string: isString, - boolean: isBoolean, - function: isFunction, - array: isArray$1, - nodeList: isNodeList, - element: isElement, - event: isEvent, - empty: isEmpty - }; + // `Object.getOwnPropertyDescriptors` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors + _export({ target: 'Object', stat: true, sham: !descriptors }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty(result, key, descriptor); + } + return result; + } + }); // @@match logic fixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { @@ -5356,221 +5692,226 @@ typeof navigator === "object" && (function (global, factory) { ]; }); - // Get the number of decimal places - function getDecimalPlaces(value) { - var match = "".concat(value).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + function _classCallCheck$1(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function"); + } - if (!match) { - return 0; + function _defineProperties$1(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r); } + } + + function _createClass$1(e, t, n) { + return t && _defineProperties$1(e.prototype, t), n && _defineProperties$1(e, n), e; + } + + function _defineProperty$1(e, t, n) { + return t in e ? Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[t] = n, e; + } - return Math.max(0, // Number of digits right of decimal point. - (match[1] ? match[1].length : 0) - ( // Adjust for scientific notation. - match[2] ? +match[2] : 0)); - } // Round to the nearest step + function ownKeys$2(e, t) { + var n = Object.keys(e); - function round(number, step) { - if (step < 1) { - var places = getDecimalPlaces(step); - return parseFloat(number.toFixed(places)); + if (Object.getOwnPropertySymbols) { + var r = Object.getOwnPropertySymbols(e); + t && (r = r.filter(function (t) { + return Object.getOwnPropertyDescriptor(e, t).enumerable; + })), n.push.apply(n, r); } - return Math.round(number / step) * step; + return n; } - var RangeTouch = - /*#__PURE__*/ - function () { - /** - * Setup a new instance - * @param {String|Element} target - * @param {Object} options - */ - function RangeTouch(target, options) { - _classCallCheck(this, RangeTouch); + function _objectSpread2$1(e) { + for (var t = 1; t < arguments.length; t++) { + var n = null != arguments[t] ? arguments[t] : {}; + t % 2 ? ownKeys$2(Object(n), !0).forEach(function (t) { + _defineProperty$1(e, t, n[t]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$2(Object(n)).forEach(function (t) { + Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)); + }); + } - if (is.element(target)) { - // An Element is passed, use it directly - this.element = target; - } else if (is.string(target)) { - // A CSS Selector is passed, fetch it from the DOM - this.element = document.querySelector(target); - } + return e; + } - if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) { - return; - } + var defaults = { + addCSS: !0, + thumbWidth: 15, + watch: !0 + }; - this.config = Object.assign({}, defaults, options); - this.init(); + function matches(e, t) { + return function () { + return Array.from(document.querySelectorAll(t)).includes(this); + }.call(e, t); + } + + function trigger(e, t) { + if (e && t) { + var n = new Event(t, { + bubbles: !0 + }); + e.dispatchEvent(n); } + } - _createClass(RangeTouch, [{ - key: "init", - value: function init() { - // Bail if not a touch enabled device - if (!RangeTouch.enabled) { - return; - } // Add useful CSS + var getConstructor = function getConstructor(e) { + return null != e ? e.constructor : null; + }, + instanceOf = function instanceOf(e, t) { + return !!(e && t && e instanceof t); + }, + isNullOrUndefined = function isNullOrUndefined(e) { + return null == e; + }, + isObject$1 = function isObject(e) { + return getConstructor(e) === Object; + }, + isNumber = function isNumber(e) { + return getConstructor(e) === Number && !Number.isNaN(e); + }, + isString = function isString(e) { + return getConstructor(e) === String; + }, + isBoolean = function isBoolean(e) { + return getConstructor(e) === Boolean; + }, + isFunction = function isFunction(e) { + return getConstructor(e) === Function; + }, + isArray$1 = function isArray(e) { + return Array.isArray(e); + }, + isNodeList = function isNodeList(e) { + return instanceOf(e, NodeList); + }, + isElement = function isElement(e) { + return instanceOf(e, Element); + }, + isEvent = function isEvent(e) { + return instanceOf(e, Event); + }, + isEmpty = function isEmpty(e) { + return isNullOrUndefined(e) || (isString(e) || isArray$1(e) || isNodeList(e)) && !e.length || isObject$1(e) && !Object.keys(e).length; + }, + is = { + nullOrUndefined: isNullOrUndefined, + object: isObject$1, + number: isNumber, + string: isString, + boolean: isBoolean, + function: isFunction, + array: isArray$1, + nodeList: isNodeList, + element: isElement, + event: isEvent, + empty: isEmpty + }; + function getDecimalPlaces(e) { + var t = "".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0; + } - if (this.config.addCSS) { - // TODO: Restore original values on destroy - this.element.style.userSelect = 'none'; - this.element.style.webKitUserSelect = 'none'; - this.element.style.touchAction = 'manipulation'; - } + function round(e, t) { + if (1 > t) { + var n = getDecimalPlaces(t); + return parseFloat(e.toFixed(n)); + } + + return Math.round(e / t) * t; + } + + var RangeTouch = function () { + function e(t, n) { + _classCallCheck$1(this, e), is.element(t) ? this.element = t : is.string(t) && (this.element = document.querySelector(t)), is.element(this.element) && is.empty(this.element.rangeTouch) && (this.config = _objectSpread2$1({}, defaults, {}, n), this.init()); + } - this.listeners(true); - this.element.rangeTouch = this; + return _createClass$1(e, [{ + key: "init", + value: function value() { + e.enabled && (this.config.addCSS && (this.element.style.userSelect = "none", this.element.style.webKitUserSelect = "none", this.element.style.touchAction = "manipulation"), this.listeners(!0), this.element.rangeTouch = this); } }, { key: "destroy", - value: function destroy() { - // Bail if not a touch enabled device - if (!RangeTouch.enabled) { - return; - } - - this.listeners(false); - this.element.rangeTouch = null; + value: function value() { + e.enabled && (this.config.addCSS && (this.element.style.userSelect = "", this.element.style.webKitUserSelect = "", this.element.style.touchAction = ""), this.listeners(!1), this.element.rangeTouch = null); } }, { key: "listeners", - value: function listeners(toggle) { - var _this = this; - - var method = toggle ? 'addEventListener' : 'removeEventListener'; // Listen for events - - ['touchstart', 'touchmove', 'touchend'].forEach(function (type) { - _this.element[method](type, function (event) { - return _this.set(event); - }, false); + value: function value(e) { + var t = this, + n = e ? "addEventListener" : "removeEventListener"; + ["touchstart", "touchmove", "touchend"].forEach(function (e) { + t.element[n](e, function (e) { + return t.set(e); + }, !1); }); } - /** - * Get the value based on touch position - * @param {Event} event - */ - }, { key: "get", - value: function get(event) { - if (!RangeTouch.enabled || !is.event(event)) { - return null; - } - - var input = event.target; - var touch = event.changedTouches[0]; - var min = parseFloat(input.getAttribute('min')) || 0; - var max = parseFloat(input.getAttribute('max')) || 100; - var step = parseFloat(input.getAttribute('step')) || 1; - var delta = max - min; // Calculate percentage - - var percent; - var clientRect = input.getBoundingClientRect(); - var thumbWidth = 100 / clientRect.width * (this.config.thumbWidth / 2) / 100; // Determine left percentage - - percent = 100 / clientRect.width * (touch.clientX - clientRect.left); // Don't allow outside bounds - - if (percent < 0) { - percent = 0; - } else if (percent > 100) { - percent = 100; - } // Factor in the thumb offset - - - if (percent < 50) { - percent -= (100 - percent * 2) * thumbWidth; - } else if (percent > 50) { - percent += (percent - 50) * 2 * thumbWidth; - } // Find the closest step to the mouse position - - - return min + round(delta * (percent / 100), step); + value: function value(t) { + if (!e.enabled || !is.event(t)) return null; + var n, + r = t.target, + i = t.changedTouches[0], + o = parseFloat(r.getAttribute("min")) || 0, + s = parseFloat(r.getAttribute("max")) || 100, + u = parseFloat(r.getAttribute("step")) || 1, + c = r.getBoundingClientRect(), + a = 100 / c.width * (this.config.thumbWidth / 2) / 100; + return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u); } - /** - * Update range value based on position - * @param {Event} event - */ - }, { key: "set", - value: function set(event) { - if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) { - return; - } // Prevent text highlight on iOS - - - event.preventDefault(); // Set value - - event.target.value = this.get(event); // Trigger event - - trigger(event.target, event.type === 'touchend' ? 'change' : 'input'); + value: function value(t) { + e.enabled && is.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, "touchend" === t.type ? "change" : "input")); } }], [{ key: "setup", - - /** - * Setup multiple instances - * @param {String|Element|NodeList|Array} target - * @param {Object} options - */ - value: function setup(target) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var targets = null; - - if (is.empty(target) || is.string(target)) { - targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type="range"]')); - } else if (is.element(target)) { - targets = [target]; - } else if (is.nodeList(target)) { - targets = Array.from(target); - } else if (is.array(target)) { - targets = target.filter(is.element); - } - - if (is.empty(targets)) { - return null; - } - - var config = Object.assign({}, defaults, options); - - if (is.string(target) && config.watch) { - // Create an observer instance - var observer = new MutationObserver(function (mutations) { - Array.from(mutations).forEach(function (mutation) { - Array.from(mutation.addedNodes).forEach(function (node) { - if (!is.element(node) || !matches(node, target)) { - return; - } // eslint-disable-next-line no-unused-vars - - - var range = new RangeTouch(node, config); + value: function value(t) { + var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, + r = null; + if (is.empty(t) || is.string(t) ? r = Array.from(document.querySelectorAll(is.string(t) ? t : 'input[type="range"]')) : is.element(t) ? r = [t] : is.nodeList(t) ? r = Array.from(t) : is.array(t) && (r = t.filter(is.element)), is.empty(r)) return null; + + var i = _objectSpread2$1({}, defaults, {}, n); + + if (is.string(t) && i.watch) { + var o = new MutationObserver(function (n) { + Array.from(n).forEach(function (n) { + Array.from(n.addedNodes).forEach(function (n) { + is.element(n) && matches(n, t) && new e(n, i); }); }); - }); // Pass in the target node, as well as the observer options - - observer.observe(document.body, { - childList: true, - subtree: true + }); + o.observe(document.body, { + childList: !0, + subtree: !0 }); } - return targets.map(function (t) { - return new RangeTouch(t, options); + return r.map(function (t) { + return new e(t, n); }); } }, { key: "enabled", get: function get() { - return 'ontouchstart' in document.documentElement; + return "ontouchstart" in document.documentElement; } - }]); - - return RangeTouch; + }]), e; }(); + var nativePromiseConstructor = global_1.Promise; + var SPECIES$5 = wellKnownSymbol('species'); var setSpecies = function (CONSTRUCTOR_NAME) { @@ -5585,10 +5926,12 @@ typeof navigator === "object" && (function (global, factory) { } }; + var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent); + var location = global_1.location; var set$1 = global_1.setImmediate; var clear = global_1.clearImmediate; - var process = global_1.process; + var process$1 = global_1.process; var MessageChannel = global_1.MessageChannel; var Dispatch = global_1.Dispatch; var counter = 0; @@ -5637,9 +5980,9 @@ typeof navigator === "object" && (function (global, factory) { delete queue[id]; }; // Node.js 0.8- - if (classofRaw(process) == 'process') { + if (classofRaw(process$1) == 'process') { defer = function (id) { - process.nextTick(runner(id)); + process$1.nextTick(runner(id)); }; // Sphere (JS game engine) Dispatch API } else if (Dispatch && Dispatch.now) { @@ -5647,11 +5990,12 @@ typeof navigator === "object" && (function (global, factory) { Dispatch.now(runner(id)); }; // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !engineIsIos) { channel = new MessageChannel(); port = channel.port2; channel.port1.onmessage = listener; - defer = bindContext(port.postMessage, port, 1); + defer = functionBindContext(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post)) { @@ -5678,28 +6022,26 @@ typeof navigator === "object" && (function (global, factory) { clear: clear }; - var userAgent = getBuiltIn('navigator', 'userAgent') || ''; - var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f; var macrotask = task.set; var MutationObserver$1 = global_1.MutationObserver || global_1.WebKitMutationObserver; - var process$1 = global_1.process; + var process$2 = global_1.process; var Promise$1 = global_1.Promise; - var IS_NODE = classofRaw(process$1) == 'process'; + var IS_NODE = classofRaw(process$2) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` var queueMicrotaskDescriptor = getOwnPropertyDescriptor$3(global_1, 'queueMicrotask'); var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; - var flush, head, last, notify, toggle, node, promise; + var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method if (!queueMicrotask) { flush = function () { var parent, fn; - if (IS_NODE && (parent = process$1.domain)) parent.exit(); + if (IS_NODE && (parent = process$2.domain)) parent.exit(); while (head) { fn = head.fn; head = head.next; @@ -5717,13 +6059,13 @@ typeof navigator === "object" && (function (global, factory) { // Node.js if (IS_NODE) { notify = function () { - process$1.nextTick(flush); + process$2.nextTick(flush); }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 - } else if (MutationObserver$1 && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) { + } else if (MutationObserver$1 && !engineIsIos) { toggle = true; node = document.createTextNode(''); - new MutationObserver$1(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + new MutationObserver$1(flush).observe(node, { characterData: true }); notify = function () { node.data = toggle = !toggle; }; @@ -5731,8 +6073,9 @@ typeof navigator === "object" && (function (global, factory) { } else if (Promise$1 && Promise$1.resolve) { // Promise.resolve without an argument throws an error in LG WebOS 2 promise = Promise$1.resolve(undefined); + then = promise.then; notify = function () { - promise.then(flush); + then.call(promise, flush); }; // for other environments - macrotask based on: // - setImmediate @@ -5817,16 +6160,14 @@ typeof navigator === "object" && (function (global, factory) { var getInternalState$3 = internalState.get; var setInternalState$6 = internalState.set; var getInternalPromiseState = internalState.getterFor(PROMISE); - var PromiseConstructor = global_1[PROMISE]; + var PromiseConstructor = nativePromiseConstructor; var TypeError$1 = global_1.TypeError; var document$2 = global_1.document; - var process$2 = global_1.process; - var $fetch = global_1.fetch; - var versions = process$2 && process$2.versions; - var v8 = versions && versions.v8 || ''; + var process$3 = global_1.process; + var $fetch$1 = getBuiltIn('fetch'); var newPromiseCapability$1 = newPromiseCapability.f; var newGenericPromiseCapability = newPromiseCapability$1; - var IS_NODE$1 = classofRaw(process$2) == 'process'; + var IS_NODE$1 = classofRaw(process$3) == 'process'; var DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent); var UNHANDLED_REJECTION = 'unhandledrejection'; var REJECTION_HANDLED = 'rejectionhandled'; @@ -5835,27 +6176,33 @@ typeof navigator === "object" && (function (global, factory) { var REJECTED = 2; var HANDLED = 1; var UNHANDLED = 2; - var Internal, OwnPromiseCapability, PromiseWrapper; + var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; - var FORCED$2 = isForced_1(PROMISE, function () { - // correct subclassing with @@species support + var FORCED$3 = isForced_1(PROMISE, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); + if (!GLOBAL_CORE_JS_PROMISE) { + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (engineV8Version === 66) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') return true; + } + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false; + // Detect correctness of subclassing with @@species support var promise = PromiseConstructor.resolve(1); - var empty = function () { /* empty */ }; - var FakePromise = (promise.constructor = {})[SPECIES$6] = function (exec) { - exec(empty, empty); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); }; - // unhandled rejections tracking support, NodeJS Promise without it fails @@species test - return !((IS_NODE$1 || typeof PromiseRejectionEvent == 'function') - && (!isPure || promise['finally']) - && promise.then(empty) instanceof FakePromise - // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables - // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 - // we can't detect it synchronously, so just check versions - && v8.indexOf('6.6') !== 0 - && userAgent.indexOf('Chrome/66') === -1); + var constructor = promise.constructor = {}; + constructor[SPECIES$6] = FakePromise; + return !(promise.then(function () { /* empty */ }) instanceof FakePromise); }); - var INCORRECT_ITERATION$1 = FORCED$2 || !checkCorrectnessOfIteration(function (iterable) { + var INCORRECT_ITERATION$1 = FORCED$3 || !checkCorrectnessOfIteration(function (iterable) { PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); }); @@ -5934,7 +6281,7 @@ typeof navigator === "object" && (function (global, factory) { if (IS_UNHANDLED) { result = perform(function () { if (IS_NODE$1) { - process$2.emit('unhandledRejection', value, promise); + process$3.emit('unhandledRejection', value, promise); } else dispatchEvent(UNHANDLED_REJECTION, promise, value); }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should @@ -5951,7 +6298,7 @@ typeof navigator === "object" && (function (global, factory) { var onHandleUnhandled = function (promise, state) { task$1.call(global_1, function () { if (IS_NODE$1) { - process$2.emit('rejectionHandled', promise); + process$3.emit('rejectionHandled', promise); } else dispatchEvent(REJECTION_HANDLED, promise, state.value); }); }; @@ -6001,7 +6348,7 @@ typeof navigator === "object" && (function (global, factory) { }; // constructor polyfill - if (FORCED$2) { + if (FORCED$3) { // 25.4.3.1 Promise(executor) PromiseConstructor = function Promise(executor) { anInstance(this, PromiseConstructor, PROMISE); @@ -6035,7 +6382,7 @@ typeof navigator === "object" && (function (global, factory) { var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE$1 ? process$2.domain : undefined; + reaction.domain = IS_NODE$1 ? process$3.domain : undefined; state.parent = true; state.reactions.push(reaction); if (state.state != PENDING) notify$1(this, state, false); @@ -6060,26 +6407,39 @@ typeof navigator === "object" && (function (global, factory) { : newGenericPromiseCapability(C); }; - // wrap fetch result - if ( typeof $fetch == 'function') _export({ global: true, enumerable: true, forced: true }, { - // eslint-disable-next-line no-unused-vars - fetch: function fetch(input) { - return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments)); - } - }); + if ( typeof nativePromiseConstructor == 'function') { + nativeThen = nativePromiseConstructor.prototype.then; + + // wrap native Promise#then for native async functions + redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + + // wrap fetch result + if (typeof $fetch$1 == 'function') _export({ global: true, enumerable: true, forced: true }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input /* , init */) { + return promiseResolve(PromiseConstructor, $fetch$1.apply(global_1, arguments)); + } + }); + } } - _export({ global: true, wrap: true, forced: FORCED$2 }, { + _export({ global: true, wrap: true, forced: FORCED$3 }, { Promise: PromiseConstructor }); setToStringTag(PromiseConstructor, PROMISE, false); setSpecies(PROMISE); - PromiseWrapper = path[PROMISE]; + PromiseWrapper = getBuiltIn(PROMISE); // statics - _export({ target: PROMISE, stat: true, forced: FORCED$2 }, { + _export({ target: PROMISE, stat: true, forced: FORCED$3 }, { // `Promise.reject` method // https://tc39.github.io/ecma262/#sec-promise.reject reject: function reject(r) { @@ -6089,7 +6449,7 @@ typeof navigator === "object" && (function (global, factory) { } }); - _export({ target: PROMISE, stat: true, forced: FORCED$2 }, { + _export({ target: PROMISE, stat: true, forced: FORCED$3 }, { // `Promise.resolve` method // https://tc39.github.io/ecma262/#sec-promise.resolve resolve: function resolve(x) { @@ -6144,12 +6504,26 @@ typeof navigator === "object" && (function (global, factory) { } }); + var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f; + + + + + + var nativeStartsWith = ''.startsWith; var min$4 = Math.min; + var CORRECT_IS_REGEXP_LOGIC = correctIsRegexpLogic('startsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor$4(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; + }(); + // `String.prototype.startsWith` method // https://tc39.github.io/ecma262/#sec-string.prototype.startswith - _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('startsWith') }, { + _export({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { startsWith: function startsWith(searchString /* , position = 0 */) { var that = String(requireObjectCoercible(this)); notARegexp(searchString); @@ -6328,150 +6702,56 @@ typeof navigator === "object" && (function (global, factory) { isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform) }; - // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md - // https://www.youtube.com/watch?v=NPM6172J22g - - var supportsPassiveListeners = function () { - // Test via a getter in the options object to see if the passive property is accessed - var supported = false; - - try { - var options = Object.defineProperty({}, 'passive', { - get: function get() { - supported = true; - return null; + // `Array.prototype.{ reduce, reduceRight }` methods implementation + var createMethod$5 = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aFunction$1(callbackfn); + var O = toObject(that); + var self = indexedObject(O); + var length = toLength(O.length); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); } - }); - window.addEventListener('test', null, options); - window.removeEventListener('test', null, options); - } catch (e) {// Do nothing - } - - return supported; - }(); // Toggle event listener - - - function toggleListener(element, event, callback) { - var _this = this; - - var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; - - // Bail if no element, event, or callback - if (!element || !('addEventListener' in element) || is$1.empty(event) || !is$1.function(callback)) { - return; - } // Allow multiple events - - - var events = event.split(' '); // Build options - // Default to just the capture boolean for browsers with no passive listener support - - var options = capture; // If passive events listeners are supported - - if (supportsPassiveListeners) { - options = { - // Whether the listener can be passive (i.e. default never prevented) - passive: passive, - // Whether the listener is a capturing listener or not - capture: capture - }; - } // If a single node is passed, bind the event listener - - - events.forEach(function (type) { - if (_this && _this.eventListeners && toggle) { - // Cache event listener - _this.eventListeners.push({ - element: element, - type: type, - callback: callback, - options: options - }); } - - element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options); - }); - } // Bind event handler - - function on(element) { - var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var callback = arguments.length > 2 ? arguments[2] : undefined; - var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - toggleListener.call(this, element, events, callback, true, passive, capture); - } // Unbind event handler - - function off(element) { - var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var callback = arguments.length > 2 ? arguments[2] : undefined; - var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - toggleListener.call(this, element, events, callback, false, passive, capture); - } // Bind once-only event handler - - function once(element) { - var _this2 = this; - - var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var callback = arguments.length > 2 ? arguments[2] : undefined; - var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - var onceCallback = function onceCallback() { - off(element, events, onceCallback, passive, capture); - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); } - - callback.apply(_this2, args); + return memo; }; + }; - toggleListener.call(this, element, events, onceCallback, true, passive, capture); - } // Trigger event + var arrayReduce = { + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + left: createMethod$5(false), + // `Array.prototype.reduceRight` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright + right: createMethod$5(true) + }; - function triggerEvent(element) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var $reduce = arrayReduce.left; - // Bail if no element - if (!is$1.element(element) || is$1.empty(type)) { - return; - } // Create and dispatch the event - var event = new CustomEvent(type, { - bubbles: bubbles, - detail: Object.assign({}, detail, { - plyr: this - }) - }); // Dispatch the event - - element.dispatchEvent(event); - } // Unbind all cached event listeners + var STRICT_METHOD$5 = arrayMethodIsStrict('reduce'); + var USES_TO_LENGTH$9 = arrayMethodUsesToLength('reduce', { 1: 0 }); - function unbindListeners() { - if (this && this.eventListeners) { - this.eventListeners.forEach(function (item) { - var element = item.element, - type = item.type, - callback = item.callback, - options = item.options; - element.removeEventListener(type, callback, options); - }); - this.eventListeners = []; + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$5 || !USES_TO_LENGTH$9 }, { + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); } - } // Run method when / if player is ready - - function ready() { - var _this3 = this; - - return new Promise(function (resolve) { - return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve); - }).then(function () {}); - } + }); function cloneDeep(object) { return JSON.parse(JSON.stringify(object)); @@ -6673,9 +6953,6 @@ typeof navigator === "object" && (function (global, factory) { // Attribute selector attributes[key] = value; break; - - default: - break; } }); return extend(existing, attributes); @@ -6737,41 +7014,6 @@ typeof navigator === "object" && (function (global, factory) { function getElement(selector) { return this.elements.container.querySelector(selector); - } // Trap focus inside container - - function trapFocus() { - var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var toggle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!is$1.element(element)) { - return; - } - - var focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]'); - var first = focusable[0]; - var last = focusable[focusable.length - 1]; - - var trap = function trap(event) { - // Bail if not tab key or not fullscreen - if (event.key !== 'Tab' || event.keyCode !== 9) { - return; - } // Get the current focused element - - - var focused = document.activeElement; - - if (focused === last && !event.shiftKey) { - // Move focus to first element that can be tabbed if Shift isn't used - first.focus(); - event.preventDefault(); - } else if (focused === first && event.shiftKey) { - // Move focus to last element that can be tabbed if Shift is used - last.focus(); - event.preventDefault(); - } - }; - - toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false); } // Set focus and tab focus class function setFocus() { @@ -6889,6 +7131,151 @@ typeof navigator === "object" && (function (global, factory) { reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches }; + // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md + // https://www.youtube.com/watch?v=NPM6172J22g + + var supportsPassiveListeners = function () { + // Test via a getter in the options object to see if the passive property is accessed + var supported = false; + + try { + var options = Object.defineProperty({}, 'passive', { + get: function get() { + supported = true; + return null; + } + }); + window.addEventListener('test', null, options); + window.removeEventListener('test', null, options); + } catch (e) {// Do nothing + } + + return supported; + }(); // Toggle event listener + + + function toggleListener(element, event, callback) { + var _this = this; + + var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; + + // Bail if no element, event, or callback + if (!element || !('addEventListener' in element) || is$1.empty(event) || !is$1.function(callback)) { + return; + } // Allow multiple events + + + var events = event.split(' '); // Build options + // Default to just the capture boolean for browsers with no passive listener support + + var options = capture; // If passive events listeners are supported + + if (supportsPassiveListeners) { + options = { + // Whether the listener can be passive (i.e. default never prevented) + passive: passive, + // Whether the listener is a capturing listener or not + capture: capture + }; + } // If a single node is passed, bind the event listener + + + events.forEach(function (type) { + if (_this && _this.eventListeners && toggle) { + // Cache event listener + _this.eventListeners.push({ + element: element, + type: type, + callback: callback, + options: options + }); + } + + element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options); + }); + } // Bind event handler + + function on(element) { + var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var callback = arguments.length > 2 ? arguments[2] : undefined; + var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + toggleListener.call(this, element, events, callback, true, passive, capture); + } // Unbind event handler + + function off(element) { + var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var callback = arguments.length > 2 ? arguments[2] : undefined; + var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + toggleListener.call(this, element, events, callback, false, passive, capture); + } // Bind once-only event handler + + function once(element) { + var _this2 = this; + + var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var callback = arguments.length > 2 ? arguments[2] : undefined; + var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + var onceCallback = function onceCallback() { + off(element, events, onceCallback, passive, capture); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(_this2, args); + }; + + toggleListener.call(this, element, events, onceCallback, true, passive, capture); + } // Trigger event + + function triggerEvent(element) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + // Bail if no element + if (!is$1.element(element) || is$1.empty(type)) { + return; + } // Create and dispatch the event + + + var event = new CustomEvent(type, { + bubbles: bubbles, + detail: _objectSpread2({}, detail, { + plyr: this + }) + }); // Dispatch the event + + element.dispatchEvent(event); + } // Unbind all cached event listeners + + function unbindListeners() { + if (this && this.eventListeners) { + this.eventListeners.forEach(function (item) { + var element = item.element, + type = item.type, + callback = item.callback, + options = item.options; + element.removeEventListener(type, callback, options); + }); + this.eventListeners = []; + } + } // Run method when / if player is ready + + function ready() { + var _this3 = this; + + return new Promise(function (resolve) { + return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve); + }).then(function () {}); + } + function validateRatio(input) { if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) { return false; @@ -6946,6 +7333,7 @@ typeof navigator === "object" && (function (global, factory) { return {}; } + var wrapper = this.elements.wrapper; var ratio = getAspectRatio.call(this, input); var _ref = is$1.array(ratio) ? ratio : [0, 0], @@ -6954,14 +7342,14 @@ typeof navigator === "object" && (function (global, factory) { h = _ref2[1]; var padding = 100 / w * h; - this.elements.wrapper.style.paddingBottom = "".concat(padding, "%"); // For Vimeo we have an extra <div> to hide the standard controls and UI + wrapper.style.paddingBottom = "".concat(padding, "%"); // For Vimeo we have an extra <div> to hide the standard controls and UI if (this.isVimeo && this.supported.ui) { var height = 240; var offset = (height - padding) / (height / 50); this.media.style.transform = "translateY(-".concat(offset, "%)"); } else if (this.isHTML5) { - this.elements.wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null); + wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null); } return { @@ -6992,17 +7380,24 @@ typeof navigator === "object" && (function (global, factory) { }, // Get quality levels getQualityOptions: function getQualityOptions() { - // Get sizes from <source> elements + // Whether we're forcing all options (e.g. for streaming) + if (this.config.quality.forced) { + return this.config.quality.options; + } // Get sizes from <source> elements + + return html5.getSources.call(this).map(function (source) { return Number(source.getAttribute('data-res')); }).filter(Boolean); }, - extend: function extend() { + setup: function setup() { if (!this.isHTML5) { return; } - var player = this; // Set aspect ratio if fixed + var player = this; // Set speed options from config + + player.options.speed = player.config.speed.options; // Set aspect ratio if fixed if (!is$1.empty(this.config.ratio)) { setAspectRatio.call(player); @@ -7020,37 +7415,48 @@ typeof navigator === "object" && (function (global, factory) { return source && Number(source.getAttribute('data-res')); }, set: function set(input) { - // Get sources - var sources = html5.getSources.call(player); // Get first match for requested size + if (player.quality === input) { + return; + } // If we're using an an external handler... - var source = sources.find(function (s) { - return Number(s.getAttribute('data-res')) === input; - }); // No matching source found - if (!source) { - return; - } // Get current state + if (player.config.quality.forced && is$1.function(player.config.quality.onChange)) { + player.config.quality.onChange(input); + } else { + // Get sources + var sources = html5.getSources.call(player); // Get first match for requested size + + var source = sources.find(function (s) { + return Number(s.getAttribute('data-res')) === input; + }); // No matching source found + if (!source) { + return; + } // Get current state - var _player$media = player.media, - currentTime = _player$media.currentTime, - paused = _player$media.paused, - preload = _player$media.preload, - readyState = _player$media.readyState; // Set new source - player.media.src = source.getAttribute('src'); // Prevent loading if preload="none" and the current source isn't loaded (#1044) + var _player$media = player.media, + currentTime = _player$media.currentTime, + paused = _player$media.paused, + preload = _player$media.preload, + readyState = _player$media.readyState, + playbackRate = _player$media.playbackRate; // Set new source - if (preload !== 'none' || readyState) { - // Restore time - player.once('loadedmetadata', function () { - player.currentTime = currentTime; // Resume playing + player.media.src = source.getAttribute('src'); // Prevent loading if preload="none" and the current source isn't loaded (#1044) - if (!paused) { - player.play(); - } - }); // Load new source + if (preload !== 'none' || readyState) { + // Restore time + player.once('loadedmetadata', function () { + player.speed = playbackRate; + player.currentTime = currentTime; // Resume playing - player.media.load(); + if (!paused) { + player.play(); + } + }); // Load new source + + player.media.load(); + } } // Trigger change event @@ -7102,13 +7508,15 @@ typeof navigator === "object" && (function (global, factory) { }); } - var defineProperty$4 = objectDefineProperty.f; + var defineProperty$6 = objectDefineProperty.f; var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var setInternalState$7 = internalState.set; + var MATCH$2 = wellKnownSymbol('match'); @@ -7120,7 +7528,9 @@ typeof navigator === "object" && (function (global, factory) { // "new" should create a new object, old webkit bug var CORRECT_NEW = new NativeRegExp(re1) !== re1; - var FORCED$3 = descriptors && isForced_1('RegExp', (!CORRECT_NEW || fails(function () { + var UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y; + + var FORCED$4 = descriptors && isForced_1('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y$2 || fails(function () { re2[MATCH$2] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; @@ -7128,21 +7538,41 @@ typeof navigator === "object" && (function (global, factory) { // `RegExp` constructor // https://tc39.github.io/ecma262/#sec-regexp-constructor - if (FORCED$3) { + if (FORCED$4) { var RegExpWrapper = function RegExp(pattern, flags) { var thisIsRegExp = this instanceof RegExpWrapper; var patternIsRegExp = isRegexp(pattern); var flagsAreUndefined = flags === undefined; - return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern - : inheritIfRequired(CORRECT_NEW - ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags) - : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper) - ? pattern.source - : pattern, patternIsRegExp && flagsAreUndefined ? regexpFlags.call(pattern) : flags) - , thisIsRegExp ? this : RegExpPrototype$1, RegExpWrapper); + var sticky; + + if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) { + return pattern; + } + + if (CORRECT_NEW) { + if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source; + } else if (pattern instanceof RegExpWrapper) { + if (flagsAreUndefined) flags = regexpFlags.call(pattern); + pattern = pattern.source; + } + + if (UNSUPPORTED_Y$2) { + sticky = !!flags && flags.indexOf('y') > -1; + if (sticky) flags = flags.replace(/y/g, ''); + } + + var result = inheritIfRequired( + CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags), + thisIsRegExp ? this : RegExpPrototype$1, + RegExpWrapper + ); + + if (UNSUPPORTED_Y$2 && sticky) setInternalState$7(result, { sticky: sticky }); + + return result; }; var proxy = function (key) { - key in RegExpWrapper || defineProperty$4(RegExpWrapper, key, { + key in RegExpWrapper || defineProperty$6(RegExpWrapper, key, { configurable: true, get: function () { return NativeRegExp[key]; }, set: function (it) { NativeRegExp[key] = it; } @@ -7276,9 +7706,7 @@ typeof navigator === "object" && (function (global, factory) { } }; - var Storage = - /*#__PURE__*/ - function () { + var Storage = /*#__PURE__*/function () { function Storage(player) { _classCallCheck(this, Storage); @@ -7483,7 +7911,7 @@ typeof navigator === "object" && (function (global, factory) { // Bail if the value isn't a number if (!is$1.number(time)) { - return formatTime(null, displayHours, inverted); + return formatTime(undefined, displayHours, inverted); } // Format time component to add leading zero @@ -7592,9 +8020,11 @@ typeof navigator === "object" && (function (global, factory) { createLabel: function createLabel(key) { var attr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var text = i18n.get(key, this.config); - var attributes = Object.assign({}, attr, { + + var attributes = _objectSpread2({}, attr, { class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') }); + return createElement('span', attributes, text); }, // Create a badge @@ -7804,7 +8234,7 @@ typeof navigator === "object" && (function (global, factory) { var _this2 = this; // Navigate through menus via arrow keys and space - on(menuItem, 'keydown keyup', function (event) { + on.call(this, menuItem, 'keydown keyup', function (event) { // We only care about space and ⬆️ ⬇️️ ➡️ if (![32, 38, 39, 40].includes(event.which)) { return; @@ -7846,7 +8276,7 @@ typeof navigator === "object" && (function (global, factory) { }, false); // Enter will fire a `click` event but we still need to manage focus // So we bind to keyup which fires after and set focus here - on(menuItem, 'keyup', function (event) { + on.call(this, menuItem, 'keyup', function (event) { if (event.which !== 13) { return; } @@ -7923,9 +8353,6 @@ typeof navigator === "object" && (function (global, factory) { case 'speed': _this3.speed = parseFloat(value); break; - - default: - break; } controls.showMenuPanel.call(_this3, 'home', is$1.keyboardEvent(event)); @@ -8034,9 +8461,6 @@ typeof navigator === "object" && (function (global, factory) { case 'progress': setProgress(this.elements.display.buffer, this.buffered * 100); break; - - default: - break; } } }, @@ -8356,7 +8780,7 @@ typeof navigator === "object" && (function (global, factory) { var type = 'captions'; - var list = this.elements.settings.panels.captions.querySelector('[role="menucaptions"]'); + var list = this.elements.settings.panels.captions.querySelector('[role="menu"]'); var tracks = captions.getTracks.call(this); var toggle = Boolean(tracks.length); // Toggle the pane and tab @@ -8394,7 +8818,7 @@ typeof navigator === "object" && (function (global, factory) { controls.updateSetting.call(this, type, list); }, // Set a list of available captions languages - setSpeedMenu: function setSpeedMenu(options) { + setSpeedMenu: function setSpeedMenu() { var _this8 = this; // Menu required @@ -8403,17 +8827,10 @@ typeof navigator === "object" && (function (global, factory) { } var type = 'speed'; - var list = this.elements.settings.panels.speed.querySelector('[role="menu"]'); // Set the speed options + var list = this.elements.settings.panels.speed.querySelector('[role="menu"]'); // Filter out invalid speeds - if (is$1.array(options)) { - this.options.speed = options; - } else if (this.isHTML5 || this.isVimeo) { - this.options.speed = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]; - } // Set options if passed and filter based on config - - - this.options.speed = this.options.speed.filter(function (speed) { - return _this8.config.speed.options.includes(speed); + this.options.speed = this.options.speed.filter(function (o) { + return o >= _this8.minimumSpeed && o <= _this8.maximumSpeed; }); // Toggle the pane and tab var toggle = !is$1.empty(this.options.speed) && this.options.speed.length > 1; @@ -8690,9 +9107,11 @@ typeof navigator === "object" && (function (global, factory) { if (control === 'mute') { volume.appendChild(createButton.call(_this10, 'mute')); } // Volume range control + // Ignored on iOS as it's handled globally + // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html - if (control === 'volume') { + if (control === 'volume' && !browser.isIos) { // Set the attributes var attributes = { max: 1, @@ -8751,7 +9170,7 @@ typeof navigator === "object" && (function (global, factory) { bindMenuItemShortcuts.call(_this10, menuItem, type); // Show menu on click - on(menuItem, 'click', function () { + on.call(_this10, menuItem, 'click', function () { showMenuPanel.call(_this10, type, false); }); var flex = createElement('span', null, i18n.get(type, _this10.config)); @@ -8782,7 +9201,7 @@ typeof navigator === "object" && (function (global, factory) { class: _this10.config.classNames.hidden }, i18n.get('menuBack', _this10.config))); // Go back via keyboard - on(pane, 'keydown', function (event) { + on.call(_this10, pane, 'keydown', function (event) { // We only care about <- if (event.which !== 37) { return; @@ -8795,7 +9214,7 @@ typeof navigator === "object" && (function (global, factory) { showMenuPanel.call(_this10, 'home', true); }, false); // Go back via button click - on(backButton, 'click', function () { + on.call(_this10, backButton, 'click', function () { showMenuPanel.call(_this10, 'home', false); }); // Add to pane @@ -8803,10 +9222,6 @@ typeof navigator === "object" && (function (global, factory) { pane.appendChild(createElement('div', { role: 'menu' - })); // Menu Captions - - pane.appendChild(createElement('div', { - role: 'menucaptions' })); inner.appendChild(pane); _this10.elements.settings.buttons[type] = menuItem; @@ -8836,7 +9251,12 @@ typeof navigator === "object" && (function (global, factory) { element: 'a', href: _this10.download, target: '_blank' - }); + }); // Set download attribute for HTML5 only + + + if (_this10.isHTML5) { + _attributes.download = ''; + } var download = _this10.config.urls.download; @@ -9461,7 +9881,10 @@ typeof navigator === "object" && (function (global, factory) { // Quality default quality: { default: 576, - options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240] + // The options to display in the UI, if available for the source media + options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240], + forced: false, + onChange: null }, // Set loops loop: { @@ -9472,7 +9895,8 @@ typeof navigator === "object" && (function (global, factory) { // Speed default and options to display speed: { selected: 1, - options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] + // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x) + options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4] }, // Keyboard shortcut settings keyboard: { @@ -9538,6 +9962,7 @@ typeof navigator === "object" && (function (global, factory) { frameTitle: 'Player for {title}', captions: 'Captions', settings: 'Settings', + pip: 'PIP', menuBack: 'Go back to previous menu', speed: 'Speed', normal: 'Normal', @@ -9734,7 +10159,13 @@ typeof navigator === "object" && (function (global, factory) { portrait: false, title: false, speed: true, - transparent: false + transparent: false, + // These settings require a pro or premium account to work + sidedock: false, + controls: false, + // Custom settings from Plyr + referrerPolicy: null // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy + }, // YouTube plugin youtube: { @@ -9795,9 +10226,7 @@ typeof navigator === "object" && (function (global, factory) { // ========================================================================== var noop = function noop() {}; - var Console = - /*#__PURE__*/ - function () { + var Console = /*#__PURE__*/function () { function Console() { var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; @@ -9833,76 +10262,7 @@ typeof navigator === "object" && (function (global, factory) { return Console; }(); - function onChange() { - if (!this.enabled) { - return; - } // Update toggle button - - - var button = this.player.elements.buttons.fullscreen; - - if (is$1.element(button)) { - button.pressed = this.active; - } // Trigger an event - - - triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true); // Trap focus in container - - if (!browser.isIos) { - trapFocus.call(this.player, this.target, this.active); - } - } - - function toggleFallback() { - var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - // Store or restore scroll position - if (toggle) { - this.scrollPosition = { - x: window.scrollX || 0, - y: window.scrollY || 0 - }; - } else { - window.scrollTo(this.scrollPosition.x, this.scrollPosition.y); - } // Toggle scroll - - - document.body.style.overflow = toggle ? 'hidden' : ''; // Toggle class hook - - toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle); // Force full viewport on iPhone X+ - - if (browser.isIos) { - var viewport = document.head.querySelector('meta[name="viewport"]'); - var property = 'viewport-fit=cover'; // Inject the viewport meta if required - - if (!viewport) { - viewport = document.createElement('meta'); - viewport.setAttribute('name', 'viewport'); - } // Check if the property already exists - - - var hasProperty = is$1.string(viewport.content) && viewport.content.includes(property); - - if (toggle) { - this.cleanupViewport = !hasProperty; - - if (!hasProperty) { - viewport.content += ",".concat(property); - } - } else if (this.cleanupViewport) { - viewport.content = viewport.content.split(',').filter(function (part) { - return part.trim() !== property; - }).join(','); - } - } // Toggle button and fire events - - - onChange.call(this); - } - - var Fullscreen = - /*#__PURE__*/ - function () { + var Fullscreen = /*#__PURE__*/function () { function Fullscreen(player) { var _this = this; @@ -9924,7 +10284,7 @@ typeof navigator === "object" && (function (global, factory) { on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : "".concat(this.prefix, "fullscreenchange"), function () { // TODO: Filter for target?? - onChange.call(_this); + _this.onChange(); }); // Fullscreen toggle on double click on.call(this.player, this.player.elements.container, 'dblclick', function (event) { @@ -9934,6 +10294,10 @@ typeof navigator === "object" && (function (global, factory) { } _this.toggle(); + }); // Tap focus when in fullscreen + + on.call(this, this.player.elements.container, 'keydown', function (event) { + return _this.trapFocus(event); }); // Update the UI this.update(); @@ -9941,8 +10305,101 @@ typeof navigator === "object" && (function (global, factory) { _createClass(Fullscreen, [{ + key: "onChange", + value: function onChange() { + if (!this.enabled) { + return; + } // Update toggle button + + + var button = this.player.elements.buttons.fullscreen; + + if (is$1.element(button)) { + button.pressed = this.active; + } // Trigger an event + + + triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true); + } + }, { + key: "toggleFallback", + value: function toggleFallback() { + var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + // Store or restore scroll position + if (toggle) { + this.scrollPosition = { + x: window.scrollX || 0, + y: window.scrollY || 0 + }; + } else { + window.scrollTo(this.scrollPosition.x, this.scrollPosition.y); + } // Toggle scroll + + + document.body.style.overflow = toggle ? 'hidden' : ''; // Toggle class hook + + toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle); // Force full viewport on iPhone X+ + + if (browser.isIos) { + var viewport = document.head.querySelector('meta[name="viewport"]'); + var property = 'viewport-fit=cover'; // Inject the viewport meta if required + + if (!viewport) { + viewport = document.createElement('meta'); + viewport.setAttribute('name', 'viewport'); + } // Check if the property already exists + + + var hasProperty = is$1.string(viewport.content) && viewport.content.includes(property); + + if (toggle) { + this.cleanupViewport = !hasProperty; + + if (!hasProperty) { + viewport.content += ",".concat(property); + } + } else if (this.cleanupViewport) { + viewport.content = viewport.content.split(',').filter(function (part) { + return part.trim() !== property; + }).join(','); + } + } // Toggle button and fire events + + + this.onChange(); + } // Trap focus inside container + + }, { + key: "trapFocus", + value: function trapFocus(event) { + // Bail if iOS, not active, not the tab key + if (browser.isIos || !this.active || event.key !== 'Tab' || event.keyCode !== 9) { + return; + } // Get the current focused element + + + var focused = document.activeElement; + var focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]'); + + var _focusable = _slicedToArray(focusable, 1), + first = _focusable[0]; + + var last = focusable[focusable.length - 1]; + + if (focused === last && !event.shiftKey) { + // Move focus to first element that can be tabbed if Shift isn't used + first.focus(); + event.preventDefault(); + } else if (focused === first && event.shiftKey) { + // Move focus to last element that can be tabbed if Shift is used + last.focus(); + event.preventDefault(); + } + } // Update UI + + }, { key: "update", - // Update UI value: function update() { if (this.enabled) { var mode; @@ -9975,9 +10432,11 @@ typeof navigator === "object" && (function (global, factory) { if (browser.isIos && this.player.config.fullscreen.iosNative) { this.target.webkitEnterFullscreen(); } else if (!Fullscreen.native || this.forceFallback) { - toggleFallback.call(this, true); + this.toggleFallback(true); } else if (!this.prefix) { - this.target.requestFullscreen(); + this.target.requestFullscreen({ + navigationUI: 'hide' + }); } else if (!is$1.empty(this.prefix)) { this.target["".concat(this.prefix, "Request").concat(this.property)](); } @@ -9995,7 +10454,7 @@ typeof navigator === "object" && (function (global, factory) { this.target.webkitExitFullscreen(); this.player.play(); } else if (!Fullscreen.native || this.forceFallback) { - toggleFallback.call(this, false); + this.toggleFallback(false); } else if (!this.prefix) { (document.cancelFullScreen || document.exitFullscreen).call(document); } else if (!is$1.empty(this.prefix)) { @@ -10255,7 +10714,12 @@ typeof navigator === "object" && (function (global, factory) { } // Set property synchronously to respect the call order - this.media.setAttribute('poster', poster); // Wait until ui is ready + this.media.setAttribute('poster', poster); // HTML5 uses native poster attribute + + if (this.isHTML5) { + return Promise.resolve(poster); + } // Wait until ui is ready + return ready.call(this) // Load image .then(function () { @@ -10296,6 +10760,7 @@ typeof navigator === "object" && (function (global, factory) { Object.assign(target, { pressed: _this3.playing }); + target.setAttribute('aria-label', i18n.get(_this3.playing ? 'pause' : 'play', _this3.config)); }); // Only update controls on non timeupdate events if (is$1.event(event) && event.type === 'timeupdate') { @@ -10333,9 +10798,7 @@ typeof navigator === "object" && (function (global, factory) { } }; - var Listeners = - /*#__PURE__*/ - function () { + var Listeners = /*#__PURE__*/function () { function Listeners(player) { _classCallCheck(this, Listeners); @@ -10476,18 +10939,6 @@ typeof navigator === "object" && (function (global, factory) { // L key player.loop = !player.loop; break; - // case 73: - // this.setLoop('start'); - // break; - // case 76: - // this.setLoop(); - // break; - // case 79: - // this.setLoop('end'); - // break; - - default: - break; } // Escape is handle natively when in full screen // So we only need to worry about non native @@ -10704,19 +11155,15 @@ typeof navigator === "object" && (function (global, factory) { on.call(player, player.media, 'durationchange loadeddata loadedmetadata', function (event) { return controls.durationUpdate.call(player, event); - }); // Check for audio tracks on load - // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point - - on.call(player, player.media, 'canplay loadeddata', function () { - toggleHidden(elements.volume, !player.hasAudio); - toggleHidden(elements.buttons.mute, !player.hasAudio); }); // Handle the media finishing on.call(player, player.media, 'ended', function () { // Show poster on end if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) { // Restart - player.restart(); + player.restart(); // Call pause otherwise IE11 will start playing the video again + + player.pause(); } }); // Check for buffer progress @@ -10829,7 +11276,7 @@ typeof navigator === "object" && (function (global, factory) { } // Only call default handler if not prevented in custom handler - if (returned && is$1.function(defaultHandler)) { + if (returned !== false && is$1.function(defaultHandler)) { defaultHandler.call(player, event); } } // Trigger custom and default handlers @@ -10896,9 +11343,11 @@ typeof navigator === "object" && (function (global, factory) { this.bind(elements.buttons.settings, 'click', function (event) { // Prevent the document click listener closing the menu event.stopPropagation(); + event.preventDefault(); controls.toggleMenu.call(player, event); - }); // Settings menu - keyboard toggle + }, null, false); // Can't be passive as we're preventing default + // Settings menu - keyboard toggle // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143 @@ -11000,7 +11449,7 @@ typeof navigator === "object" && (function (global, factory) { } }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering - this.bind(elements.progress, 'mouseleave click', function () { + this.bind(elements.progress, 'mouseleave touchend click', function () { var previewThumbnails = player.previewThumbnails; if (previewThumbnails && previewThumbnails.loaded) { @@ -11109,27 +11558,8 @@ typeof navigator === "object" && (function (global, factory) { return Listeners; }(); - var defineProperty$5 = objectDefineProperty.f; - - var FunctionPrototype = Function.prototype; - var FunctionPrototypeToString = FunctionPrototype.toString; - var nameRE = /^\s*function ([^ (]*)/; - var NAME = 'name'; - - // Function instances `.name` property - // https://tc39.github.io/ecma262/#sec-function-instances-name - if (descriptors && !(NAME in FunctionPrototype)) { - defineProperty$5(FunctionPrototype, NAME, { - configurable: true, - get: function () { - try { - return FunctionPrototypeToString.call(this).match(nameRE)[1]; - } catch (error) { - return ''; - } - } - }); - } + var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('splice'); + var USES_TO_LENGTH$a = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 }); var max$3 = Math.max; var min$5 = Math.min; @@ -11139,7 +11569,7 @@ typeof navigator === "object" && (function (global, factory) { // `Array.prototype.splice` method // https://tc39.github.io/ecma262/#sec-array.prototype.splice // with adding support of @@species - _export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, { + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$a }, { splice: function splice(start, deleteCount /* , ...items */) { var O = toObject(this); var len = toLength(O.length); @@ -11290,12 +11720,13 @@ typeof navigator === "object" && (function (global, factory) { async = args.async, maxTries = (args.numRetries || 0) + 1, beforeCallbackFn = args.before || devnull, + pathname = path.replace(/[\?|#].*$/, ''), pathStripped = path.replace(/^(css|img)!/, ''), isLegacyIECss, e; numTries = numTries || 0; - if (/(^css!|\.css$)/.test(path)) { + if (/(^css!|\.css$)/.test(pathname)) { // css e = doc.createElement('link'); e.rel = 'stylesheet'; @@ -11308,7 +11739,7 @@ typeof navigator === "object" && (function (global, factory) { e.rel = 'preload'; e.as = 'style'; } - } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { + } else if (/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(pathname)) { // image e = doc.createElement('img'); e.src = pathStripped; @@ -11517,26 +11948,27 @@ typeof navigator === "object" && (function (global, factory) { var vimeo = { setup: function setup() { - var _this = this; + var player = this; // Add embed class for responsive - // Add embed class for responsive - toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Set intial ratio + toggleClass(player.elements.wrapper, player.config.classNames.embed, true); // Set speed options from config - setAspectRatio.call(this); // Load the SDK if not already + player.options.speed = player.config.speed.options; // Set intial ratio + + setAspectRatio.call(player); // Load the SDK if not already if (!is$1.object(window.Vimeo)) { - loadScript(this.config.urls.vimeo.sdk).then(function () { - vimeo.ready.call(_this); + loadScript(player.config.urls.vimeo.sdk).then(function () { + vimeo.ready.call(player); }).catch(function (error) { - _this.debug.warn('Vimeo SDK (player.js) failed to load', error); + player.debug.warn('Vimeo SDK (player.js) failed to load', error); }); } else { - vimeo.ready.call(this); + vimeo.ready.call(player); } }, // API Ready ready: function ready() { - var _this2 = this; + var _this = this; var player = this; var config = player.config.vimeo; // Get Vimeo params for the iframe @@ -11562,7 +11994,12 @@ typeof navigator === "object" && (function (global, factory) { iframe.setAttribute('src', src); iframe.setAttribute('allowfullscreen', ''); iframe.setAttribute('allowtransparency', ''); - iframe.setAttribute('allow', 'autoplay'); // Get poster, if already set + iframe.setAttribute('allow', 'autoplay'); // Set the referrer policy if required + + if (!is$1.empty(config.referrerPolicy)) { + iframe.setAttribute('referrerPolicy', config.referrerPolicy); + } // Get poster, if already set + var poster = player.poster; // Inject the package @@ -11655,11 +12092,6 @@ typeof navigator === "object" && (function (global, factory) { player.embed.setPlaybackRate(input).then(function () { speed = input; triggerEvent.call(player, player.media, 'ratechange'); - }).catch(function (error) { - // Hide menu item (and menu if empty) - if (error.name === 'Error') { - controls.setSpeedMenu.call(player, []); - } }); } }); // Volume @@ -11709,7 +12141,7 @@ typeof navigator === "object" && (function (global, factory) { currentSrc = value; controls.setDownloadUrl.call(player); }).catch(function (error) { - _this2.debug.warn(error); + _this.debug.warn(error); }); Object.defineProperty(player.media, 'currentSrc', { get: function get() { @@ -11729,7 +12161,7 @@ typeof navigator === "object" && (function (global, factory) { height = _dimensions[1]; player.embed.ratio = [width, height]; - setAspectRatio.call(_this2); + setAspectRatio.call(_this); }); // Set autopause player.embed.setAutopause(player.config.autopause).then(function (state) { @@ -11738,7 +12170,7 @@ typeof navigator === "object" && (function (global, factory) { player.embed.getVideoTitle().then(function (title) { player.config.title = title; - ui.setTitle.call(_this2); + ui.setTitle.call(_this); }); // Get current time player.embed.getCurrentTime().then(function (value) { @@ -11780,6 +12212,12 @@ typeof navigator === "object" && (function (global, factory) { frame.setAttribute('tabindex', -1); } }); + player.embed.on('bufferstart', function () { + triggerEvent.call(player, player.media, 'waiting'); + }); + player.embed.on('bufferend', function () { + triggerEvent.call(player, player.media, 'playing'); + }); player.embed.on('play', function () { assurePlaybackState.call(player, true); triggerEvent.call(player, player.media, 'playing'); @@ -12105,7 +12543,11 @@ typeof navigator === "object" && (function (global, factory) { } }); // Get available speeds - player.options.speed = instance.getAvailablePlaybackRates(); // Set the tabindex to avoid focus entering iframe + var speeds = instance.getAvailablePlaybackRates(); // Filter based on config + + player.options.speed = speeds.filter(function (s) { + return player.config.speed.options.includes(s); + }); // Set the tabindex to avoid focus entering iframe if (player.supported.ui) { player.media.setAttribute('tabindex', -1); @@ -12211,7 +12653,9 @@ typeof navigator === "object" && (function (global, factory) { assurePlaybackState$1.call(player, false); break; - default: + case 3: + // Trigger waiting event to add loading classes to container as the video buffers. + triggerEvent.call(player, player.media, 'waiting'); break; } @@ -12252,14 +12696,16 @@ typeof navigator === "object" && (function (global, factory) { wrap$1(this.media, this.elements.wrapper); // Faux poster container - this.elements.poster = createElement('div', { - class: this.config.classNames.poster - }); - this.elements.wrapper.appendChild(this.elements.poster); + if (this.isEmbed) { + this.elements.poster = createElement('div', { + class: this.config.classNames.poster + }); + this.elements.wrapper.appendChild(this.elements.poster); + } } if (this.isHTML5) { - html5.extend.call(this); + html5.setup.call(this); } else if (this.isYouTube) { youtube.setup.call(this); } else if (this.isVimeo) { @@ -12282,9 +12728,7 @@ typeof navigator === "object" && (function (global, factory) { instance.elements.container.remove(); }; - var Ads = - /*#__PURE__*/ - function () { + var Ads = /*#__PURE__*/function () { /** * Ads constructor. * @param {Object} player @@ -12625,9 +13069,6 @@ typeof navigator === "object" && (function (global, factory) { } break; - - default: - break; } } /** @@ -12899,7 +13340,7 @@ typeof navigator === "object" && (function (global, factory) { cb: Date.now(), AV_WIDTH: 640, AV_HEIGHT: 480, - AV_CDIM2: this.publisherId + AV_CDIM2: config.publisherId }; var base = 'https://go.aniview.com/api/adserver6/vast/'; return "".concat(base, "?").concat(buildUrlParams(params)); @@ -12912,15 +13353,18 @@ typeof navigator === "object" && (function (global, factory) { var $findIndex = arrayIteration.findIndex; + var FIND_INDEX = 'findIndex'; var SKIPS_HOLES$1 = true; + var USES_TO_LENGTH$b = arrayMethodUsesToLength(FIND_INDEX); + // Shouldn't skip holes if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$1 = false; }); // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findindex - _export({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 }, { + _export({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$b }, { findIndex: function findIndex(callbackfn /* , that = undefined */) { return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } @@ -12929,6 +13373,34 @@ typeof navigator === "object" && (function (global, factory) { // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND_INDEX); + var min$6 = Math.min; + var nativeLastIndexOf = [].lastIndexOf; + var NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; + var STRICT_METHOD$6 = arrayMethodIsStrict('lastIndexOf'); + // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method + var USES_TO_LENGTH$c = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + var FORCED$5 = NEGATIVE_ZERO$1 || !STRICT_METHOD$6 || !USES_TO_LENGTH$c; + + // `Array.prototype.lastIndexOf` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof + var arrayLastIndexOf = FORCED$5 ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0; + var O = toIndexedObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = min$6(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; + } : nativeLastIndexOf; + + // `Array.prototype.lastIndexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof + _export({ target: 'Array', proto: true, forced: arrayLastIndexOf !== [].lastIndexOf }, { + lastIndexOf: arrayLastIndexOf + }); + var parseVtt = function parseVtt(vttDataString) { var processedList = []; var frames = vttDataString.split(/\r\n\r\n|\n\n|\r\r/); @@ -12984,9 +13456,22 @@ typeof navigator === "object" && (function (global, factory) { */ - var PreviewThumbnails = - /*#__PURE__*/ - function () { + var fitRatio = function fitRatio(ratio, outer) { + var targetRatio = outer.width / outer.height; + var result = {}; + + if (ratio > targetRatio) { + result.width = outer.width; + result.height = 1 / ratio * outer.width; + } else { + result.height = outer.height; + result.width = ratio * outer.height; + } + + return result; + }; + + var PreviewThumbnails = /*#__PURE__*/function () { /** * PreviewThumbnails constructor. * @param {Plyr} player @@ -13013,7 +13498,7 @@ typeof navigator === "object" && (function (global, factory) { value: function load() { var _this = this; - // Togglethe regular seek tooltip + // Toggle the regular seek tooltip if (this.player.elements.display.seekTooltip) { this.player.elements.display.seekTooltip.hidden = this.enabled; } @@ -13154,8 +13639,8 @@ typeof navigator === "object" && (function (global, factory) { }, { key: "startScrubbing", value: function startScrubbing(event) { - // Only act on left mouse button (0), or touch device (event.button is false) - if (event.button === false || event.button === 0) { + // Only act on left mouse button (0), or touch device (event.button does not exist or is false) + if (is$1.nullOrUndefined(event.button) || event.button === false || event.button === 0) { this.mouseDown = true; // Wait until media has a duration if (this.player.media.duration) { @@ -13241,6 +13726,17 @@ typeof navigator === "object" && (function (global, factory) { this.player.elements.wrapper.appendChild(this.elements.scrubbing.container); } }, { + key: "destroy", + value: function destroy() { + if (this.elements.thumb.container) { + this.elements.thumb.container.remove(); + } + + if (this.elements.scrubbing.container) { + this.elements.scrubbing.container.remove(); + } + } + }, { key: "showImageAtCurrentTime", value: function showImageAtCurrentTime() { var _this6 = this; @@ -13485,7 +13981,7 @@ typeof navigator === "object" && (function (global, factory) { }, { key: "determineContainerAutoSizing", value: function determineContainerAutoSizing() { - if (this.elements.thumb.imageContainer.clientHeight > 20) { + if (this.elements.thumb.imageContainer.clientHeight > 20 || this.elements.thumb.imageContainer.clientWidth > 20) { // This will prevent auto sizing in this.setThumbContainerSizeAndPos() this.sizeSpecifiedInCSS = true; } @@ -13498,6 +13994,13 @@ typeof navigator === "object" && (function (global, factory) { var thumbWidth = Math.floor(this.thumbContainerHeight * this.thumbAspectRatio); this.elements.thumb.imageContainer.style.height = "".concat(this.thumbContainerHeight, "px"); this.elements.thumb.imageContainer.style.width = "".concat(thumbWidth, "px"); + } else if (this.elements.thumb.imageContainer.clientHeight > 20 && this.elements.thumb.imageContainer.clientWidth < 20) { + var _thumbWidth = Math.floor(this.elements.thumb.imageContainer.clientHeight * this.thumbAspectRatio); + + this.elements.thumb.imageContainer.style.width = "".concat(_thumbWidth, "px"); + } else if (this.elements.thumb.imageContainer.clientHeight < 20 && this.elements.thumb.imageContainer.clientWidth > 20) { + var thumbHeight = Math.floor(this.elements.thumb.imageContainer.clientWidth / this.thumbAspectRatio); + this.elements.thumb.imageContainer.style.height = "".concat(thumbHeight, "px"); } this.setThumbContainerPos(); @@ -13528,9 +14031,15 @@ typeof navigator === "object" && (function (global, factory) { }, { key: "setScrubbingContainerSize", value: function setScrubbingContainerSize() { - this.elements.scrubbing.container.style.width = "".concat(this.player.media.clientWidth, "px"); // Can't use media.clientHeight - html5 video goes big and does black bars above and below - - this.elements.scrubbing.container.style.height = "".concat(this.player.media.clientWidth / this.thumbAspectRatio, "px"); + var _fitRatio = fitRatio(this.thumbAspectRatio, { + width: this.player.media.clientWidth, + height: this.player.media.clientHeight + }), + width = _fitRatio.width, + height = _fitRatio.height; + + this.elements.scrubbing.container.style.width = "".concat(width, "px"); + this.elements.scrubbing.container.style.height = "".concat(height, "px"); } // Sprites need to be offset to the correct location }, { @@ -13543,9 +14052,9 @@ typeof navigator === "object" && (function (global, factory) { var multiplier = this.thumbContainerHeight / frame.h; // eslint-disable-next-line no-param-reassign - previewImage.style.height = "".concat(Math.floor(previewImage.naturalHeight * multiplier), "px"); // eslint-disable-next-line no-param-reassign + previewImage.style.height = "".concat(previewImage.naturalHeight * multiplier, "px"); // eslint-disable-next-line no-param-reassign - previewImage.style.width = "".concat(Math.floor(previewImage.naturalWidth * multiplier), "px"); // eslint-disable-next-line no-param-reassign + previewImage.style.width = "".concat(previewImage.naturalWidth * multiplier, "px"); // eslint-disable-next-line no-param-reassign previewImage.style.left = "-".concat(frame.x * multiplier, "px"); // eslint-disable-next-line no-param-reassign @@ -13583,8 +14092,18 @@ typeof navigator === "object" && (function (global, factory) { key: "thumbContainerHeight", get: function get() { if (this.mouseDown) { - // Can't use media.clientHeight - HTML5 video goes big and does black bars above and below - return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio); + var _fitRatio2 = fitRatio(this.thumbAspectRatio, { + width: this.player.media.clientWidth, + height: this.player.media.clientHeight + }), + height = _fitRatio2.height; + + return height; + } // If css is used this needs to return the css height for sprites to work (see setImageSizeAndOffset) + + + if (this.sizeSpecifiedInCSS) { + return this.elements.thumb.imageContainer.clientHeight; } return Math.floor(this.player.media.clientWidth / this.thumbAspectRatio / 4); @@ -13734,11 +14253,22 @@ typeof navigator === "object" && (function (global, factory) { if (_this2.isHTML5) { _this2.media.load(); - } // Reload thumbnails + } // Update previewThumbnails config & reload plugin + + + if (!is$1.empty(input.previewThumbnails)) { + Object.assign(_this2.config.previewThumbnails, input.previewThumbnails); // Cleanup previewThumbnails plugin if it was loaded + + if (_this2.previewThumbnails && _this2.previewThumbnails.loaded) { + _this2.previewThumbnails.destroy(); + _this2.previewThumbnails = null; + } // Create new instance if it is still enabled - if (_this2.previewThumbnails) { - _this2.previewThumbnails.load(); + + if (_this2.config.previewThumbnails.enabled) { + _this2.previewThumbnails = new PreviewThumbnails(_this2); + } } // Update the fullscreen support @@ -13770,9 +14300,7 @@ typeof navigator === "object" && (function (global, factory) { // const globals = new WeakMap(); // Plyr instance - var Plyr = - /*#__PURE__*/ - function () { + var Plyr = /*#__PURE__*/function () { function Plyr(target, options) { var _this = this; @@ -14068,10 +14596,10 @@ typeof navigator === "object" && (function (global, factory) { key: "pause", value: function pause() { if (!this.playing || !is$1.function(this.media.pause)) { - return; + return null; } - this.media.pause(); + return this.media.pause(); } /** * Get playing state @@ -14089,10 +14617,10 @@ typeof navigator === "object" && (function (global, factory) { var toggle = is$1.boolean(input) ? input : !this.playing; if (toggle) { - this.play(); - } else { - this.pause(); + return this.play(); } + + return this.pause(); } /** * Stop playback @@ -14125,7 +14653,7 @@ typeof navigator === "object" && (function (global, factory) { }, { key: "rewind", value: function rewind(seekTime) { - this.currentTime = this.currentTime - (is$1.number(seekTime) ? seekTime : this.config.seekTime); + this.currentTime -= is$1.number(seekTime) ? seekTime : this.config.seekTime; } /** * Fast forward @@ -14135,7 +14663,7 @@ typeof navigator === "object" && (function (global, factory) { }, { key: "forward", value: function forward(seekTime) { - this.currentTime = this.currentTime + (is$1.number(seekTime) ? seekTime : this.config.seekTime); + this.currentTime += is$1.number(seekTime) ? seekTime : this.config.seekTime; } /** * Seek to a time @@ -15039,4 +15567,4 @@ typeof navigator === "object" && (function (global, factory) { return Plyr; -})); +}))); |