UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

72 lines (64 loc) 2.58 kB
import _typeof from "@babel/runtime/helpers/esm/typeof"; import React, { useMemo } from 'react'; // 获取数组 export function getArray(val) { if (!val) return []; return Array.isArray(val) ? val : [val]; } // 判断是否符合options格式 export var isOptions = function isOptions(key) { return ['label', 'value'].includes(key); }; // 查询搜索, 都转成小写用于匹配 export var onStringSearch = function onStringSearch() { var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return str.toLowerCase().includes(key.toLowerCase()); }; // 将options和children都转成options export function getOptions(children) { var array = getArray(children); return array.map(function (item) { if (Object.keys(item).every(isOptions)) return item; return { label: item.props.children, value: item.props.value, disabled: !!item.props.disabled }; }); } // 检查是否存在内容 export function getIsHas(val) { // 检查是否数字类型, 是否布尔类型 var flag = !!val || typeof val === 'number' || typeof val === 'boolean'; // 检查空对象和空数组 if (!!val && _typeof(val) === 'object') { var _Object$keys; flag = Array.isArray(val) ? !!val.length : !!((_Object$keys = Object.keys(val)) !== null && _Object$keys !== void 0 && _Object$keys.length); } return flag; } // 检查是否类组件 export function isClassComponent(component) { return typeof component === 'function' && function () { var proto = Object.getPrototypeOf(component); return proto.prototype && proto.prototype.isReactComponent; }(); } // 检查是否自定义组件 export function isExoticComponent(component) { return _typeof(component) === 'object' && _typeof(component.$$typeof) === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description); } // 检查是否React组件 export function isReactComponent(component) { return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component); } export var render = function render(Comp) { var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp; }; export var useSearch = function useSearch(showSearch, renderOptions) { return useMemo(function () { return showSearch || renderOptions.length > 8; }, [renderOptions.length, showSearch]); };