UNPKG

@opensig/opendesign

Version:

120 lines (119 loc) 2.83 kB
const opt = Object.prototype.toString; function isUndefined(val) { return val === void 0; } function isNull(val) { return opt.call(val) === "[object Null]"; } function isNil(val) { return isUndefined(val) || isNull(val); } function isBoolean(val) { return opt.call(val) === "[object Boolean]"; } function isString(val) { return opt.call(val) === "[object String]"; } function isNumber(val) { return opt.call(val) === "[object Number]" && !Number.isNaN(val); } function isNumeric(val, float = true) { if (isNil(val)) { return false; } if (typeof val === "number") { return true; } const reg = float ? /^-?\d+(?:\.\d+)?$/ : /^\d+$/; return reg.test(val.toString()); } function isFunction(val) { return typeof val === "function"; } function isArray(val) { return Array.isArray(val); } function isEmptyArray(val) { return isArray(val) && val.length === 0; } function isArrayEqual(arr1, arr2, order = false) { if (!isArray(arr1) || !isArray(arr2)) { return false; } const len = arr1.length; if (len !== arr2.length) { return false; } if (order) { for (let i = 0; i < len; i++) { if (arr1[i] !== arr2[i]) { return false; } } } else { const arr2Set = new Set(arr2); for (let i = 0; i < len; i++) { if (!arr2Set.has(arr1[i])) { return false; } } } return true; } function isEmptyObject(val) { return opt.call(val) === "[object Object]" && Object.keys(val).length === 0; } function isValidDate(val) { return val instanceof Date && !Number.isNaN(val.valueOf()); } function isObject(val) { return val !== null && typeof val === "object"; } function isPlainObject(val) { return opt.call(val) === "[object Object]"; } const isPromise = (val) => { return isObject(val) && isFunction(val.then) && isFunction(val.catch); }; const isClient = typeof window !== "undefined"; const isTouchDevice = isClient ? "ontouchstart" in document.documentElement : false; const isHoverDevice = isClient ? window.matchMedia("(hover: hover)").matches : false; const isIosDevice = isClient ? /iphone|ipad|ipod/.test(window.navigator.userAgent.toLowerCase()) : false; function isWindow(val) { return val === window; } function isCurrentPageLink(link) { if (link.startsWith("#")) { return true; } try { const targetUrl = new URL(link, window.location.href); return targetUrl.origin + targetUrl.pathname === window.location.origin + window.location.pathname; } catch { return false; } } export { isArray, isArrayEqual, isBoolean, isClient, isCurrentPageLink, isEmptyArray, isEmptyObject, isFunction, isHoverDevice, isIosDevice, isNil, isNull, isNumber, isNumeric, isObject, isPlainObject, isPromise, isString, isTouchDevice, isUndefined, isValidDate, isWindow };