UNPKG

@schema-render/core-react

Version:

Through a set of simple JSON Schema, efficiently build a set of forms.

59 lines (58 loc) 1.7 kB
import { isString } from "./checking"; import classNames from "./classnames"; import logger from "./logger"; // 生成 Unique ID export function generateUID() { return `${Date.now()}${Math.random().toString().substring(2, 5)}`.replace(/^(\d{4})(\d{4})(\d{4})(\d{4})/g, '$1-$2-$3-$4'); } /** * 通过正则字符串创建正则表达式对象 */ export function createRegExpByString(regexp) { if (!isString(regexp)) { return null; } try { return new RegExp(regexp); } catch (e) { logger.warn(e); } return null; } /** * 编译模板字符串,支持 ${} 语法的模板 */ export function templateCompiled(tpl, data = {}) { if (!tpl) { return ''; } return tpl.replace(/\$\{((\s|.)+?)?\}/g, function(...args) { var _args_; const field = (_args_ = args[1]) === null || _args_ === void 0 ? void 0 : _args_.trim(); if (!field) { return ''; } const replacement = data[field]; return replacement ?? ''; }); } /** * 创建带前缀的类名 * @param prefix 类名前缀 * @param args classNames 库参数 * @returns 带前缀的类名 */ export function classNamesWithPrefix(prefix, ...args) { if (!args.length) { return ''; } const classString = classNames(...args).trim(); if (!classString) { return ''; } const result = classString.split(' ').map((name)=>`${prefix}-${name}`); return result.join(' '); } export function hasOwnProperty(obj, property) { return Object.prototype.hasOwnProperty.call(obj, property); } export function sleep(time = 1000) { return new Promise((resolve)=>setTimeout(resolve, time)); }