UNPKG

shineout

Version:

Shein 前端组件库

111 lines (103 loc) 3.41 kB
import React from 'react'; import { curry } from './func'; var nameIs = curry(function (name, val) { if (typeof val === 'object') { return val && val.constructor && val.constructor.name === name; } return false; }); // eslint-disable-next-line export var isArray = Array.isArray; export var isUndef = function isUndef(v) { return v == null; }; export var isNotUndef = function isNotUndef(v) { return v != null; }; // eslint-disable-next-line export var isNan = function isNan(a) { return a !== a; }; export var isFunc = function isFunc(f) { return typeof f === 'function'; }; export var isNumber = function isNumber(n) { return typeof n === 'number'; }; export var isObject = function isObject(val) { return !!val && typeof val === 'object' && !isArray(val); }; export var isString = function isString(s) { return typeof s === 'string'; }; export var isDate = function isDate(val) { return val instanceof Date; }; export var isError = function isError(val) { return val instanceof Error; }; export var isRegexp = function isRegexp(val) { return val instanceof RegExp; }; export var isMap = nameIs('Map'); export var isSet = nameIs('Set'); export var isSymbol = nameIs('Symbol'); export var isPromise = function isPromise(p) { return p && (nameIs('Promise', p) || isFunc(p.then)); }; export var isValidKey = function isValidKey(key, object) { return key in object; }; export var isInPath = function isInPath(val, path) { if (val === path) return true; return path.indexOf(val + "[") === 0 || path.indexOf(val + ".") === 0; }; export var isEmpty = function isEmpty(val) { if (val == null) return true; if (isNan(val)) return true; if (val.length !== undefined) return val.length === 0; if (val instanceof Date) return false; if (typeof val === 'object') return Object.keys(val).length === 0; return false; }; export var isBuffer = function isBuffer(val) { if (val && typeof val === 'object' && val.constructor && typeof val.constructor.isBuffer === 'function') { return val.constructor.isBuffer(val); } return false; }; export var isMergeable = function isMergeable(val) { if (!isObject(val)) return false; var fns = [isDate, isError, isRegexp, isMap, isSet, isBuffer]; for (var i = 0; i < fns.length; i++) { if (fns[i](val)) return false; } return true; }; export var isOne = function isOne(val) { if (val === 1) return true; return typeof val === 'string' && val.indexOf('.') !== -1 && parseFloat(val) === 1; }; // /\d{1,3}%$/ export var isPercent = function isPercent(n) { return typeof n === 'string' && /\d{1,3}%$/.test(n); }; export var isInseparable = function isInseparable(val) { return Object(val) !== val || isFunc(val) || isDate(val) || isError(val) || isSet(val) || isMap(val) || isRegexp(val); }; export var isLink = function isLink(el) { if (typeof el === 'object') { if (!React.isValidElement(el)) return false; if (!el.type) return false; if (el.type === 'a') return true; if (el.props && el.props.to) return true; } return false; }; export var isEnterPress = function isEnterPress(e) { if (typeof e !== 'object') return false; return e.keyCode === 13; }; export var isMacOS = function isMacOS() { return /macintosh|mac os x/i.test(navigator.userAgent); }; export var isFirefox = function isFirefox() { return navigator.userAgent.toLowerCase().indexOf('firefox') > -1; };