filestack-adaptive
Version:
HTML5 picture elements powered by Filestack
88 lines (86 loc) • 8.58 kB
JavaScript
var utils = {
/**
* Creates a new list out of the two supplied by creating each possible pair from the lists.
* It works similar to https://ramdajs.com/docs/#xprod
* @param arr - An array to be processed
*/
cartesian: function (arr) {
return arr.reduce(function (a, b) {
return a.map(function (x) {
return b.map(function (y) {
return x.concat([y]);
});
}).reduce(function (a, b) { return a.concat(b); }, []);
}, [[]]);
},
/**
* Split an array into many arrays with a provided chunk factor
* @param array - An original array to be splitted
* @param chunk - A number of elements which new arrays will contain
*/
arrToChunks: function (array, chunk) {
if (chunk === void 0) { chunk = 1; }
var tempArray = [];
for (var i = 0; i < array.length; i += chunk) {
tempArray.push(array.slice(i, i + chunk));
}
return tempArray;
},
/**
* Remove falsey values from object.
* @param obj - An object to be filtered
*/
removeEmpty: function (obj) {
var newObj = {};
for (var key in obj) {
if (obj.hasOwnProperty(key) && obj[key]) {
newObj[key] = obj[key];
}
}
return newObj;
},
/**
* Utility to get numbers from ambiguous types.
* @param value - A value to be checked
*/
getNumber: function (value) {
if (typeof value === 'number') {
return value;
}
else {
return parseInt(value, 10);
}
},
/**
* Utility to get unit of width or resolution
* @param value - A value from which a unit will be extracted
*/
getUnit: function (value) {
return value.replace ? value.replace(/\d*(\D+)$/gi, '$1') : 'px';
},
/**
* Flat elements in array to provided depthness
* @param arr - The array to flatten
* @param depth - A maximum recursion depth
*/
flat: function (arr, depth) {
var len = arr.length >>> 0;
var flattened = [];
var i = 0;
while (i < len) {
if (i in arr) {
var el = arr[i];
if (Array.isArray(el) && depth > 0) {
flattened = flattened.concat(utils.flat(el, depth - 1));
}
else {
flattened.push(el);
}
}
i++;
}
return flattened;
},
};
export default utils;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFJLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN6RDtxQkFBTTtvQkFDTCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRixDQUFDO0FBRUYsZUFBZSxLQUFLLENBQUMiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB1dGlscyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbGlzdCBvdXQgb2YgdGhlIHR3byBzdXBwbGllZCBieSBjcmVhdGluZyBlYWNoIHBvc3NpYmxlIHBhaXIgZnJvbSB0aGUgbGlzdHMuXG4gICAqIEl0IHdvcmtzIHNpbWlsYXIgdG8gaHR0cHM6Ly9yYW1kYWpzLmNvbS9kb2NzLyN4cHJvZFxuICAgKiBAcGFyYW0gYXJyIC0gQW4gYXJyYXkgdG8gYmUgcHJvY2Vzc2VkXG4gICAqL1xuICBjYXJ0ZXNpYW46IChhcnI6IGFueVtdKSA9PiB7XG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKGE6IGFueSwgYjogYW55KSB7XG4gICAgICByZXR1cm4gYS5tYXAoZnVuY3Rpb24gKHg6IGFueSkge1xuICAgICAgICByZXR1cm4gYi5tYXAoZnVuY3Rpb24gKHk6IGFueSkge1xuICAgICAgICAgIHJldHVybiB4LmNvbmNhdChbeV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoYTogYW55LCBiOiBhbnkpIHsgcmV0dXJuIGEuY29uY2F0KGIpOyB9LCBbXSk7XG4gICAgfSwgW1tdXSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNwbGl0IGFuIGFycmF5IGludG8gbWFueSBhcnJheXMgd2l0aCBhIHByb3ZpZGVkIGNodW5rIGZhY3RvclxuICAgKiBAcGFyYW0gYXJyYXkgLSBBbiBvcmlnaW5hbCBhcnJheSB0byBiZSBzcGxpdHRlZFxuICAgKiBAcGFyYW0gY2h1bmsgLSBBIG51bWJlciBvZiBlbGVtZW50cyB3aGljaCBuZXcgYXJyYXlzIHdpbGwgY29udGFpblxuICAgKi9cbiAgYXJyVG9DaHVua3M6IChhcnJheTogYW55W10sIGNodW5rID0gMSkgPT4ge1xuICAgIGxldCB0ZW1wQXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSBjaHVuaykge1xuICAgICAgdGVtcEFycmF5LnB1c2goYXJyYXkuc2xpY2UoaSxpICsgY2h1bmspKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBBcnJheTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlIGZhbHNleSB2YWx1ZXMgZnJvbSBvYmplY3QuXG4gICAqIEBwYXJhbSBvYmogLSBBbiBvYmplY3QgdG8gYmUgZmlsdGVyZWRcbiAgICovXG4gIHJlbW92ZUVtcHR5OiAob2JqOiBhbnkpID0+IHtcbiAgICBjb25zdCBuZXdPYmo6IGFueSA9IHt9O1xuICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiBvYmpba2V5XSkge1xuICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IHRvIGdldCBudW1iZXJzIGZyb20gYW1iaWd1b3VzIHR5cGVzLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBIHZhbHVlIHRvIGJlIGNoZWNrZWRcbiAgICovXG4gIGdldE51bWJlcjogKHZhbHVlOiBhbnkpOiBudW1iZXIgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXRpbGl0eSB0byBnZXQgdW5pdCBvZiB3aWR0aCBvciByZXNvbHV0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgdmFsdWUgZnJvbSB3aGljaCBhIHVuaXQgd2lsbCBiZSBleHRyYWN0ZWRcbiAgICovXG4gIGdldFVuaXQ6ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSA/IHZhbHVlLnJlcGxhY2UoL1xcZCooXFxEKykkL2dpLCAnJDEnKSA6ICdweCc7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZsYXQgZWxlbWVudHMgaW4gYXJyYXkgdG8gcHJvdmlkZWQgZGVwdGhuZXNzXG4gICAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgdG8gZmxhdHRlblxuICAgKiBAcGFyYW0gZGVwdGggLSBBIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoXG4gICAqL1xuICBmbGF0OiAoYXJyOiBhbnlbXSwgZGVwdGg6IG51bWJlcik6IFtdID0+IHtcbiAgICBsZXQgbGVuID0gYXJyLmxlbmd0aCA+Pj4gMDtcbiAgICBsZXQgZmxhdHRlbmVkOiBhbnkgPSBbXTtcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGlmIChpIGluIGFycikge1xuICAgICAgICBsZXQgZWwgPSBhcnJbaV07XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsKSAmJiBkZXB0aCA+IDApIHtcbiAgICAgICAgICBmbGF0dGVuZWQgPSBmbGF0dGVuZWQuY29uY2F0KHV0aWxzLmZsYXQoZWwsIGRlcHRoIC0gMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZsYXR0ZW5lZC5wdXNoKGVsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gZmxhdHRlbmVkO1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=