Manual build
This commit is contained in:
484
dist/_30s.es5.js
vendored
484
dist/_30s.es5.js
vendored
@ -118,54 +118,6 @@
|
||||
|
||||
var crypto = typeof require !== "undefined" && require('crypto');
|
||||
|
||||
var CSVToArray = function CSVToArray(data) {
|
||||
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
|
||||
var omitFirstRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
return data.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0).split('\n').map(function (v) {
|
||||
return v.split(delimiter);
|
||||
});
|
||||
};
|
||||
var CSVToJSON = function CSVToJSON(data) {
|
||||
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
|
||||
var titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data.slice(data.indexOf('\n') + 1).split('\n').map(function (v) {
|
||||
var values = v.split(delimiter);
|
||||
return titles.reduce(function (obj, title, index) {
|
||||
return obj[title] = values[index], obj;
|
||||
}, {});
|
||||
});
|
||||
};
|
||||
var JSONToFile = function JSONToFile(obj, filename) {
|
||||
return fs.writeFile("".concat(filename, ".json"), JSON.stringify(obj, null, 2));
|
||||
};
|
||||
var JSONtoCSV = function JSONtoCSV(arr, columns) {
|
||||
var delimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ',';
|
||||
return [columns.join(delimiter)].concat(_toConsumableArray(arr.map(function (obj) {
|
||||
return columns.reduce(function (acc, key) {
|
||||
return "".concat(acc).concat(!acc.length ? '' : delimiter, "\"").concat(!obj[key] ? '' : obj[key], "\"");
|
||||
}, '');
|
||||
}))).join('\n');
|
||||
};
|
||||
var RGBToHex = function RGBToHex(r, g, b) {
|
||||
return ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
};
|
||||
var URLJoin = function URLJoin() {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return args.join('/').replace(/[\/]+/g, '/').replace(/^(.+):\//, '$1://').replace(/^file:/, 'file:/').replace(/\/(\?|&|#[^!])/g, '$1').replace(/\?/g, '&').replace('&', '?');
|
||||
};
|
||||
var UUIDGeneratorBrowser = function UUIDGeneratorBrowser() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
|
||||
return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
|
||||
});
|
||||
};
|
||||
var UUIDGeneratorNode = function UUIDGeneratorNode() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
|
||||
return (c ^ crypto.randomBytes(1)[0] & 15 >> c / 4).toString(16);
|
||||
});
|
||||
};
|
||||
var all = function all(arr) {
|
||||
var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Boolean;
|
||||
return arr.every(fn);
|
||||
@ -200,8 +152,8 @@
|
||||
};
|
||||
var ary = function ary(fn, n) {
|
||||
return function () {
|
||||
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
||||
args[_key2] = arguments[_key2];
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, _toConsumableArray(args.slice(0, n)));
|
||||
@ -212,8 +164,8 @@
|
||||
};
|
||||
var attempt = function attempt(fn) {
|
||||
try {
|
||||
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
||||
args[_key3 - 1] = arguments[_key3];
|
||||
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
||||
args[_key2 - 1] = arguments[_key2];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, args);
|
||||
@ -222,8 +174,8 @@
|
||||
}
|
||||
};
|
||||
var average = function average() {
|
||||
for (var _len4 = arguments.length, nums = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
||||
nums[_key4] = arguments[_key4];
|
||||
for (var _len3 = arguments.length, nums = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
||||
nums[_key3] = arguments[_key3];
|
||||
}
|
||||
|
||||
return nums.reduce(function (acc, val) {
|
||||
@ -248,21 +200,21 @@
|
||||
}, [[], []]);
|
||||
};
|
||||
var bind = function bind(fn, context) {
|
||||
for (var _len5 = arguments.length, boundArgs = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {
|
||||
boundArgs[_key5 - 2] = arguments[_key5];
|
||||
for (var _len4 = arguments.length, boundArgs = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
||||
boundArgs[_key4 - 2] = arguments[_key4];
|
||||
}
|
||||
|
||||
return function () {
|
||||
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
||||
args[_key6] = arguments[_key6];
|
||||
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
||||
args[_key5] = arguments[_key5];
|
||||
}
|
||||
|
||||
return fn.apply(context, boundArgs.concat(args));
|
||||
};
|
||||
};
|
||||
var bindAll = function bindAll(obj) {
|
||||
for (var _len7 = arguments.length, fns = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {
|
||||
fns[_key7 - 1] = arguments[_key7];
|
||||
for (var _len6 = arguments.length, fns = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
|
||||
fns[_key6 - 1] = arguments[_key6];
|
||||
}
|
||||
|
||||
return fns.forEach(function (fn) {
|
||||
@ -272,13 +224,13 @@
|
||||
});
|
||||
};
|
||||
var bindKey = function bindKey(context, fn) {
|
||||
for (var _len8 = arguments.length, boundArgs = new Array(_len8 > 2 ? _len8 - 2 : 0), _key8 = 2; _key8 < _len8; _key8++) {
|
||||
boundArgs[_key8 - 2] = arguments[_key8];
|
||||
for (var _len7 = arguments.length, boundArgs = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
|
||||
boundArgs[_key7 - 2] = arguments[_key7];
|
||||
}
|
||||
|
||||
return function () {
|
||||
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
||||
args[_key9] = arguments[_key9];
|
||||
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
||||
args[_key8] = arguments[_key8];
|
||||
}
|
||||
|
||||
return context[fn].apply(context, boundArgs.concat(args));
|
||||
@ -308,8 +260,8 @@
|
||||
return new Blob([str]).size;
|
||||
};
|
||||
var call = function call(key) {
|
||||
for (var _len10 = arguments.length, args = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {
|
||||
args[_key10 - 1] = arguments[_key10];
|
||||
for (var _len9 = arguments.length, args = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {
|
||||
args[_key9 - 1] = arguments[_key9];
|
||||
}
|
||||
|
||||
return function (context) {
|
||||
@ -362,8 +314,8 @@
|
||||
return new RegExp(regExp.source, regExp.flags);
|
||||
};
|
||||
var coalesce = function coalesce() {
|
||||
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
||||
args[_key11] = arguments[_key11];
|
||||
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
||||
args[_key10] = arguments[_key10];
|
||||
}
|
||||
|
||||
return args.find(function (_) {
|
||||
@ -372,8 +324,8 @@
|
||||
};
|
||||
var coalesceFactory = function coalesceFactory(valid) {
|
||||
return function () {
|
||||
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
||||
args[_key12] = arguments[_key12];
|
||||
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
||||
args[_key11] = arguments[_key11];
|
||||
}
|
||||
|
||||
return args.find(valid);
|
||||
@ -381,16 +333,16 @@
|
||||
};
|
||||
var collectInto = function collectInto(fn) {
|
||||
return function () {
|
||||
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
||||
args[_key13] = arguments[_key13];
|
||||
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
||||
args[_key12] = arguments[_key12];
|
||||
}
|
||||
|
||||
return fn(args);
|
||||
};
|
||||
};
|
||||
var colorize = function colorize() {
|
||||
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
||||
args[_key14] = arguments[_key14];
|
||||
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
||||
args[_key13] = arguments[_key13];
|
||||
}
|
||||
|
||||
return {
|
||||
@ -419,8 +371,8 @@
|
||||
return str.replace(/\s{2,}/g, ' ');
|
||||
};
|
||||
var compose = function compose() {
|
||||
for (var _len15 = arguments.length, fns = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
||||
fns[_key15] = arguments[_key15];
|
||||
for (var _len14 = arguments.length, fns = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
||||
fns[_key14] = arguments[_key14];
|
||||
}
|
||||
|
||||
return fns.reduce(function (f, g) {
|
||||
@ -430,8 +382,8 @@
|
||||
});
|
||||
};
|
||||
var composeRight = function composeRight() {
|
||||
for (var _len16 = arguments.length, fns = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
||||
fns[_key16] = arguments[_key16];
|
||||
for (var _len15 = arguments.length, fns = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
||||
fns[_key15] = arguments[_key15];
|
||||
}
|
||||
|
||||
return fns.reduce(function (f, g) {
|
||||
@ -442,8 +394,8 @@
|
||||
};
|
||||
var converge = function converge(converger, fns) {
|
||||
return function () {
|
||||
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
||||
args[_key17] = arguments[_key17];
|
||||
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
||||
args[_key16] = arguments[_key16];
|
||||
}
|
||||
|
||||
return converger.apply(void 0, _toConsumableArray(fns.map(function (fn) {
|
||||
@ -476,11 +428,6 @@
|
||||
return acc;
|
||||
}, {});
|
||||
};
|
||||
var countOccurrences = function countOccurrences(arr, val) {
|
||||
return arr.reduce(function (a, v) {
|
||||
return v === val ? a + 1 : a;
|
||||
}, 0);
|
||||
};
|
||||
var counter = function counter(selector, start, end) {
|
||||
var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
||||
var duration = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2000;
|
||||
@ -496,6 +443,11 @@
|
||||
|
||||
return timer;
|
||||
};
|
||||
var countOccurrences = function countOccurrences(arr, val) {
|
||||
return arr.reduce(function (a, v) {
|
||||
return v === val ? a + 1 : a;
|
||||
}, 0);
|
||||
};
|
||||
var createDirIfNotExists = function createDirIfNotExists(dir) {
|
||||
return !fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined;
|
||||
};
|
||||
@ -524,14 +476,31 @@
|
||||
}
|
||||
};
|
||||
};
|
||||
var CSVToArray = function CSVToArray(data) {
|
||||
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
|
||||
var omitFirstRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
return data.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0).split('\n').map(function (v) {
|
||||
return v.split(delimiter);
|
||||
});
|
||||
};
|
||||
var CSVToJSON = function CSVToJSON(data) {
|
||||
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
|
||||
var titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data.slice(data.indexOf('\n') + 1).split('\n').map(function (v) {
|
||||
var values = v.split(delimiter);
|
||||
return titles.reduce(function (obj, title, index) {
|
||||
return obj[title] = values[index], obj;
|
||||
}, {});
|
||||
});
|
||||
};
|
||||
var currentURL = function currentURL() {
|
||||
return window.location.href;
|
||||
};
|
||||
var curry = function curry(fn) {
|
||||
var arity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fn.length;
|
||||
|
||||
for (var _len18 = arguments.length, args = new Array(_len18 > 2 ? _len18 - 2 : 0), _key18 = 2; _key18 < _len18; _key18++) {
|
||||
args[_key18 - 2] = arguments[_key18];
|
||||
for (var _len17 = arguments.length, args = new Array(_len17 > 2 ? _len17 - 2 : 0), _key17 = 2; _key17 < _len17; _key17++) {
|
||||
args[_key17 - 2] = arguments[_key17];
|
||||
}
|
||||
|
||||
return arity <= args.length ? fn.apply(void 0, args) : curry.bind.apply(curry, [null, fn, arity].concat(args));
|
||||
@ -545,8 +514,8 @@
|
||||
return function () {
|
||||
var _this = this;
|
||||
|
||||
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
||||
args[_key19] = arguments[_key19];
|
||||
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
||||
args[_key18] = arguments[_key18];
|
||||
}
|
||||
|
||||
clearTimeout(timeoutId);
|
||||
@ -582,6 +551,11 @@
|
||||
return !(obj[prop] instanceof Object) || Object.isFrozen(obj[prop]) ? null : deepFreeze(obj[prop]);
|
||||
}) || Object.freeze(obj);
|
||||
};
|
||||
var deepGet = function deepGet(obj, keys) {
|
||||
return keys.reduce(function (xs, x) {
|
||||
return xs && xs[x] ? xs[x] : null;
|
||||
}, obj);
|
||||
};
|
||||
var deepMapKeys = function deepMapKeys(obj, f) {
|
||||
return Array.isArray(obj) ? obj.map(function (val) {
|
||||
return deepMapKeys(val, f);
|
||||
@ -592,15 +566,15 @@
|
||||
}, {}) : obj;
|
||||
};
|
||||
var defaults = function defaults(obj) {
|
||||
for (var _len20 = arguments.length, defs = new Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {
|
||||
defs[_key20 - 1] = arguments[_key20];
|
||||
for (var _len19 = arguments.length, defs = new Array(_len19 > 1 ? _len19 - 1 : 0), _key19 = 1; _key19 < _len19; _key19++) {
|
||||
defs[_key19 - 1] = arguments[_key19];
|
||||
}
|
||||
|
||||
return Object.assign.apply(Object, [{}, obj].concat(_toConsumableArray(defs.reverse()), [obj]));
|
||||
};
|
||||
var defer = function defer(fn) {
|
||||
for (var _len21 = arguments.length, args = new Array(_len21 > 1 ? _len21 - 1 : 0), _key21 = 1; _key21 < _len21; _key21++) {
|
||||
args[_key21 - 1] = arguments[_key21];
|
||||
for (var _len20 = arguments.length, args = new Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {
|
||||
args[_key20 - 1] = arguments[_key20];
|
||||
}
|
||||
|
||||
return setTimeout.apply(void 0, [fn, 1].concat(args));
|
||||
@ -609,8 +583,8 @@
|
||||
return deg * Math.PI / 180.0;
|
||||
};
|
||||
var delay = function delay(fn, wait) {
|
||||
for (var _len22 = arguments.length, args = new Array(_len22 > 2 ? _len22 - 2 : 0), _key22 = 2; _key22 < _len22; _key22++) {
|
||||
args[_key22 - 2] = arguments[_key22];
|
||||
for (var _len21 = arguments.length, args = new Array(_len21 > 2 ? _len21 - 2 : 0), _key21 = 2; _key21 < _len21; _key21++) {
|
||||
args[_key21 - 2] = arguments[_key21];
|
||||
}
|
||||
|
||||
return setTimeout.apply(void 0, [fn, wait].concat(args));
|
||||
@ -831,8 +805,8 @@
|
||||
};
|
||||
var flip = function flip(fn) {
|
||||
return function (first) {
|
||||
for (var _len23 = arguments.length, rest = new Array(_len23 > 1 ? _len23 - 1 : 0), _key23 = 1; _key23 < _len23; _key23++) {
|
||||
rest[_key23 - 1] = arguments[_key23];
|
||||
for (var _len22 = arguments.length, rest = new Array(_len22 > 1 ? _len22 - 1 : 0), _key22 = 1; _key22 < _len22; _key22++) {
|
||||
rest[_key22 - 1] = arguments[_key22];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, rest.concat([first]));
|
||||
@ -841,25 +815,6 @@
|
||||
var forEachRight = function forEachRight(arr, callback) {
|
||||
return arr.slice(0).reverse().forEach(callback);
|
||||
};
|
||||
var forOwn = function forOwn(obj, fn) {
|
||||
return Object.keys(obj).forEach(function (key) {
|
||||
return fn(obj[key], key, obj);
|
||||
});
|
||||
};
|
||||
var forOwnRight = function forOwnRight(obj, fn) {
|
||||
return Object.keys(obj).reverse().forEach(function (key) {
|
||||
return fn(obj[key], key, obj);
|
||||
});
|
||||
};
|
||||
var formToObject = function formToObject(form) {
|
||||
return Array.from(new FormData(form)).reduce(function (acc, _ref10) {
|
||||
var _ref11 = _slicedToArray(_ref10, 2),
|
||||
key = _ref11[0],
|
||||
value = _ref11[1];
|
||||
|
||||
return _objectSpread({}, acc, _defineProperty({}, key, value));
|
||||
}, {});
|
||||
};
|
||||
var formatDuration = function formatDuration(ms) {
|
||||
if (ms < 0) ms = -ms;
|
||||
var time = {
|
||||
@ -871,14 +826,33 @@
|
||||
};
|
||||
return Object.entries(time).filter(function (val) {
|
||||
return val[1] !== 0;
|
||||
}).map(function (_ref12) {
|
||||
var _ref13 = _slicedToArray(_ref12, 2),
|
||||
key = _ref13[0],
|
||||
val = _ref13[1];
|
||||
}).map(function (_ref10) {
|
||||
var _ref11 = _slicedToArray(_ref10, 2),
|
||||
key = _ref11[0],
|
||||
val = _ref11[1];
|
||||
|
||||
return "".concat(val, " ").concat(key).concat(val !== 1 ? 's' : '');
|
||||
}).join(', ');
|
||||
};
|
||||
var formToObject = function formToObject(form) {
|
||||
return Array.from(new FormData(form)).reduce(function (acc, _ref12) {
|
||||
var _ref13 = _slicedToArray(_ref12, 2),
|
||||
key = _ref13[0],
|
||||
value = _ref13[1];
|
||||
|
||||
return _objectSpread({}, acc, _defineProperty({}, key, value));
|
||||
}, {});
|
||||
};
|
||||
var forOwn = function forOwn(obj, fn) {
|
||||
return Object.keys(obj).forEach(function (key) {
|
||||
return fn(obj[key], key, obj);
|
||||
});
|
||||
};
|
||||
var forOwnRight = function forOwnRight(obj, fn) {
|
||||
return Object.keys(obj).reverse().forEach(function (key) {
|
||||
return fn(obj[key], key, obj);
|
||||
});
|
||||
};
|
||||
var fromCamelCase = function fromCamelCase(str) {
|
||||
var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';
|
||||
return str.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2').replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2').toLowerCase();
|
||||
@ -897,8 +871,8 @@
|
||||
return !y ? x : gcd(y, x % y);
|
||||
};
|
||||
|
||||
for (var _len24 = arguments.length, arr = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
||||
arr[_key24] = arguments[_key24];
|
||||
for (var _len23 = arguments.length, arr = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
||||
arr[_key23] = arguments[_key23];
|
||||
}
|
||||
|
||||
return arr.concat().reduce(function (a, b) {
|
||||
@ -915,8 +889,8 @@
|
||||
});
|
||||
};
|
||||
var get = function get(from) {
|
||||
for (var _len25 = arguments.length, selectors = new Array(_len25 > 1 ? _len25 - 1 : 0), _key25 = 1; _key25 < _len25; _key25++) {
|
||||
selectors[_key25 - 1] = arguments[_key25];
|
||||
for (var _len24 = arguments.length, selectors = new Array(_len24 > 1 ? _len24 - 1 : 0), _key24 = 1; _key24 < _len24; _key24++) {
|
||||
selectors[_key24 - 1] = arguments[_key24];
|
||||
}
|
||||
|
||||
return selectors.concat().map(function (s) {
|
||||
@ -978,8 +952,8 @@
|
||||
return el.classList.contains(className);
|
||||
};
|
||||
var hasFlags = function hasFlags() {
|
||||
for (var _len26 = arguments.length, flags = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
||||
flags[_key26] = arguments[_key26];
|
||||
for (var _len25 = arguments.length, flags = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
||||
flags[_key25] = arguments[_key25];
|
||||
}
|
||||
|
||||
return flags.every(function (flag) {
|
||||
@ -1018,8 +992,8 @@
|
||||
return 'rgb' + (alpha ? 'a' : '') + '(' + (h >>> (alpha ? 24 : 16)) + ', ' + ((h & (alpha ? 0x00ff0000 : 0x00ff00)) >>> (alpha ? 16 : 8)) + ', ' + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? ", ".concat(h & 0x000000ff) : '') + ')';
|
||||
};
|
||||
var hide = function hide() {
|
||||
for (var _len27 = arguments.length, el = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
||||
el[_key27] = arguments[_key27];
|
||||
for (var _len26 = arguments.length, el = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
||||
el[_key26] = arguments[_key26];
|
||||
}
|
||||
|
||||
return el.concat().forEach(function (e) {
|
||||
@ -1070,17 +1044,6 @@
|
||||
|
||||
return 1000 * iterations / (performance.now() - before);
|
||||
};
|
||||
var inRange = function inRange(n, start) {
|
||||
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
||||
|
||||
if (end && start > end) {
|
||||
var _ref14 = [start, end];
|
||||
end = _ref14[0];
|
||||
start = _ref14[1];
|
||||
}
|
||||
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
var indentString = function indentString(str, count) {
|
||||
var indent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ' ';
|
||||
return str.replace(/^/gm, indent.repeat(count));
|
||||
@ -1126,8 +1089,8 @@
|
||||
return Array(n).fill(val);
|
||||
};
|
||||
var initializeNDArray = function initializeNDArray(val) {
|
||||
for (var _len28 = arguments.length, args = new Array(_len28 > 1 ? _len28 - 1 : 0), _key28 = 1; _key28 < _len28; _key28++) {
|
||||
args[_key28 - 1] = arguments[_key28];
|
||||
for (var _len27 = arguments.length, args = new Array(_len27 > 1 ? _len27 - 1 : 0), _key27 = 1; _key27 < _len27; _key27++) {
|
||||
args[_key27 - 1] = arguments[_key27];
|
||||
}
|
||||
|
||||
return args.length === 0 ? val : Array.from({
|
||||
@ -1136,6 +1099,17 @@
|
||||
return initializeNDArray.apply(void 0, [val].concat(_toConsumableArray(args.slice(1))));
|
||||
});
|
||||
};
|
||||
var inRange = function inRange(n, start) {
|
||||
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
||||
|
||||
if (end && start > end) {
|
||||
var _ref14 = [start, end];
|
||||
end = _ref14[0];
|
||||
start = _ref14[1];
|
||||
}
|
||||
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
var insertAfter = function insertAfter(el, htmlString) {
|
||||
return el.insertAdjacentHTML('afterend', htmlString);
|
||||
};
|
||||
@ -1326,6 +1300,17 @@
|
||||
return i === arr.length - 2 ? acc + val + end : i === arr.length - 1 ? acc + val : acc + val + separator;
|
||||
}, '');
|
||||
};
|
||||
var JSONtoCSV = function JSONtoCSV(arr, columns) {
|
||||
var delimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ',';
|
||||
return [columns.join(delimiter)].concat(_toConsumableArray(arr.map(function (obj) {
|
||||
return columns.reduce(function (acc, key) {
|
||||
return "".concat(acc).concat(!acc.length ? '' : delimiter, "\"").concat(!obj[key] ? '' : obj[key], "\"");
|
||||
}, '');
|
||||
}))).join('\n');
|
||||
};
|
||||
var JSONToFile = function JSONToFile(obj, filename) {
|
||||
return fs.writeFile("".concat(filename, ".json"), JSON.stringify(obj, null, 2));
|
||||
};
|
||||
var last = function last(arr) {
|
||||
return arr[arr.length - 1];
|
||||
};
|
||||
@ -1338,8 +1323,8 @@
|
||||
return x * y / gcd(x, y);
|
||||
};
|
||||
|
||||
for (var _len29 = arguments.length, arr = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
|
||||
arr[_key29] = arguments[_key29];
|
||||
for (var _len28 = arguments.length, arr = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
|
||||
arr[_key28] = arguments[_key28];
|
||||
}
|
||||
|
||||
return arr.concat().reduce(function (a, b) {
|
||||
@ -1347,8 +1332,8 @@
|
||||
});
|
||||
};
|
||||
var longestItem = function longestItem() {
|
||||
for (var _len30 = arguments.length, vals = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
|
||||
vals[_key30] = arguments[_key30];
|
||||
for (var _len29 = arguments.length, vals = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
|
||||
vals[_key29] = arguments[_key29];
|
||||
}
|
||||
|
||||
return vals.reduce(function (a, x) {
|
||||
@ -1422,8 +1407,8 @@
|
||||
var maxDate = function maxDate() {
|
||||
var _Math$max;
|
||||
|
||||
for (var _len31 = arguments.length, dates = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
|
||||
dates[_key31] = arguments[_key31];
|
||||
for (var _len30 = arguments.length, dates = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
|
||||
dates[_key30] = arguments[_key30];
|
||||
}
|
||||
|
||||
return new Date((_Math$max = Math.max).apply.apply(_Math$max, [null].concat(dates)));
|
||||
@ -1453,8 +1438,8 @@
|
||||
return cached;
|
||||
};
|
||||
var merge = function merge() {
|
||||
for (var _len32 = arguments.length, objs = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
|
||||
objs[_key32] = arguments[_key32];
|
||||
for (var _len31 = arguments.length, objs = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
|
||||
objs[_key31] = arguments[_key31];
|
||||
}
|
||||
|
||||
return objs.concat().reduce(function (acc, obj) {
|
||||
@ -1483,8 +1468,8 @@
|
||||
var minDate = function minDate() {
|
||||
var _Math$min;
|
||||
|
||||
for (var _len33 = arguments.length, dates = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {
|
||||
dates[_key33] = arguments[_key33];
|
||||
for (var _len32 = arguments.length, dates = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
|
||||
dates[_key32] = arguments[_key32];
|
||||
}
|
||||
|
||||
return new Date((_Math$min = Math.min).apply.apply(_Math$min, [null].concat(dates)));
|
||||
@ -1533,8 +1518,8 @@
|
||||
};
|
||||
var nthArg = function nthArg(n) {
|
||||
return function () {
|
||||
for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {
|
||||
args[_key34] = arguments[_key34];
|
||||
for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {
|
||||
args[_key33] = arguments[_key33];
|
||||
}
|
||||
|
||||
return args.slice(n)[0];
|
||||
@ -1605,6 +1590,19 @@
|
||||
el.addEventListener(evt, opts.target ? delegatorFn : fn, opts.options || false);
|
||||
if (opts.target) return delegatorFn;
|
||||
};
|
||||
var once = function once(fn) {
|
||||
var called = false;
|
||||
return function () {
|
||||
if (called) return;
|
||||
called = true;
|
||||
|
||||
for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {
|
||||
args[_key34] = arguments[_key34];
|
||||
}
|
||||
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
var onUserInputChange = function onUserInputChange(callback) {
|
||||
var type = 'mouse',
|
||||
lastTime = 0;
|
||||
@ -1620,19 +1618,6 @@
|
||||
type = 'touch', callback(type), document.addEventListener('mousemove', mousemoveHandler);
|
||||
});
|
||||
};
|
||||
var once = function once(fn) {
|
||||
var called = false;
|
||||
return function () {
|
||||
if (called) return;
|
||||
called = true;
|
||||
|
||||
for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {
|
||||
args[_key35] = arguments[_key35];
|
||||
}
|
||||
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
var orderBy = function orderBy(arr, props, orders) {
|
||||
return _toConsumableArray(arr).sort(function (a, b) {
|
||||
return props.reduce(function (acc, prop, i) {
|
||||
@ -1650,13 +1635,13 @@
|
||||
});
|
||||
};
|
||||
var over = function over() {
|
||||
for (var _len36 = arguments.length, fns = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {
|
||||
fns[_key36] = arguments[_key36];
|
||||
for (var _len35 = arguments.length, fns = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {
|
||||
fns[_key35] = arguments[_key35];
|
||||
}
|
||||
|
||||
return function () {
|
||||
for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {
|
||||
args[_key37] = arguments[_key37];
|
||||
for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {
|
||||
args[_key36] = arguments[_key36];
|
||||
}
|
||||
|
||||
return fns.map(function (fn) {
|
||||
@ -1666,8 +1651,8 @@
|
||||
};
|
||||
var overArgs = function overArgs(fn, transforms) {
|
||||
return function () {
|
||||
for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {
|
||||
args[_key38] = arguments[_key38];
|
||||
for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {
|
||||
args[_key37] = arguments[_key37];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, _toConsumableArray(args.map(function (val, i) {
|
||||
@ -1692,26 +1677,26 @@
|
||||
}, {});
|
||||
};
|
||||
var partial = function partial(fn) {
|
||||
for (var _len39 = arguments.length, partials = new Array(_len39 > 1 ? _len39 - 1 : 0), _key39 = 1; _key39 < _len39; _key39++) {
|
||||
partials[_key39 - 1] = arguments[_key39];
|
||||
for (var _len38 = arguments.length, partials = new Array(_len38 > 1 ? _len38 - 1 : 0), _key38 = 1; _key38 < _len38; _key38++) {
|
||||
partials[_key38 - 1] = arguments[_key38];
|
||||
}
|
||||
|
||||
return function () {
|
||||
for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {
|
||||
args[_key40] = arguments[_key40];
|
||||
for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {
|
||||
args[_key39] = arguments[_key39];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, partials.concat(args));
|
||||
};
|
||||
};
|
||||
var partialRight = function partialRight(fn) {
|
||||
for (var _len41 = arguments.length, partials = new Array(_len41 > 1 ? _len41 - 1 : 0), _key41 = 1; _key41 < _len41; _key41++) {
|
||||
partials[_key41 - 1] = arguments[_key41];
|
||||
for (var _len40 = arguments.length, partials = new Array(_len40 > 1 ? _len40 - 1 : 0), _key40 = 1; _key40 < _len40; _key40++) {
|
||||
partials[_key40 - 1] = arguments[_key40];
|
||||
}
|
||||
|
||||
return function () {
|
||||
for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {
|
||||
args[_key42] = arguments[_key42];
|
||||
for (var _len41 = arguments.length, args = new Array(_len41), _key41 = 0; _key41 < _len41; _key41++) {
|
||||
args[_key41] = arguments[_key41];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, args.concat(partials));
|
||||
@ -1749,8 +1734,8 @@
|
||||
}, {});
|
||||
};
|
||||
var pipeAsyncFunctions = function pipeAsyncFunctions() {
|
||||
for (var _len43 = arguments.length, fns = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {
|
||||
fns[_key43] = arguments[_key43];
|
||||
for (var _len42 = arguments.length, fns = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {
|
||||
fns[_key42] = arguments[_key42];
|
||||
}
|
||||
|
||||
return function (arg) {
|
||||
@ -1760,8 +1745,8 @@
|
||||
};
|
||||
};
|
||||
var pipeFunctions = function pipeFunctions() {
|
||||
for (var _len44 = arguments.length, fns = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {
|
||||
fns[_key44] = arguments[_key44];
|
||||
for (var _len43 = arguments.length, fns = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {
|
||||
fns[_key43] = arguments[_key43];
|
||||
}
|
||||
|
||||
return fns.reduce(function (f, g) {
|
||||
@ -1828,8 +1813,8 @@
|
||||
};
|
||||
var promisify = function promisify(func) {
|
||||
return function () {
|
||||
for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {
|
||||
args[_key45] = arguments[_key45];
|
||||
for (var _len44 = arguments.length, args = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {
|
||||
args[_key44] = arguments[_key44];
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
@ -1840,8 +1825,8 @@
|
||||
};
|
||||
};
|
||||
var pull = function pull(arr) {
|
||||
for (var _len46 = arguments.length, args = new Array(_len46 > 1 ? _len46 - 1 : 0), _key46 = 1; _key46 < _len46; _key46++) {
|
||||
args[_key46 - 1] = arguments[_key46];
|
||||
for (var _len45 = arguments.length, args = new Array(_len45 > 1 ? _len45 - 1 : 0), _key45 = 1; _key45 < _len45; _key45++) {
|
||||
args[_key45 - 1] = arguments[_key45];
|
||||
}
|
||||
|
||||
var argState = Array.isArray(args[0]) ? args[0] : args;
|
||||
@ -1881,8 +1866,8 @@
|
||||
return removed;
|
||||
};
|
||||
var pullBy = function pullBy(arr) {
|
||||
for (var _len47 = arguments.length, args = new Array(_len47 > 1 ? _len47 - 1 : 0), _key47 = 1; _key47 < _len47; _key47++) {
|
||||
args[_key47 - 1] = arguments[_key47];
|
||||
for (var _len46 = arguments.length, args = new Array(_len46 > 1 ? _len46 - 1 : 0), _key46 = 1; _key46 < _len46; _key46++) {
|
||||
args[_key46 - 1] = arguments[_key46];
|
||||
}
|
||||
|
||||
var length = args.length;
|
||||
@ -1925,8 +1910,8 @@
|
||||
};
|
||||
var rearg = function rearg(fn, indexes) {
|
||||
return function () {
|
||||
for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {
|
||||
args[_key48] = arguments[_key48];
|
||||
for (var _len47 = arguments.length, args = new Array(_len47), _key47 = 0; _key47 < _len47; _key47++) {
|
||||
args[_key47] = arguments[_key47];
|
||||
}
|
||||
|
||||
return fn.apply(void 0, _toConsumableArray(indexes.map(function (i) {
|
||||
@ -1966,6 +1951,14 @@
|
||||
var asLink = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
||||
return asLink ? window.location.href = url : window.location.replace(url);
|
||||
};
|
||||
var reducedFilter = function reducedFilter(data, keys, fn) {
|
||||
return data.filter(fn).map(function (el) {
|
||||
return keys.reduce(function (acc, key) {
|
||||
acc[key] = el[key];
|
||||
return acc;
|
||||
}, {});
|
||||
});
|
||||
};
|
||||
var reduceSuccessive = function reduceSuccessive(arr, fn, acc) {
|
||||
return arr.reduce(function (res, val, i, arr) {
|
||||
return res.push(fn(res.slice(-1)[0], val, i, arr)), res;
|
||||
@ -1979,14 +1972,6 @@
|
||||
return comparator(a, b) >= 0 ? b : a;
|
||||
});
|
||||
};
|
||||
var reducedFilter = function reducedFilter(data, keys, fn) {
|
||||
return data.filter(fn).map(function (el) {
|
||||
return keys.reduce(function (acc, key) {
|
||||
acc[key] = el[key];
|
||||
return acc;
|
||||
}, {});
|
||||
});
|
||||
};
|
||||
var reject = function reject(pred, array) {
|
||||
return array.filter(function () {
|
||||
return !pred.apply(void 0, arguments);
|
||||
@ -2009,6 +1994,9 @@
|
||||
var reverseString = function reverseString(str) {
|
||||
return _toConsumableArray(str).reverse().join('');
|
||||
};
|
||||
var RGBToHex = function RGBToHex(r, g, b) {
|
||||
return ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
};
|
||||
var round = function round(n) {
|
||||
var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
||||
return Number("".concat(Math.round("".concat(n, "e").concat(decimals)), "e-").concat(decimals));
|
||||
@ -2084,15 +2072,15 @@
|
||||
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
||||
var delCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
||||
|
||||
for (var _len49 = arguments.length, elements = new Array(_len49 > 3 ? _len49 - 3 : 0), _key49 = 3; _key49 < _len49; _key49++) {
|
||||
elements[_key49 - 3] = arguments[_key49];
|
||||
for (var _len48 = arguments.length, elements = new Array(_len48 > 3 ? _len48 - 3 : 0), _key48 = 3; _key48 < _len48; _key48++) {
|
||||
elements[_key48 - 3] = arguments[_key48];
|
||||
}
|
||||
|
||||
return arr.slice(0, index).concat(elements).concat(arr.slice(index + delCount));
|
||||
};
|
||||
var show = function show() {
|
||||
for (var _len50 = arguments.length, el = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {
|
||||
el[_key50] = arguments[_key50];
|
||||
for (var _len49 = arguments.length, el = new Array(_len49), _key49 = 0; _key49 < _len49; _key49++) {
|
||||
el[_key49] = arguments[_key49];
|
||||
}
|
||||
|
||||
return el.concat().forEach(function (e) {
|
||||
@ -2211,8 +2199,8 @@
|
||||
return str.replace(/<[^>]*>/g, '');
|
||||
};
|
||||
var sum = function sum() {
|
||||
for (var _len51 = arguments.length, arr = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {
|
||||
arr[_key51] = arguments[_key51];
|
||||
for (var _len50 = arguments.length, arr = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {
|
||||
arr[_key50] = arguments[_key50];
|
||||
}
|
||||
|
||||
return arr.concat().reduce(function (acc, val) {
|
||||
@ -2335,18 +2323,18 @@
|
||||
}
|
||||
};
|
||||
};
|
||||
var timeTaken = function timeTaken(callback) {
|
||||
console.time('timeTaken');
|
||||
var r = callback();
|
||||
console.timeEnd('timeTaken');
|
||||
return r;
|
||||
};
|
||||
var times = function times(n, fn) {
|
||||
var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
||||
var i = 0;
|
||||
|
||||
while (fn.call(context, i) !== false && ++i < n) {}
|
||||
};
|
||||
var timeTaken = function timeTaken(callback) {
|
||||
console.time('timeTaken');
|
||||
var r = callback();
|
||||
console.timeEnd('timeTaken');
|
||||
return r;
|
||||
};
|
||||
var toCamelCase = function toCamelCase(str) {
|
||||
var s = str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(function (x) {
|
||||
return x.slice(0, 1).toUpperCase() + x.slice(1).toLowerCase();
|
||||
@ -2363,6 +2351,9 @@
|
||||
var toDecimalMark = function toDecimalMark(num) {
|
||||
return num.toLocaleString('en-US');
|
||||
};
|
||||
var toggleClass = function toggleClass(el, className) {
|
||||
return el.classList.toggle(className);
|
||||
};
|
||||
var toHash = function toHash(object, key) {
|
||||
return Array.prototype.reduce.call(object, function (acc, data, index) {
|
||||
return acc[!key ? index : data[key]] = data, acc;
|
||||
@ -2373,6 +2364,11 @@
|
||||
return x.toLowerCase();
|
||||
}).join('-');
|
||||
};
|
||||
var tomorrow = function tomorrow() {
|
||||
var t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
var toOrdinalSuffix = function toOrdinalSuffix(num) {
|
||||
var int = parseInt(num),
|
||||
digits = [int % 10, int % 100],
|
||||
@ -2394,14 +2390,6 @@
|
||||
return x.charAt(0).toUpperCase() + x.slice(1);
|
||||
}).join(' ');
|
||||
};
|
||||
var toggleClass = function toggleClass(el, className) {
|
||||
return el.classList.toggle(className);
|
||||
};
|
||||
var tomorrow = function tomorrow() {
|
||||
var t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
var transform = function transform(obj, fn, acc) {
|
||||
return Object.keys(obj).reduce(function (a, k) {
|
||||
return fn(a, obj[k], k, obj);
|
||||
@ -2436,8 +2424,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {
|
||||
args[_key52] = arguments[_key52];
|
||||
for (var _len51 = arguments.length, args = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {
|
||||
args[_key51] = arguments[_key51];
|
||||
}
|
||||
|
||||
if (n > args.length) throw new RangeError('Arguments too few!');
|
||||
@ -2550,6 +2538,23 @@
|
||||
return fn.apply(void 0, _toConsumableArray(val));
|
||||
});
|
||||
};
|
||||
var URLJoin = function URLJoin() {
|
||||
for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {
|
||||
args[_key52] = arguments[_key52];
|
||||
}
|
||||
|
||||
return args.join('/').replace(/[\/]+/g, '/').replace(/^(.+):\//, '$1://').replace(/^file:/, 'file:/').replace(/\/(\?|&|#[^!])/g, '$1').replace(/\?/g, '&').replace('&', '?');
|
||||
};
|
||||
var UUIDGeneratorBrowser = function UUIDGeneratorBrowser() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
|
||||
return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
|
||||
});
|
||||
};
|
||||
var UUIDGeneratorNode = function UUIDGeneratorNode() {
|
||||
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
|
||||
return (c ^ crypto.randomBytes(1)[0] & 15 >> c / 4).toString(16);
|
||||
});
|
||||
};
|
||||
var validateNumber = function validateNumber(n) {
|
||||
return !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
|
||||
};
|
||||
@ -2635,14 +2640,6 @@
|
||||
});
|
||||
};
|
||||
|
||||
exports.CSVToArray = CSVToArray;
|
||||
exports.CSVToJSON = CSVToJSON;
|
||||
exports.JSONToFile = JSONToFile;
|
||||
exports.JSONtoCSV = JSONtoCSV;
|
||||
exports.RGBToHex = RGBToHex;
|
||||
exports.URLJoin = URLJoin;
|
||||
exports.UUIDGeneratorBrowser = UUIDGeneratorBrowser;
|
||||
exports.UUIDGeneratorNode = UUIDGeneratorNode;
|
||||
exports.all = all;
|
||||
exports.allEqual = allEqual;
|
||||
exports.any = any;
|
||||
@ -2683,11 +2680,13 @@
|
||||
exports.converge = converge;
|
||||
exports.copyToClipboard = copyToClipboard;
|
||||
exports.countBy = countBy;
|
||||
exports.countOccurrences = countOccurrences;
|
||||
exports.counter = counter;
|
||||
exports.countOccurrences = countOccurrences;
|
||||
exports.createDirIfNotExists = createDirIfNotExists;
|
||||
exports.createElement = createElement;
|
||||
exports.createEventHub = createEventHub;
|
||||
exports.CSVToArray = CSVToArray;
|
||||
exports.CSVToJSON = CSVToJSON;
|
||||
exports.currentURL = currentURL;
|
||||
exports.curry = curry;
|
||||
exports.dayOfYear = dayOfYear;
|
||||
@ -2696,6 +2695,7 @@
|
||||
exports.deepClone = deepClone;
|
||||
exports.deepFlatten = deepFlatten;
|
||||
exports.deepFreeze = deepFreeze;
|
||||
exports.deepGet = deepGet;
|
||||
exports.deepMapKeys = deepMapKeys;
|
||||
exports.defaults = defaults;
|
||||
exports.defer = defer;
|
||||
@ -2733,10 +2733,10 @@
|
||||
exports.flattenObject = flattenObject;
|
||||
exports.flip = flip;
|
||||
exports.forEachRight = forEachRight;
|
||||
exports.formatDuration = formatDuration;
|
||||
exports.formToObject = formToObject;
|
||||
exports.forOwn = forOwn;
|
||||
exports.forOwnRight = forOwnRight;
|
||||
exports.formToObject = formToObject;
|
||||
exports.formatDuration = formatDuration;
|
||||
exports.fromCamelCase = fromCamelCase;
|
||||
exports.functionName = functionName;
|
||||
exports.functions = functions;
|
||||
@ -2764,7 +2764,6 @@
|
||||
exports.httpPost = httpPost;
|
||||
exports.httpsRedirect = httpsRedirect;
|
||||
exports.hz = hz;
|
||||
exports.inRange = inRange;
|
||||
exports.indentString = indentString;
|
||||
exports.indexOfAll = indexOfAll;
|
||||
exports.initial = initial;
|
||||
@ -2773,6 +2772,7 @@
|
||||
exports.initializeArrayWithRangeRight = initializeArrayWithRangeRight;
|
||||
exports.initializeArrayWithValues = initializeArrayWithValues;
|
||||
exports.initializeNDArray = initializeNDArray;
|
||||
exports.inRange = inRange;
|
||||
exports.insertAfter = insertAfter;
|
||||
exports.insertBefore = insertBefore;
|
||||
exports.intersection = intersection;
|
||||
@ -2816,6 +2816,8 @@
|
||||
exports.isValidJSON = isValidJSON;
|
||||
exports.isWritableStream = isWritableStream;
|
||||
exports.join = join;
|
||||
exports.JSONtoCSV = JSONtoCSV;
|
||||
exports.JSONToFile = JSONToFile;
|
||||
exports.last = last;
|
||||
exports.lcm = lcm;
|
||||
exports.longestItem = longestItem;
|
||||
@ -2854,8 +2856,8 @@
|
||||
exports.omit = omit;
|
||||
exports.omitBy = omitBy;
|
||||
exports.on = on;
|
||||
exports.onUserInputChange = onUserInputChange;
|
||||
exports.once = once;
|
||||
exports.onUserInputChange = onUserInputChange;
|
||||
exports.orderBy = orderBy;
|
||||
exports.over = over;
|
||||
exports.overArgs = overArgs;
|
||||
@ -2890,14 +2892,15 @@
|
||||
exports.rearg = rearg;
|
||||
exports.recordAnimationFrames = recordAnimationFrames;
|
||||
exports.redirect = redirect;
|
||||
exports.reducedFilter = reducedFilter;
|
||||
exports.reduceSuccessive = reduceSuccessive;
|
||||
exports.reduceWhich = reduceWhich;
|
||||
exports.reducedFilter = reducedFilter;
|
||||
exports.reject = reject;
|
||||
exports.remove = remove;
|
||||
exports.removeNonASCII = removeNonASCII;
|
||||
exports.renameKeys = renameKeys;
|
||||
exports.reverseString = reverseString;
|
||||
exports.RGBToHex = RGBToHex;
|
||||
exports.round = round;
|
||||
exports.runAsync = runAsync;
|
||||
exports.runPromisesInSeries = runPromisesInSeries;
|
||||
@ -2939,19 +2942,19 @@
|
||||
exports.takeRightWhile = takeRightWhile;
|
||||
exports.takeWhile = takeWhile;
|
||||
exports.throttle = throttle;
|
||||
exports.timeTaken = timeTaken;
|
||||
exports.times = times;
|
||||
exports.timeTaken = timeTaken;
|
||||
exports.toCamelCase = toCamelCase;
|
||||
exports.toCurrency = toCurrency;
|
||||
exports.toDecimalMark = toDecimalMark;
|
||||
exports.toggleClass = toggleClass;
|
||||
exports.toHash = toHash;
|
||||
exports.toKebabCase = toKebabCase;
|
||||
exports.tomorrow = tomorrow;
|
||||
exports.toOrdinalSuffix = toOrdinalSuffix;
|
||||
exports.toSafeInteger = toSafeInteger;
|
||||
exports.toSnakeCase = toSnakeCase;
|
||||
exports.toTitleCase = toTitleCase;
|
||||
exports.toggleClass = toggleClass;
|
||||
exports.tomorrow = tomorrow;
|
||||
exports.transform = transform;
|
||||
exports.triggerEvent = triggerEvent;
|
||||
exports.truncateString = truncateString;
|
||||
@ -2971,6 +2974,9 @@
|
||||
exports.untildify = untildify;
|
||||
exports.unzip = unzip;
|
||||
exports.unzipWith = unzipWith;
|
||||
exports.URLJoin = URLJoin;
|
||||
exports.UUIDGeneratorBrowser = UUIDGeneratorBrowser;
|
||||
exports.UUIDGeneratorNode = UUIDGeneratorNode;
|
||||
exports.validateNumber = validateNumber;
|
||||
exports.vectorDistance = vectorDistance;
|
||||
exports.when = when;
|
||||
|
||||
2
dist/_30s.es5.min.js
vendored
2
dist/_30s.es5.min.js
vendored
File diff suppressed because one or more lines are too long
173
dist/_30s.esm.js
vendored
173
dist/_30s.esm.js
vendored
@ -1,51 +1,6 @@
|
||||
const fs = typeof require !== "undefined" && require('fs');
|
||||
const crypto = typeof require !== "undefined" && require('crypto');
|
||||
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data
|
||||
.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0)
|
||||
.split('\n')
|
||||
.map(v => v.split(delimiter));
|
||||
const CSVToJSON = (data, delimiter = ',') => {
|
||||
const titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data
|
||||
.slice(data.indexOf('\n') + 1)
|
||||
.split('\n')
|
||||
.map(v => {
|
||||
const values = v.split(delimiter);
|
||||
return titles.reduce((obj, title, index) => ((obj[title] = values[index]), obj), {});
|
||||
});
|
||||
};
|
||||
const JSONToFile = (obj, filename) =>
|
||||
fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2));
|
||||
const JSONtoCSV = (arr, columns, delimiter = ',') =>
|
||||
[
|
||||
columns.join(delimiter),
|
||||
...arr.map(obj =>
|
||||
columns.reduce(
|
||||
(acc, key) => `${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
|
||||
''
|
||||
)
|
||||
)
|
||||
].join('\n');
|
||||
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
const URLJoin = (...args) =>
|
||||
args
|
||||
.join('/')
|
||||
.replace(/[\/]+/g, '/')
|
||||
.replace(/^(.+):\//, '$1://')
|
||||
.replace(/^file:/, 'file:/')
|
||||
.replace(/\/(\?|&|#[^!])/g, '$1')
|
||||
.replace(/\?/g, '&')
|
||||
.replace('&', '?');
|
||||
const UUIDGeneratorBrowser = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const UUIDGeneratorNode = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.randomBytes(1)[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const all = (arr, fn = Boolean) => arr.every(fn);
|
||||
const allEqual = arr => arr.every(val => val === arr[0]);
|
||||
const any = (arr, fn = Boolean) => arr.some(fn);
|
||||
@ -172,7 +127,6 @@ const countBy = (arr, fn) =>
|
||||
acc[val] = (acc[val] || 0) + 1;
|
||||
return acc;
|
||||
}, {});
|
||||
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
|
||||
const counter = (selector, start, end, step = 1, duration = 2000) => {
|
||||
let current = start,
|
||||
_step = (end - start) * step < 0 ? -step : step,
|
||||
@ -184,6 +138,7 @@ const counter = (selector, start, end, step = 1, duration = 2000) => {
|
||||
}, Math.abs(Math.floor(duration / (end - start))));
|
||||
return timer;
|
||||
};
|
||||
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
|
||||
const createDirIfNotExists = dir => (!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined);
|
||||
const createElement = str => {
|
||||
const el = document.createElement('div');
|
||||
@ -204,6 +159,21 @@ const createEventHub = () => ({
|
||||
if (i > -1) this.hub[event].splice(i, 1);
|
||||
}
|
||||
});
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data
|
||||
.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0)
|
||||
.split('\n')
|
||||
.map(v => v.split(delimiter));
|
||||
const CSVToJSON = (data, delimiter = ',') => {
|
||||
const titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data
|
||||
.slice(data.indexOf('\n') + 1)
|
||||
.split('\n')
|
||||
.map(v => {
|
||||
const values = v.split(delimiter);
|
||||
return titles.reduce((obj, title, index) => ((obj[title] = values[index]), obj), {});
|
||||
});
|
||||
};
|
||||
const currentURL = () => window.location.href;
|
||||
const curry = (fn, arity = fn.length, ...args) =>
|
||||
arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);
|
||||
@ -235,6 +205,7 @@ const deepFreeze = obj =>
|
||||
prop =>
|
||||
!(obj[prop] instanceof Object) || Object.isFrozen(obj[prop]) ? null : deepFreeze(obj[prop])
|
||||
) || Object.freeze(obj);
|
||||
const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x] ? xs[x] : null), obj);
|
||||
const deepMapKeys = (obj, f) =>
|
||||
Array.isArray(obj)
|
||||
? obj.map(val => deepMapKeys(val, f))
|
||||
@ -381,19 +352,6 @@ const forEachRight = (arr, callback) =>
|
||||
.slice(0)
|
||||
.reverse()
|
||||
.forEach(callback);
|
||||
const forOwn = (obj, fn) => Object.keys(obj).forEach(key => fn(obj[key], key, obj));
|
||||
const forOwnRight = (obj, fn) =>
|
||||
Object.keys(obj)
|
||||
.reverse()
|
||||
.forEach(key => fn(obj[key], key, obj));
|
||||
const formToObject = form =>
|
||||
Array.from(new FormData(form)).reduce(
|
||||
(acc, [key, value]) => ({
|
||||
...acc,
|
||||
[key]: value
|
||||
}),
|
||||
{}
|
||||
);
|
||||
const formatDuration = ms => {
|
||||
if (ms < 0) ms = -ms;
|
||||
const time = {
|
||||
@ -408,6 +366,19 @@ const formatDuration = ms => {
|
||||
.map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`)
|
||||
.join(', ');
|
||||
};
|
||||
const formToObject = form =>
|
||||
Array.from(new FormData(form)).reduce(
|
||||
(acc, [key, value]) => ({
|
||||
...acc,
|
||||
[key]: value
|
||||
}),
|
||||
{}
|
||||
);
|
||||
const forOwn = (obj, fn) => Object.keys(obj).forEach(key => fn(obj[key], key, obj));
|
||||
const forOwnRight = (obj, fn) =>
|
||||
Object.keys(obj)
|
||||
.reverse()
|
||||
.forEach(key => fn(obj[key], key, obj));
|
||||
const fromCamelCase = (str, separator = '_') =>
|
||||
str
|
||||
.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2')
|
||||
@ -536,10 +507,6 @@ const hz = (fn, iterations = 100) => {
|
||||
for (let i = 0; i < iterations; i++) fn();
|
||||
return (1000 * iterations) / (performance.now() - before);
|
||||
};
|
||||
const inRange = (n, start, end = null) => {
|
||||
if (end && start > end) [end, start] = [start, end];
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
const indentString = (str, count, indent = ' ') => str.replace(/^/gm, indent.repeat(count));
|
||||
const indexOfAll = (arr, val) => arr.reduce((acc, el, i) => (el === val ? [...acc, i] : acc), []);
|
||||
const initial = arr => arr.slice(0, -1);
|
||||
@ -556,6 +523,10 @@ const initializeNDArray = (val, ...args) =>
|
||||
args.length === 0
|
||||
? val
|
||||
: Array.from({ length: args[0] }).map(() => initializeNDArray(val, ...args.slice(1)));
|
||||
const inRange = (n, start, end = null) => {
|
||||
if (end && start > end) [end, start] = [start, end];
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
const insertAfter = (el, htmlString) => el.insertAdjacentHTML('afterend', htmlString);
|
||||
const insertBefore = (el, htmlString) => el.insertAdjacentHTML('beforebegin', htmlString);
|
||||
const intersection = (a, b) => {
|
||||
@ -667,6 +638,18 @@ const join = (arr, separator = ',', end = separator) =>
|
||||
: acc + val + separator,
|
||||
''
|
||||
);
|
||||
const JSONtoCSV = (arr, columns, delimiter = ',') =>
|
||||
[
|
||||
columns.join(delimiter),
|
||||
...arr.map(obj =>
|
||||
columns.reduce(
|
||||
(acc, key) => `${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
|
||||
''
|
||||
)
|
||||
)
|
||||
].join('\n');
|
||||
const JSONToFile = (obj, filename) =>
|
||||
fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2));
|
||||
const last = arr => arr[arr.length - 1];
|
||||
const lcm = (...arr) => {
|
||||
const gcd = (x, y) => (!y ? x : gcd(y, x % y));
|
||||
@ -801,6 +784,14 @@ const on = (el, evt, fn, opts = {}) => {
|
||||
el.addEventListener(evt, opts.target ? delegatorFn : fn, opts.options || false);
|
||||
if (opts.target) return delegatorFn;
|
||||
};
|
||||
const once = fn => {
|
||||
let called = false;
|
||||
return function(...args) {
|
||||
if (called) return;
|
||||
called = true;
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
const onUserInputChange = callback => {
|
||||
let type = 'mouse',
|
||||
lastTime = 0;
|
||||
@ -815,14 +806,6 @@ const onUserInputChange = callback => {
|
||||
(type = 'touch'), callback(type), document.addEventListener('mousemove', mousemoveHandler);
|
||||
});
|
||||
};
|
||||
const once = fn => {
|
||||
let called = false;
|
||||
return function(...args) {
|
||||
if (called) return;
|
||||
called = true;
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
const orderBy = (arr, props, orders) =>
|
||||
[...arr].sort((a, b) =>
|
||||
props.reduce((acc, prop, i) => {
|
||||
@ -981,10 +964,6 @@ const recordAnimationFrames = (callback, autoStart = true) => {
|
||||
};
|
||||
const redirect = (url, asLink = true) =>
|
||||
asLink ? (window.location.href = url) : window.location.replace(url);
|
||||
const reduceSuccessive = (arr, fn, acc) =>
|
||||
arr.reduce((res, val, i, arr) => (res.push(fn(res.slice(-1)[0], val, i, arr)), res), [acc]);
|
||||
const reduceWhich = (arr, comparator = (a, b) => a - b) =>
|
||||
arr.reduce((a, b) => (comparator(a, b) >= 0 ? b : a));
|
||||
const reducedFilter = (data, keys, fn) =>
|
||||
data.filter(fn).map(el =>
|
||||
keys.reduce((acc, key) => {
|
||||
@ -992,6 +971,10 @@ const reducedFilter = (data, keys, fn) =>
|
||||
return acc;
|
||||
}, {})
|
||||
);
|
||||
const reduceSuccessive = (arr, fn, acc) =>
|
||||
arr.reduce((res, val, i, arr) => (res.push(fn(res.slice(-1)[0], val, i, arr)), res), [acc]);
|
||||
const reduceWhich = (arr, comparator = (a, b) => a - b) =>
|
||||
arr.reduce((a, b) => (comparator(a, b) >= 0 ? b : a));
|
||||
const reject = (pred, array) => array.filter((...args) => !pred(...args));
|
||||
const remove = (arr, func) =>
|
||||
Array.isArray(arr)
|
||||
@ -1010,6 +993,7 @@ const renameKeys = (keysMap, obj) =>
|
||||
{}
|
||||
);
|
||||
const reverseString = str => [...str].reverse().join('');
|
||||
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
const round = (n, decimals = 0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`);
|
||||
const runAsync = fn => {
|
||||
const worker = new Worker(
|
||||
@ -1186,16 +1170,16 @@ const throttle = (fn, wait) => {
|
||||
}
|
||||
};
|
||||
};
|
||||
const times = (n, fn, context = undefined) => {
|
||||
let i = 0;
|
||||
while (fn.call(context, i) !== false && ++i < n) {}
|
||||
};
|
||||
const timeTaken = callback => {
|
||||
console.time('timeTaken');
|
||||
const r = callback();
|
||||
console.timeEnd('timeTaken');
|
||||
return r;
|
||||
};
|
||||
const times = (n, fn, context = undefined) => {
|
||||
let i = 0;
|
||||
while (fn.call(context, i) !== false && ++i < n) {}
|
||||
};
|
||||
const toCamelCase = str => {
|
||||
let s =
|
||||
str &&
|
||||
@ -1208,6 +1192,7 @@ const toCamelCase = str => {
|
||||
const toCurrency = (n, curr, LanguageFormat = undefined) =>
|
||||
Intl.NumberFormat(LanguageFormat, { style: 'currency', currency: curr }).format(n);
|
||||
const toDecimalMark = num => num.toLocaleString('en-US');
|
||||
const toggleClass = (el, className) => el.classList.toggle(className);
|
||||
const toHash = (object, key) =>
|
||||
Array.prototype.reduce.call(
|
||||
object,
|
||||
@ -1220,6 +1205,11 @@ const toKebabCase = str =>
|
||||
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
||||
.map(x => x.toLowerCase())
|
||||
.join('-');
|
||||
const tomorrow = () => {
|
||||
let t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
const toOrdinalSuffix = num => {
|
||||
const int = parseInt(num),
|
||||
digits = [int % 10, int % 100],
|
||||
@ -1243,12 +1233,6 @@ const toTitleCase = str =>
|
||||
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
||||
.map(x => x.charAt(0).toUpperCase() + x.slice(1))
|
||||
.join(' ');
|
||||
const toggleClass = (el, className) => el.classList.toggle(className);
|
||||
const tomorrow = () => {
|
||||
let t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
const transform = (obj, fn, acc) => Object.keys(obj).reduce((a, k) => fn(a, obj[k], k, obj), acc);
|
||||
const triggerEvent = (el, eventType, detail) =>
|
||||
el.dispatchEvent(new CustomEvent(eventType, { detail }));
|
||||
@ -1333,6 +1317,23 @@ const unzipWith = (arr, fn) =>
|
||||
}).map(x => [])
|
||||
)
|
||||
.map(val => fn(...val));
|
||||
const URLJoin = (...args) =>
|
||||
args
|
||||
.join('/')
|
||||
.replace(/[\/]+/g, '/')
|
||||
.replace(/^(.+):\//, '$1://')
|
||||
.replace(/^file:/, 'file:/')
|
||||
.replace(/\/(\?|&|#[^!])/g, '$1')
|
||||
.replace(/\?/g, '&')
|
||||
.replace('&', '?');
|
||||
const UUIDGeneratorBrowser = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const UUIDGeneratorNode = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.randomBytes(1)[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
|
||||
const vectorDistance = (...coords) => {
|
||||
let pointLength = Math.trunc(coords.length / 2);
|
||||
@ -1363,4 +1364,4 @@ const zipWith = (...array) => {
|
||||
);
|
||||
};
|
||||
|
||||
export { CSVToArray, CSVToJSON, JSONToFile, JSONtoCSV, RGBToHex, URLJoin, UUIDGeneratorBrowser, UUIDGeneratorNode, all, allEqual, any, approximatelyEqual, arrayToCSV, arrayToHtmlList, ary, atob, attempt, average, averageBy, bifurcate, bifurcateBy, bind, bindAll, bindKey, binomialCoefficient, bottomVisible, btoa, byteSize, call, capitalize, capitalizeEveryWord, castArray, chainAsync, checkProp, chunk, clampNumber, cloneRegExp, coalesce, coalesceFactory, collectInto, colorize, compact, compactWhitespace, compose, composeRight, converge, copyToClipboard, countBy, countOccurrences, counter, createDirIfNotExists, createElement, createEventHub, currentURL, curry, dayOfYear, debounce, decapitalize, deepClone, deepFlatten, deepFreeze, deepMapKeys, defaults, defer, degreesToRads, delay, detectDeviceType, difference, differenceBy, differenceWith, dig, digitize, distance, drop, dropRight, dropRightWhile, dropWhile, elementContains, elementIsVisibleInViewport, elo, equals, escapeHTML, escapeRegExp, everyNth, extendHex, factorial, fibonacci, filterFalsy, filterNonUnique, filterNonUniqueBy, findKey, findLast, findLastIndex, findLastKey, flatten, flattenObject, flip, forEachRight, forOwn, forOwnRight, formToObject, formatDuration, fromCamelCase, functionName, functions, gcd, geometricProgression, get, getColonTimeFromDate, getDaysDiffBetweenDates, getImages, getMeridiemSuffixOfInteger, getScrollPosition, getStyle, getType, getURLParameters, groupBy, hammingDistance, hasClass, hasFlags, hashBrowser, hashNode, head, hexToRGB, hide, httpGet, httpPost, httpsRedirect, hz, inRange, indentString, indexOfAll, initial, initialize2DArray, initializeArrayWithRange, initializeArrayWithRangeRight, initializeArrayWithValues, initializeNDArray, insertAfter, insertBefore, intersection, intersectionBy, intersectionWith, invertKeyValues, is, isAbsoluteURL, isAfterDate, isAnagram, isArrayLike, isBeforeDate, isBoolean, isBrowser, isBrowserTabFocused, isDivisible, isDuplexStream, isEmpty, isEven, isFunction, isLowerCase, isNegativeZero, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrime, isPrimitive, isPromiseLike, isReadableStream, isSameDate, isSorted, isStream, isString, isSymbol, isTravisCI, isUndefined, isUpperCase, isValidJSON, isWritableStream, join, last, lcm, longestItem, lowercaseKeys, luhnCheck, mapKeys, mapNumRange, mapObject, mapString, mapValues, mask, matches, matchesWith, maxBy, maxDate, maxN, median, memoize, merge, midpoint, minBy, minDate, minN, mostPerformant, negate, nest, nodeListToArray, none, nthArg, nthElement, objectFromPairs, objectToPairs, observeMutations, off, offset, omit, omitBy, on, onUserInputChange, once, orderBy, over, overArgs, pad, palindrome, parseCookie, partial, partialRight, partition, percentile, permutations, pick, pickBy, pipeAsyncFunctions, pipeFunctions, pluralize, powerset, prefix, prettyBytes, primes, promisify, pull, pullAtIndex, pullAtValue, pullBy, radsToDegrees, randomHexColorCode, randomIntArrayInRange, randomIntegerInRange, randomNumberInRange, readFileLines, rearg, recordAnimationFrames, redirect, reduceSuccessive, reduceWhich, reducedFilter, reject, remove, removeNonASCII, renameKeys, reverseString, round, runAsync, runPromisesInSeries, sample, sampleSize, scrollToTop, sdbm, serializeCookie, serializeForm, setStyle, shallowClone, shank, show, shuffle, similarity, size, sleep, smoothScroll, sortCharactersInString, sortedIndex, sortedIndexBy, sortedLastIndex, sortedLastIndexBy, splitLines, spreadOver, stableSort, standardDeviation, stringPermutations, stripHTMLTags, sum, sumBy, sumPower, symmetricDifference, symmetricDifferenceBy, symmetricDifferenceWith, tail, take, takeRight, takeRightWhile, takeWhile, throttle, timeTaken, times, toCamelCase, toCurrency, toDecimalMark, toHash, toKebabCase, toOrdinalSuffix, toSafeInteger, toSnakeCase, toTitleCase, toggleClass, tomorrow, transform, triggerEvent, truncateString, truthCheckCollection, unary, uncurry, unescapeHTML, unflattenObject, unfold, union, unionBy, unionWith, uniqueElements, uniqueElementsBy, uniqueElementsByRight, uniqueSymmetricDifference, untildify, unzip, unzipWith, validateNumber, vectorDistance, when, without, words, xProd, yesNo, zip, zipObject, zipWith };
|
||||
export { all, allEqual, any, approximatelyEqual, arrayToCSV, arrayToHtmlList, ary, atob, attempt, average, averageBy, bifurcate, bifurcateBy, bind, bindAll, bindKey, binomialCoefficient, bottomVisible, btoa, byteSize, call, capitalize, capitalizeEveryWord, castArray, chainAsync, checkProp, chunk, clampNumber, cloneRegExp, coalesce, coalesceFactory, collectInto, colorize, compact, compactWhitespace, compose, composeRight, converge, copyToClipboard, countBy, counter, countOccurrences, createDirIfNotExists, createElement, createEventHub, CSVToArray, CSVToJSON, currentURL, curry, dayOfYear, debounce, decapitalize, deepClone, deepFlatten, deepFreeze, deepGet, deepMapKeys, defaults, defer, degreesToRads, delay, detectDeviceType, difference, differenceBy, differenceWith, dig, digitize, distance, drop, dropRight, dropRightWhile, dropWhile, elementContains, elementIsVisibleInViewport, elo, equals, escapeHTML, escapeRegExp, everyNth, extendHex, factorial, fibonacci, filterFalsy, filterNonUnique, filterNonUniqueBy, findKey, findLast, findLastIndex, findLastKey, flatten, flattenObject, flip, forEachRight, formatDuration, formToObject, forOwn, forOwnRight, fromCamelCase, functionName, functions, gcd, geometricProgression, get, getColonTimeFromDate, getDaysDiffBetweenDates, getImages, getMeridiemSuffixOfInteger, getScrollPosition, getStyle, getType, getURLParameters, groupBy, hammingDistance, hasClass, hasFlags, hashBrowser, hashNode, head, hexToRGB, hide, httpGet, httpPost, httpsRedirect, hz, indentString, indexOfAll, initial, initialize2DArray, initializeArrayWithRange, initializeArrayWithRangeRight, initializeArrayWithValues, initializeNDArray, inRange, insertAfter, insertBefore, intersection, intersectionBy, intersectionWith, invertKeyValues, is, isAbsoluteURL, isAfterDate, isAnagram, isArrayLike, isBeforeDate, isBoolean, isBrowser, isBrowserTabFocused, isDivisible, isDuplexStream, isEmpty, isEven, isFunction, isLowerCase, isNegativeZero, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrime, isPrimitive, isPromiseLike, isReadableStream, isSameDate, isSorted, isStream, isString, isSymbol, isTravisCI, isUndefined, isUpperCase, isValidJSON, isWritableStream, join, JSONtoCSV, JSONToFile, last, lcm, longestItem, lowercaseKeys, luhnCheck, mapKeys, mapNumRange, mapObject, mapString, mapValues, mask, matches, matchesWith, maxBy, maxDate, maxN, median, memoize, merge, midpoint, minBy, minDate, minN, mostPerformant, negate, nest, nodeListToArray, none, nthArg, nthElement, objectFromPairs, objectToPairs, observeMutations, off, offset, omit, omitBy, on, once, onUserInputChange, orderBy, over, overArgs, pad, palindrome, parseCookie, partial, partialRight, partition, percentile, permutations, pick, pickBy, pipeAsyncFunctions, pipeFunctions, pluralize, powerset, prefix, prettyBytes, primes, promisify, pull, pullAtIndex, pullAtValue, pullBy, radsToDegrees, randomHexColorCode, randomIntArrayInRange, randomIntegerInRange, randomNumberInRange, readFileLines, rearg, recordAnimationFrames, redirect, reducedFilter, reduceSuccessive, reduceWhich, reject, remove, removeNonASCII, renameKeys, reverseString, RGBToHex, round, runAsync, runPromisesInSeries, sample, sampleSize, scrollToTop, sdbm, serializeCookie, serializeForm, setStyle, shallowClone, shank, show, shuffle, similarity, size, sleep, smoothScroll, sortCharactersInString, sortedIndex, sortedIndexBy, sortedLastIndex, sortedLastIndexBy, splitLines, spreadOver, stableSort, standardDeviation, stringPermutations, stripHTMLTags, sum, sumBy, sumPower, symmetricDifference, symmetricDifferenceBy, symmetricDifferenceWith, tail, take, takeRight, takeRightWhile, takeWhile, throttle, times, timeTaken, toCamelCase, toCurrency, toDecimalMark, toggleClass, toHash, toKebabCase, tomorrow, toOrdinalSuffix, toSafeInteger, toSnakeCase, toTitleCase, transform, triggerEvent, truncateString, truthCheckCollection, unary, uncurry, unescapeHTML, unflattenObject, unfold, union, unionBy, unionWith, uniqueElements, uniqueElementsBy, uniqueElementsByRight, uniqueSymmetricDifference, untildify, unzip, unzipWith, URLJoin, UUIDGeneratorBrowser, UUIDGeneratorNode, validateNumber, vectorDistance, when, without, words, xProd, yesNo, zip, zipObject, zipWith };
|
||||
|
||||
206
dist/_30s.js
vendored
206
dist/_30s.js
vendored
@ -7,51 +7,6 @@
|
||||
const fs = typeof require !== "undefined" && require('fs');
|
||||
const crypto = typeof require !== "undefined" && require('crypto');
|
||||
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data
|
||||
.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0)
|
||||
.split('\n')
|
||||
.map(v => v.split(delimiter));
|
||||
const CSVToJSON = (data, delimiter = ',') => {
|
||||
const titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data
|
||||
.slice(data.indexOf('\n') + 1)
|
||||
.split('\n')
|
||||
.map(v => {
|
||||
const values = v.split(delimiter);
|
||||
return titles.reduce((obj, title, index) => ((obj[title] = values[index]), obj), {});
|
||||
});
|
||||
};
|
||||
const JSONToFile = (obj, filename) =>
|
||||
fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2));
|
||||
const JSONtoCSV = (arr, columns, delimiter = ',') =>
|
||||
[
|
||||
columns.join(delimiter),
|
||||
...arr.map(obj =>
|
||||
columns.reduce(
|
||||
(acc, key) => `${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
|
||||
''
|
||||
)
|
||||
)
|
||||
].join('\n');
|
||||
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
const URLJoin = (...args) =>
|
||||
args
|
||||
.join('/')
|
||||
.replace(/[\/]+/g, '/')
|
||||
.replace(/^(.+):\//, '$1://')
|
||||
.replace(/^file:/, 'file:/')
|
||||
.replace(/\/(\?|&|#[^!])/g, '$1')
|
||||
.replace(/\?/g, '&')
|
||||
.replace('&', '?');
|
||||
const UUIDGeneratorBrowser = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const UUIDGeneratorNode = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.randomBytes(1)[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const all = (arr, fn = Boolean) => arr.every(fn);
|
||||
const allEqual = arr => arr.every(val => val === arr[0]);
|
||||
const any = (arr, fn = Boolean) => arr.some(fn);
|
||||
@ -178,7 +133,6 @@
|
||||
acc[val] = (acc[val] || 0) + 1;
|
||||
return acc;
|
||||
}, {});
|
||||
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
|
||||
const counter = (selector, start, end, step = 1, duration = 2000) => {
|
||||
let current = start,
|
||||
_step = (end - start) * step < 0 ? -step : step,
|
||||
@ -190,6 +144,7 @@
|
||||
}, Math.abs(Math.floor(duration / (end - start))));
|
||||
return timer;
|
||||
};
|
||||
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
|
||||
const createDirIfNotExists = dir => (!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined);
|
||||
const createElement = str => {
|
||||
const el = document.createElement('div');
|
||||
@ -210,6 +165,21 @@
|
||||
if (i > -1) this.hub[event].splice(i, 1);
|
||||
}
|
||||
});
|
||||
const CSVToArray = (data, delimiter = ',', omitFirstRow = false) =>
|
||||
data
|
||||
.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0)
|
||||
.split('\n')
|
||||
.map(v => v.split(delimiter));
|
||||
const CSVToJSON = (data, delimiter = ',') => {
|
||||
const titles = data.slice(0, data.indexOf('\n')).split(delimiter);
|
||||
return data
|
||||
.slice(data.indexOf('\n') + 1)
|
||||
.split('\n')
|
||||
.map(v => {
|
||||
const values = v.split(delimiter);
|
||||
return titles.reduce((obj, title, index) => ((obj[title] = values[index]), obj), {});
|
||||
});
|
||||
};
|
||||
const currentURL = () => window.location.href;
|
||||
const curry = (fn, arity = fn.length, ...args) =>
|
||||
arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);
|
||||
@ -241,6 +211,7 @@
|
||||
prop =>
|
||||
!(obj[prop] instanceof Object) || Object.isFrozen(obj[prop]) ? null : deepFreeze(obj[prop])
|
||||
) || Object.freeze(obj);
|
||||
const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x] ? xs[x] : null), obj);
|
||||
const deepMapKeys = (obj, f) =>
|
||||
Array.isArray(obj)
|
||||
? obj.map(val => deepMapKeys(val, f))
|
||||
@ -387,19 +358,6 @@
|
||||
.slice(0)
|
||||
.reverse()
|
||||
.forEach(callback);
|
||||
const forOwn = (obj, fn) => Object.keys(obj).forEach(key => fn(obj[key], key, obj));
|
||||
const forOwnRight = (obj, fn) =>
|
||||
Object.keys(obj)
|
||||
.reverse()
|
||||
.forEach(key => fn(obj[key], key, obj));
|
||||
const formToObject = form =>
|
||||
Array.from(new FormData(form)).reduce(
|
||||
(acc, [key, value]) => ({
|
||||
...acc,
|
||||
[key]: value
|
||||
}),
|
||||
{}
|
||||
);
|
||||
const formatDuration = ms => {
|
||||
if (ms < 0) ms = -ms;
|
||||
const time = {
|
||||
@ -414,6 +372,19 @@
|
||||
.map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`)
|
||||
.join(', ');
|
||||
};
|
||||
const formToObject = form =>
|
||||
Array.from(new FormData(form)).reduce(
|
||||
(acc, [key, value]) => ({
|
||||
...acc,
|
||||
[key]: value
|
||||
}),
|
||||
{}
|
||||
);
|
||||
const forOwn = (obj, fn) => Object.keys(obj).forEach(key => fn(obj[key], key, obj));
|
||||
const forOwnRight = (obj, fn) =>
|
||||
Object.keys(obj)
|
||||
.reverse()
|
||||
.forEach(key => fn(obj[key], key, obj));
|
||||
const fromCamelCase = (str, separator = '_') =>
|
||||
str
|
||||
.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2')
|
||||
@ -542,10 +513,6 @@
|
||||
for (let i = 0; i < iterations; i++) fn();
|
||||
return (1000 * iterations) / (performance.now() - before);
|
||||
};
|
||||
const inRange = (n, start, end = null) => {
|
||||
if (end && start > end) [end, start] = [start, end];
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
const indentString = (str, count, indent = ' ') => str.replace(/^/gm, indent.repeat(count));
|
||||
const indexOfAll = (arr, val) => arr.reduce((acc, el, i) => (el === val ? [...acc, i] : acc), []);
|
||||
const initial = arr => arr.slice(0, -1);
|
||||
@ -562,6 +529,10 @@
|
||||
args.length === 0
|
||||
? val
|
||||
: Array.from({ length: args[0] }).map(() => initializeNDArray(val, ...args.slice(1)));
|
||||
const inRange = (n, start, end = null) => {
|
||||
if (end && start > end) [end, start] = [start, end];
|
||||
return end == null ? n >= 0 && n < start : n >= start && n < end;
|
||||
};
|
||||
const insertAfter = (el, htmlString) => el.insertAdjacentHTML('afterend', htmlString);
|
||||
const insertBefore = (el, htmlString) => el.insertAdjacentHTML('beforebegin', htmlString);
|
||||
const intersection = (a, b) => {
|
||||
@ -673,6 +644,18 @@
|
||||
: acc + val + separator,
|
||||
''
|
||||
);
|
||||
const JSONtoCSV = (arr, columns, delimiter = ',') =>
|
||||
[
|
||||
columns.join(delimiter),
|
||||
...arr.map(obj =>
|
||||
columns.reduce(
|
||||
(acc, key) => `${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
|
||||
''
|
||||
)
|
||||
)
|
||||
].join('\n');
|
||||
const JSONToFile = (obj, filename) =>
|
||||
fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2));
|
||||
const last = arr => arr[arr.length - 1];
|
||||
const lcm = (...arr) => {
|
||||
const gcd = (x, y) => (!y ? x : gcd(y, x % y));
|
||||
@ -807,6 +790,14 @@
|
||||
el.addEventListener(evt, opts.target ? delegatorFn : fn, opts.options || false);
|
||||
if (opts.target) return delegatorFn;
|
||||
};
|
||||
const once = fn => {
|
||||
let called = false;
|
||||
return function(...args) {
|
||||
if (called) return;
|
||||
called = true;
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
const onUserInputChange = callback => {
|
||||
let type = 'mouse',
|
||||
lastTime = 0;
|
||||
@ -821,14 +812,6 @@
|
||||
(type = 'touch'), callback(type), document.addEventListener('mousemove', mousemoveHandler);
|
||||
});
|
||||
};
|
||||
const once = fn => {
|
||||
let called = false;
|
||||
return function(...args) {
|
||||
if (called) return;
|
||||
called = true;
|
||||
return fn.apply(this, args);
|
||||
};
|
||||
};
|
||||
const orderBy = (arr, props, orders) =>
|
||||
[...arr].sort((a, b) =>
|
||||
props.reduce((acc, prop, i) => {
|
||||
@ -987,10 +970,6 @@
|
||||
};
|
||||
const redirect = (url, asLink = true) =>
|
||||
asLink ? (window.location.href = url) : window.location.replace(url);
|
||||
const reduceSuccessive = (arr, fn, acc) =>
|
||||
arr.reduce((res, val, i, arr) => (res.push(fn(res.slice(-1)[0], val, i, arr)), res), [acc]);
|
||||
const reduceWhich = (arr, comparator = (a, b) => a - b) =>
|
||||
arr.reduce((a, b) => (comparator(a, b) >= 0 ? b : a));
|
||||
const reducedFilter = (data, keys, fn) =>
|
||||
data.filter(fn).map(el =>
|
||||
keys.reduce((acc, key) => {
|
||||
@ -998,6 +977,10 @@
|
||||
return acc;
|
||||
}, {})
|
||||
);
|
||||
const reduceSuccessive = (arr, fn, acc) =>
|
||||
arr.reduce((res, val, i, arr) => (res.push(fn(res.slice(-1)[0], val, i, arr)), res), [acc]);
|
||||
const reduceWhich = (arr, comparator = (a, b) => a - b) =>
|
||||
arr.reduce((a, b) => (comparator(a, b) >= 0 ? b : a));
|
||||
const reject = (pred, array) => array.filter((...args) => !pred(...args));
|
||||
const remove = (arr, func) =>
|
||||
Array.isArray(arr)
|
||||
@ -1016,6 +999,7 @@
|
||||
{}
|
||||
);
|
||||
const reverseString = str => [...str].reverse().join('');
|
||||
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
|
||||
const round = (n, decimals = 0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`);
|
||||
const runAsync = fn => {
|
||||
const worker = new Worker(
|
||||
@ -1192,16 +1176,16 @@
|
||||
}
|
||||
};
|
||||
};
|
||||
const times = (n, fn, context = undefined) => {
|
||||
let i = 0;
|
||||
while (fn.call(context, i) !== false && ++i < n) {}
|
||||
};
|
||||
const timeTaken = callback => {
|
||||
console.time('timeTaken');
|
||||
const r = callback();
|
||||
console.timeEnd('timeTaken');
|
||||
return r;
|
||||
};
|
||||
const times = (n, fn, context = undefined) => {
|
||||
let i = 0;
|
||||
while (fn.call(context, i) !== false && ++i < n) {}
|
||||
};
|
||||
const toCamelCase = str => {
|
||||
let s =
|
||||
str &&
|
||||
@ -1214,6 +1198,7 @@
|
||||
const toCurrency = (n, curr, LanguageFormat = undefined) =>
|
||||
Intl.NumberFormat(LanguageFormat, { style: 'currency', currency: curr }).format(n);
|
||||
const toDecimalMark = num => num.toLocaleString('en-US');
|
||||
const toggleClass = (el, className) => el.classList.toggle(className);
|
||||
const toHash = (object, key) =>
|
||||
Array.prototype.reduce.call(
|
||||
object,
|
||||
@ -1226,6 +1211,11 @@
|
||||
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
||||
.map(x => x.toLowerCase())
|
||||
.join('-');
|
||||
const tomorrow = () => {
|
||||
let t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
const toOrdinalSuffix = num => {
|
||||
const int = parseInt(num),
|
||||
digits = [int % 10, int % 100],
|
||||
@ -1249,12 +1239,6 @@
|
||||
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
||||
.map(x => x.charAt(0).toUpperCase() + x.slice(1))
|
||||
.join(' ');
|
||||
const toggleClass = (el, className) => el.classList.toggle(className);
|
||||
const tomorrow = () => {
|
||||
let t = new Date();
|
||||
t.setDate(t.getDate() + 1);
|
||||
return t.toISOString().split('T')[0];
|
||||
};
|
||||
const transform = (obj, fn, acc) => Object.keys(obj).reduce((a, k) => fn(a, obj[k], k, obj), acc);
|
||||
const triggerEvent = (el, eventType, detail) =>
|
||||
el.dispatchEvent(new CustomEvent(eventType, { detail }));
|
||||
@ -1339,6 +1323,23 @@
|
||||
}).map(x => [])
|
||||
)
|
||||
.map(val => fn(...val));
|
||||
const URLJoin = (...args) =>
|
||||
args
|
||||
.join('/')
|
||||
.replace(/[\/]+/g, '/')
|
||||
.replace(/^(.+):\//, '$1://')
|
||||
.replace(/^file:/, 'file:/')
|
||||
.replace(/\/(\?|&|#[^!])/g, '$1')
|
||||
.replace(/\?/g, '&')
|
||||
.replace('&', '?');
|
||||
const UUIDGeneratorBrowser = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const UUIDGeneratorNode = () =>
|
||||
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||
(c ^ (crypto.randomBytes(1)[0] & (15 >> (c / 4)))).toString(16)
|
||||
);
|
||||
const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
|
||||
const vectorDistance = (...coords) => {
|
||||
let pointLength = Math.trunc(coords.length / 2);
|
||||
@ -1369,14 +1370,6 @@
|
||||
);
|
||||
};
|
||||
|
||||
exports.CSVToArray = CSVToArray;
|
||||
exports.CSVToJSON = CSVToJSON;
|
||||
exports.JSONToFile = JSONToFile;
|
||||
exports.JSONtoCSV = JSONtoCSV;
|
||||
exports.RGBToHex = RGBToHex;
|
||||
exports.URLJoin = URLJoin;
|
||||
exports.UUIDGeneratorBrowser = UUIDGeneratorBrowser;
|
||||
exports.UUIDGeneratorNode = UUIDGeneratorNode;
|
||||
exports.all = all;
|
||||
exports.allEqual = allEqual;
|
||||
exports.any = any;
|
||||
@ -1417,11 +1410,13 @@
|
||||
exports.converge = converge;
|
||||
exports.copyToClipboard = copyToClipboard;
|
||||
exports.countBy = countBy;
|
||||
exports.countOccurrences = countOccurrences;
|
||||
exports.counter = counter;
|
||||
exports.countOccurrences = countOccurrences;
|
||||
exports.createDirIfNotExists = createDirIfNotExists;
|
||||
exports.createElement = createElement;
|
||||
exports.createEventHub = createEventHub;
|
||||
exports.CSVToArray = CSVToArray;
|
||||
exports.CSVToJSON = CSVToJSON;
|
||||
exports.currentURL = currentURL;
|
||||
exports.curry = curry;
|
||||
exports.dayOfYear = dayOfYear;
|
||||
@ -1430,6 +1425,7 @@
|
||||
exports.deepClone = deepClone;
|
||||
exports.deepFlatten = deepFlatten;
|
||||
exports.deepFreeze = deepFreeze;
|
||||
exports.deepGet = deepGet;
|
||||
exports.deepMapKeys = deepMapKeys;
|
||||
exports.defaults = defaults;
|
||||
exports.defer = defer;
|
||||
@ -1467,10 +1463,10 @@
|
||||
exports.flattenObject = flattenObject;
|
||||
exports.flip = flip;
|
||||
exports.forEachRight = forEachRight;
|
||||
exports.formatDuration = formatDuration;
|
||||
exports.formToObject = formToObject;
|
||||
exports.forOwn = forOwn;
|
||||
exports.forOwnRight = forOwnRight;
|
||||
exports.formToObject = formToObject;
|
||||
exports.formatDuration = formatDuration;
|
||||
exports.fromCamelCase = fromCamelCase;
|
||||
exports.functionName = functionName;
|
||||
exports.functions = functions;
|
||||
@ -1498,7 +1494,6 @@
|
||||
exports.httpPost = httpPost;
|
||||
exports.httpsRedirect = httpsRedirect;
|
||||
exports.hz = hz;
|
||||
exports.inRange = inRange;
|
||||
exports.indentString = indentString;
|
||||
exports.indexOfAll = indexOfAll;
|
||||
exports.initial = initial;
|
||||
@ -1507,6 +1502,7 @@
|
||||
exports.initializeArrayWithRangeRight = initializeArrayWithRangeRight;
|
||||
exports.initializeArrayWithValues = initializeArrayWithValues;
|
||||
exports.initializeNDArray = initializeNDArray;
|
||||
exports.inRange = inRange;
|
||||
exports.insertAfter = insertAfter;
|
||||
exports.insertBefore = insertBefore;
|
||||
exports.intersection = intersection;
|
||||
@ -1550,6 +1546,8 @@
|
||||
exports.isValidJSON = isValidJSON;
|
||||
exports.isWritableStream = isWritableStream;
|
||||
exports.join = join;
|
||||
exports.JSONtoCSV = JSONtoCSV;
|
||||
exports.JSONToFile = JSONToFile;
|
||||
exports.last = last;
|
||||
exports.lcm = lcm;
|
||||
exports.longestItem = longestItem;
|
||||
@ -1588,8 +1586,8 @@
|
||||
exports.omit = omit;
|
||||
exports.omitBy = omitBy;
|
||||
exports.on = on;
|
||||
exports.onUserInputChange = onUserInputChange;
|
||||
exports.once = once;
|
||||
exports.onUserInputChange = onUserInputChange;
|
||||
exports.orderBy = orderBy;
|
||||
exports.over = over;
|
||||
exports.overArgs = overArgs;
|
||||
@ -1624,14 +1622,15 @@
|
||||
exports.rearg = rearg;
|
||||
exports.recordAnimationFrames = recordAnimationFrames;
|
||||
exports.redirect = redirect;
|
||||
exports.reducedFilter = reducedFilter;
|
||||
exports.reduceSuccessive = reduceSuccessive;
|
||||
exports.reduceWhich = reduceWhich;
|
||||
exports.reducedFilter = reducedFilter;
|
||||
exports.reject = reject;
|
||||
exports.remove = remove;
|
||||
exports.removeNonASCII = removeNonASCII;
|
||||
exports.renameKeys = renameKeys;
|
||||
exports.reverseString = reverseString;
|
||||
exports.RGBToHex = RGBToHex;
|
||||
exports.round = round;
|
||||
exports.runAsync = runAsync;
|
||||
exports.runPromisesInSeries = runPromisesInSeries;
|
||||
@ -1673,19 +1672,19 @@
|
||||
exports.takeRightWhile = takeRightWhile;
|
||||
exports.takeWhile = takeWhile;
|
||||
exports.throttle = throttle;
|
||||
exports.timeTaken = timeTaken;
|
||||
exports.times = times;
|
||||
exports.timeTaken = timeTaken;
|
||||
exports.toCamelCase = toCamelCase;
|
||||
exports.toCurrency = toCurrency;
|
||||
exports.toDecimalMark = toDecimalMark;
|
||||
exports.toggleClass = toggleClass;
|
||||
exports.toHash = toHash;
|
||||
exports.toKebabCase = toKebabCase;
|
||||
exports.tomorrow = tomorrow;
|
||||
exports.toOrdinalSuffix = toOrdinalSuffix;
|
||||
exports.toSafeInteger = toSafeInteger;
|
||||
exports.toSnakeCase = toSnakeCase;
|
||||
exports.toTitleCase = toTitleCase;
|
||||
exports.toggleClass = toggleClass;
|
||||
exports.tomorrow = tomorrow;
|
||||
exports.transform = transform;
|
||||
exports.triggerEvent = triggerEvent;
|
||||
exports.truncateString = truncateString;
|
||||
@ -1705,6 +1704,9 @@
|
||||
exports.untildify = untildify;
|
||||
exports.unzip = unzip;
|
||||
exports.unzipWith = unzipWith;
|
||||
exports.URLJoin = URLJoin;
|
||||
exports.UUIDGeneratorBrowser = UUIDGeneratorBrowser;
|
||||
exports.UUIDGeneratorNode = UUIDGeneratorNode;
|
||||
exports.validateNumber = validateNumber;
|
||||
exports.vectorDistance = vectorDistance;
|
||||
exports.when = when;
|
||||
|
||||
@ -17,6 +17,7 @@ const checkProp = (predicate, prop) => obj => !!predicate(obj[prop]);
|
||||
|
||||
|
||||
|
||||
|
||||
const lengthIs4 = checkProp(l => l === 4, 'length');
|
||||
lengthIs4([]); // false
|
||||
lengthIs4([1,2,3,4]); // true
|
||||
|
||||
@ -7,11 +7,11 @@ Use `Array.prototype.reduce()` to get value from nested JSON object one by one.
|
||||
If the key exists in object, return target value, otherwise, return `null`.
|
||||
|
||||
```js
|
||||
const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, obj)
|
||||
const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x] ? xs[x] : null), obj);
|
||||
```
|
||||
|
||||
```js
|
||||
let index = 2;
|
||||
let index = 2;
|
||||
const data = {
|
||||
foo: {
|
||||
foz: [1, 2, 3],
|
||||
|
||||
3053
test/_30s.js
3053
test/_30s.js
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user