@meve/ui
Version:
Argon design system components library
159 lines (144 loc) • 3.88 kB
JavaScript
export var isString = function isString(val) {
return typeof val === 'string';
};
export var toNumber = function toNumber(val) {
if (val == null) return 0;
if (isString(val)) {
val = parseFloat(val);
val = Number.isNaN(val) ? 0 : val;
return val;
}
if (isBoolean(val)) return Number(val);
return val;
};
export var isBoolean = function isBoolean(val) {
return typeof val === 'boolean';
};
export var isFunction = function isFunction(val) {
return typeof val === 'function';
};
export var isNumber = function isNumber(val) {
return typeof val === 'number';
};
export var isPlainObject = function isPlainObject(val) {
return Object.prototype.toString.call(val) === '[object Object]';
};
export var isObject = function isObject(val) {
return typeof val === 'object' && val !== null;
};
export var isArray = function isArray(val) {
return Array.isArray(val);
};
export var isEmpty = function isEmpty(val) {
return val === undefined || val === null || val === '' || Array.isArray(val) && !val.length;
};
export var removeItem = function removeItem(arr, item) {
if (arr.length) {
var index = arr.indexOf(item);
if (index > -1) {
return arr.splice(index, 1);
}
}
};
export var toggleItem = function toggleItem(arr, item) {
arr.includes(item) ? removeItem(arr, item) : arr.push(item);
};
export var throttle = function throttle(method, mustRunDelay) {
if (mustRunDelay === void 0) {
mustRunDelay = 200;
}
var timer;
var start = 0;
return function loop() {
var _this = this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var now = Date.now();
var elapsed = now - start;
if (!start) {
start = now;
}
if (timer) {
window.clearTimeout(timer);
}
if (elapsed >= mustRunDelay) {
method.apply(this, args);
start = now;
} else {
timer = window.setTimeout(function () {
loop.apply(_this, args);
}, mustRunDelay - elapsed);
}
};
};
export var debounce = function debounce(method, delay) {
if (delay === void 0) {
delay = 200;
}
var timer;
return function () {
var _this2 = this;
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
timer && window.clearTimeout(timer);
timer = window.setTimeout(function () {
method.apply(_this2, args);
}, delay);
};
};
export function kebabCase(str) {
var reg = /([^-])([A-Z])/g;
return str.replace(reg, '$1-$2').replace(reg, '$1-$2').toLowerCase();
}
export var camelize = function camelize(s) {
return s.replace(/-(\w)/g, function (_, p) {
return p.toUpperCase();
});
};
export var bigCamelize = function bigCamelize(s) {
return camelize(s).replace(s.charAt(0), s.charAt(0).toUpperCase());
};
export var range = function range(num, left, right) {
if (num < left) {
return left;
}
if (num > right) {
return right;
}
return num;
};
export var delay = function delay(time) {
return new Promise(function (resolve) {
return setTimeout(resolve, time);
});
};
export var inBrowser = function inBrowser() {
return typeof window !== 'undefined';
};
export var createCache = function createCache(max) {
var cache = [];
return {
cache: cache,
has: function has(key) {
return this.cache.includes(key);
},
add: function add(key) {
if (this.has(key)) {
return;
}
this.cache.length === max && cache.shift();
this.cache.push(key);
},
remove: function remove(key) {
this.has(key) && removeItem(this.cache, key);
},
clear: function clear() {
this.cache.length = 0;
}
};
};
export var uniq = function uniq(arr) {
return [].concat(new Set(arr));
};