Use core js for polyfills

This commit is contained in:
Josh Johnson 2018-05-25 08:44:54 +01:00
parent 62389ff744
commit 1608d815e9
6 changed files with 1862 additions and 949 deletions

View file

@ -40,7 +40,6 @@
"babel-preset-stage-2": "^6.24.1",
"chai": "^4.1.0",
"concurrently": "^3.1.0",
"core-js": "^2.4.1",
"csso": "^1.8.2",
"custom-event-autopolyfill": "^0.1.3",
"es6-promise": "^3.2.1",
@ -71,7 +70,8 @@
"classnames": "^2.2.5",
"fuse.js": "^3.1.0",
"opn": "^5.1.0",
"redux": "^3.3.1"
"redux": "^3.3.1",
"core-js": "^2.5.6"
},
"npmName": "choices.js",
"npmFileMap": [

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
src/scripts/dist/choices.min.js.gz vendored Normal file

Binary file not shown.

View file

@ -1,125 +1,13 @@
/* eslint-disable */
(function () {
// Production steps of ECMA-262, Edition 6, 22.1.2.1
// Reference: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from
if (!Array.from) {
Array.from = (function() {
let toStr = Object.prototype.toString;
import 'core-js/fn/array/from';
import 'core-js/fn/array/find';
let isCallable = function(fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
let toInteger = function(value) {
let number = Number(value);
if (isNaN(number)) {
return 0;
}
if (number === 0 || !isFinite(number)) {
return number;
}
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
let maxSafeInteger = Math.pow(2, 53) - 1;
let toLength = function(value) {
let len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike /* , mapFn, thisArg */) {
// 1. Let C be the this value.
let C = this;
// 2. Let items be ToObject(arrayLike).
let items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined');
}
// 4. If mapfn is undefined, then let mapping be false.
let mapFn = arguments.length > 1 ? arguments[1] : void undefined;
let T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
let len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
let A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
let k = 0;
// 17. Repeat, while k < len… (also steps a - h)
let kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}());
(function CustomEventPolyfill() {
if (typeof window.CustomEvent === 'function') {
return false;
}
// Reference: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find
if (!Array.prototype.find) {
Array.prototype.find = function(predicate) {
'use strict';
if (this == null) {
throw new TypeError('Array.prototype.find called on null or undefined');
}
if (typeof predicate !== 'function') {
throw new TypeError('predicate must be a function');
}
let list = Object(this);
let length = list.length >>> 0;
let thisArg = arguments[1];
let value;
for (let i = 0; i < length; i++) {
value = list[i];
if (predicate.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
};
}
function CustomEvent (event, params) {
params = params || {
bubbles: false,
cancelable: false,
detail: undefined,
};
let evt = document.createEvent('CustomEvent');
function CustomEvent (event, params = { bubbles: false, cancelable: false, detail: undefined }) {
const evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}