@innoways/utils 8.0.16 → 8.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Change Log
2
2
 
3
+ ## 8.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - 39c994c: update 8.0.18
8
+ - country/state/city field added custom url config version 8.0.18
9
+
10
+ ## 8.0.17
11
+
12
+ ### Patch Changes
13
+
14
+ - update to 8.0.17
15
+
3
16
  ## 8.0.16
4
17
 
5
18
  ### Patch Changes
@@ -104,7 +104,7 @@ declare function upgradeTips(oldApiName: string, newApiName: string): void;
104
104
  // 转换数组
105
105
  declare function toArray(param: string | Array<string>): Array<string>;
106
106
  // 处理容器宽度
107
- declare const handleMargin: (style: CSSProperties) => void;
107
+ declare const handleMargin: (style: CSSProperties, breakPoint: number, screenSize: number) => void;
108
108
  /**
109
109
  * 根据uiSchema,获取当前schem相对的主题和组件类型
110
110
  * @param uiSchema
@@ -515,7 +515,7 @@ type UiSchema = {
515
515
  mode: "add" | "normal" | "collapse" | "tuple" | "fixed";
516
516
  theme: Theme;
517
517
  type: string;
518
- containerStyle?: ContainerStyle;
518
+ containerStyle?: ContainerStyle & Record<string, any>;
519
519
  properties: Properties;
520
520
  order: Array<string | number>;
521
521
  title?: TitleUi;
@@ -528,6 +528,7 @@ type UiSchema = {
528
528
  fetchData?: boolean;
529
529
  jsonkey?: string;
530
530
  apiJson?: string;
531
+ formValueApiURLDomain?: string;
531
532
  [propName: string]: unknown;
532
533
  };
533
534
  [propName: string]: unknown;
@@ -597,15 +598,35 @@ type FetchApi = (args: {
597
598
  }>;
598
599
  url: string;
599
600
  method: "GET" | "POST";
601
+ headers?: Record<string, string>;
600
602
  }) => Promise<unknown>;
601
603
  type GetApi<R> = (args: {
602
604
  params: Map;
603
605
  url: string;
606
+ headers?: Record<string, string>;
604
607
  }) => Promise<R>;
605
608
  type PostApi<R> = (args: {
606
609
  params: Map;
607
610
  url: string;
611
+ headers?: Record<string, string>;
608
612
  }) => Promise<R>;
613
+ type formValuePayloadType = {
614
+ form_id: string;
615
+ version_id: string;
616
+ extension: {
617
+ [key: string]: any;
618
+ };
619
+ form_data: {
620
+ [key: string]: any;
621
+ };
622
+ };
623
+ type getFormValueByType = {
624
+ id?: string;
625
+ form_id?: string;
626
+ extension?: {
627
+ [key: string]: any;
628
+ };
629
+ };
609
630
  declare const fetchFn: FetchApi;
610
631
  declare const fetchFnJsonKey: ({ config, dataHandler, dataSetter, doFinally }: {
611
632
  config: any;
@@ -613,4 +634,14 @@ declare const fetchFnJsonKey: ({ config, dataHandler, dataSetter, doFinally }: {
613
634
  dataSetter?: Function | null | undefined;
614
635
  doFinally?: Function | null | undefined;
615
636
  }) => Promise<void>;
616
- export { isEqual, get, generateReg, generateArrayKeyReg, typeCheck, isEmpty, setDeepProp, deleteDeepProp, judgeAndRegister, deepClone, injectVcontrol, parseHrefParam, randomString, number2Chinese, upgradeTips, toArray, handleMargin, getThemeAndType, isValidHttpUrl, removeSpaceAndmakeStringCamelCase, Map, ClosestEdge, binaryData2Blob, getImgEl, ImgDimension, ImgSize, checkImg, parseUnitedSchema, combine, FieldAtomType, ContainerStyle, Description, TitlePlacement, Theme, TitleUi, OnChange, UiSchema, DataSchema, UnitedSchema, TypePathItem, TypePath, Get, GetKey, GetTypeKey, State, SetErrType, SetErrsType, Action$0 as Action, parseFlow, Operator, Condintion, SetEffect, ControlFlowAction, Flow, fetchFn, fetchFnJsonKey, FetchApi, GetApi, PostApi };
637
+ declare const fetchFormValue: (config: {
638
+ url: string;
639
+ token: string;
640
+ getFormValueBy: getFormValueByType;
641
+ }) => Promise<any>;
642
+ declare const addFormValue: (config: {
643
+ url: string;
644
+ token: string;
645
+ formValuePayload: formValuePayloadType;
646
+ }) => Promise<any>;
647
+ export { isEqual, get, generateReg, generateArrayKeyReg, typeCheck, isEmpty, setDeepProp, deleteDeepProp, judgeAndRegister, deepClone, injectVcontrol, parseHrefParam, randomString, number2Chinese, upgradeTips, toArray, handleMargin, getThemeAndType, isValidHttpUrl, removeSpaceAndmakeStringCamelCase, Map, ClosestEdge, binaryData2Blob, getImgEl, ImgDimension, ImgSize, checkImg, parseUnitedSchema, combine, FieldAtomType, ContainerStyle, Description, TitlePlacement, Theme, TitleUi, OnChange, UiSchema, DataSchema, UnitedSchema, TypePathItem, TypePath, Get, GetKey, GetTypeKey, State, SetErrType, SetErrsType, Action$0 as Action, parseFlow, Operator, Condintion, SetEffect, ControlFlowAction, Flow, fetchFn, fetchFnJsonKey, fetchFormValue, addFormValue, FetchApi, GetApi, PostApi, formValuePayloadType, getFormValueByType };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/common/index.ts","../../src/image.ts","../../src/schemaHandle/parse.ts","../../src/schemaHandle/combine.ts","../../src/flowHandle/index.ts","../../src/fetch/index.ts","../../src/index.ts"],"sourcesContent":["/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:13\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-07-22 13:46:08\n */\nimport { CSSProperties } from 'react'\nimport type { Map } from './type'\n\n/**\n * 生成fieldkey的正则\n * 根据a.0.b 返回/a.(\\d+|$container).b/正则\n * @param arr <Array> 需要生成正则的数组\n * @returns 返回正则\n */\nexport const generateReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index, arr) => {\n if (Number.isNaN(parseInt(cur))) {\n return `${prev}${index !== 0 ? '\\\\.' : ''}${arr[index].replace(\n /\\$/g,\n '\\\\$'\n )}`\n } else {\n return `${index !== 0 ? `${prev}\\\\.` : ''}(${cur}|\\\\$container)`\n }\n }, '')\n return new RegExp(`^${regStr}$`, 'ig')\n}\n\n/**\n * 用于删除、切换数组排序的arraykey\n * @param arr\n * @returns\n */\nexport const generateArrayKeyReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index) => {\n if (index === arr.length - 1) {\n return `${prev})\\\\.(\\\\d)+`\n }\n return `${index !== 0 ? `${prev}\\\\.` : ''}${cur}`\n })\n return new RegExp(`^(${regStr}(\\\\..+)+`, 'ig')\n}\n\n/**\n * 基本数据类型检测\n * @param {unknown} checkVar 待检测的变量\n * @returns {string} 基本数据类型:Object | Array | String | Number | Boolean | Null | Undefined\n */\nexport function typeCheck(checkVar: any): string {\n const typeClass = Object.prototype.toString.call(checkVar)\n\n return typeClass.split(' ')[1].split(']')[0]\n}\n\n/**\n * 判断变量是否为空\n * @param checkVar\n */\nexport function isEmpty(checkVar: any): boolean {\n let empty = false\n const varType: string = typeCheck(checkVar)\n\n switch (varType) {\n case 'Number':\n case 'Boolean':\n empty = false\n break\n case 'Null':\n case 'Undefined':\n empty = true\n break\n case 'Array':\n case 'String':\n empty = checkVar.length === 0\n break\n default: {\n const keys = Object.keys(checkVar)\n empty = keys.length === 0\n }\n }\n\n return empty\n}\n\n/**\n * 设置data.a.b.c = value\n * 若data没有a.b 则依次赋值空对象,最后再将a.b.c设为value\n * @param {string} keys a.b.c\n * @param {object} data data.a.b.c\n * @param {unknown} value data.a.b.c = value\n * @param {object} typeMap 确定a.0.b.1中的0和1的父级应该是对象还是数组形式\n * @param parentKey\n */\nexport const setDeepProp = (\n keys: string[],\n data: Map,\n value: unknown,\n typeMap?: Map,\n parentKey?: Array<string>\n): void => {\n if (keys.length === 0) {\n return\n }\n // 取出keys的第一个元素作为当前待填充的key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n if (keys.length > 0) {\n const hasKey = Object.keys(data).includes(curKey)\n if (!hasKey) {\n if (typeMap) {\n const typeKey = Object.keys(typeMap).find((item) => {\n return generateReg(\n parentKey ? parentKey.concat(curKey) : [curKey]\n ).test(item)\n })\n // 根据typeMap判断当前是数组还是对象,兜底逻辑为对象\n if (typeKey) {\n switch (typeMap[typeKey].type) {\n case 'array':\n data[curKey] = []\n break\n case 'object':\n data[curKey] = {}\n break\n }\n } else {\n // TODO @jiangxiaowei 开启需要render函数支持 暂时不支持fieldkey包含.\n // data[curKey] = {}\n }\n } else {\n // typeMap未定义当前curKey时,默认认为是对象\n data[curKey] = {}\n }\n }\n setDeepProp(\n keys,\n data[curKey],\n value,\n typeMap,\n (parentKey || []).concat(curKey)\n )\n } else {\n data[curKey] = value\n }\n}\n\n/**\n * 删除data.a.b.c\n * 若data没有a.b.c,则不进行任何操作\n * @param {string} keys [a,b,c]\n * @param {object} data 需要删除的对象\n */\nexport const deleteDeepProp = (keys: string[], data: Map): void => {\n if (keys.length === 0) return\n // 当前key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n const hasKey = Object.keys(data).includes(curKey)\n if (keys.length > 0) {\n if (!hasKey) {\n return\n }\n deleteDeepProp(keys, data[curKey])\n } else {\n if (Array.isArray(data) && !Number.isNaN(parseInt(curKey))) {\n data.splice(parseInt(curKey), 1)\n } else {\n delete data[curKey]\n }\n }\n}\n\n/**\n * 判断对象是否有某一属性,如没有,则根据valueType为其创建\n * 并返回最后一个key的校验生成后的value\n * @param {Map} source 源对象\n * @param {'array' | 'object'} valueType 创建的类型\n * @param {array} keys 对象的key值,支持...以拓展深层对象的创建\n */\nexport const judgeAndRegister = (\n source: Map,\n valueType: 'array' | 'object',\n ...keys: any[]\n): Map => {\n let currSource = source\n for (const key of keys) {\n if (!Object.hasOwnProperty.call(currSource, key)) {\n currSource[key] = valueType === 'array' ? [] : {}\n }\n currSource = currSource[key]\n }\n return currSource\n}\n\n/**\n * 允许循环引用的深拷贝\n * @param target\n * @param map\n */\nexport function deepClone(target: any, map = new WeakMap()): any {\n if (map.get(target) || target === null || target === undefined) return target\n\n // 针对Date和RegExp等特殊引用类型,直接执行构造函数进行克隆\n const constructor = target.constructor\n if (/^(Date|RegExp)/.test(constructor.name)) {\n return new constructor(target)\n }\n\n if (typeof target === 'object') {\n // 标记当前target已被处理过,避免递归过程中出现循环引用导致栈溢出的文日\n map.set(target, true)\n const res: any = Array.isArray(target) ? [] : {}\n for (const i in target) {\n if (Object.hasOwnProperty.call(target, i)) {\n res[i] = deepClone(target[i], map)\n }\n }\n return res\n } else {\n return target\n }\n}\n\n/**\n * 该方法用于快速向check的shcmea中注入vcontol。方便过滤已经设置的表单\n * @param obj 待注入vontrol的uiSchema对象\n */\nexport function injectVcontrol(obj: Record<string, unknown>): void {\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n switch (typeCheck(i)) {\n case 'Array':\n // 数组的vcontrol统一设置在顶层\n break\n case 'Object':\n injectVcontrol(obj[i] as Record<string, unknown>)\n break\n default: {\n // 只有设置了fieldKey的才需要设置vcontrol和vcontrolDefault\n const fieldKey = obj.fieldKey\n if (fieldKey) {\n setDeepProp(\n ['ui', 'vcontrol'],\n obj,\n 'const {fieldKey,formData,get}=props;return formData.viewMode===\"configured\"?typeof get(fieldKey).data!==\\'number\\'? get(fieldKey).data:true:true'\n )\n }\n break\n }\n }\n }\n }\n}\n\n/**\n * 解析url中?后的参数,返回参数Map\n * @param url\n */\nexport function parseHrefParam(url: string | undefined): Map {\n url = url || window.location.href\n const parseUrl: string[] | null = /(.*)\\?(.*)/.exec(url)\n const res: Map = {}\n\n if (parseUrl && parseUrl[2]) {\n const paramsList = parseUrl[2].split('&')\n for (const str of paramsList) {\n const split = str.split('=')\n\n res[split[0]] = split[1] !== undefined ? split[1] : true\n }\n }\n\n return res\n}\n\nexport function randomString(length: number): string {\n const str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n let result = ''\n for (let i = length; i > 0; --i)\n result += str[Math.floor(Math.random() * str.length)]\n return result\n}\n\n/**\n * 将大于等于零的整数number转成中文汉字\n */\nconst numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']\nconst unitChar = ['', '十', '百', '千']\nconst millionUnitChar = ['', '万', '亿', '万亿', '亿亿']\n// 已万为处理段,该方法处理万以内的数字转成中文\nfunction range2Chinese(range: number): string {\n let numUnitChar = ''\n let tempStr = ''\n let unit = 0\n let isNeedZero = true\n while (range > 0) {\n const currentNum = range % 10\n if (currentNum === 0) {\n if (!isNeedZero) {\n isNeedZero = true\n tempStr = numChar[currentNum] + tempStr\n }\n } else {\n isNeedZero = false\n numUnitChar = numChar[currentNum]\n numUnitChar += unitChar[unit]\n tempStr = numUnitChar + tempStr\n }\n unit++\n range = Math.floor(range / 10)\n }\n return tempStr\n}\nexport function number2Chinese(num: number): string {\n let millionUnit = 0\n let tempStr = ''\n let resStr = ''\n let isNeedZero = false\n if (num === 0) {\n return numChar[0]\n }\n while (num > 0) {\n const range = num % 10000\n if (isNeedZero) {\n resStr = numChar[0] + resStr\n }\n tempStr = range2Chinese(range)\n tempStr += range !== 0 ? millionUnitChar[millionUnit] : millionUnitChar[0]\n resStr = tempStr + resStr\n isNeedZero = range < 1000 && range > 0\n num = Math.floor(num / 10000)\n millionUnit++\n }\n return resStr\n}\n\n// TODO 更新Read more文档\nexport function upgradeTips(oldApiName: string, newApiName: string): void {\n console.warn(\n `${oldApiName}: The current usage is about to discard after the next main version is upgraded, please use ${newApiName}! `\n )\n}\n\n// 转换数组\nexport function toArray(param: string | Array<string>): Array<string> {\n return Array.isArray(param) ? param : [param]\n}\n\n// 处理容器宽度\nexport const handleMargin = (style: CSSProperties): void => {\n const { margin, width } = style\n let marginRight = style.marginRight || '0px'\n let marginLeft = style.marginLeft || '0px'\n if (width) {\n if (margin) {\n if (typeof margin === 'string') {\n const marginArr = margin.trim().split(' ')\n if (marginArr.length === 1) {\n marginRight = margin\n marginLeft = margin\n }\n if (marginArr.length === 2 || marginArr.length === 3) {\n marginRight = marginArr[1]\n marginLeft = marginArr[1]\n }\n if (marginArr.length === 4) {\n marginRight = marginArr[1]\n marginLeft = marginArr[3]\n }\n }\n }\n marginRight = marginRight === '0' ? '0px' : marginRight\n marginLeft = marginLeft === '0' ? '0px' : marginLeft\n style.width = `calc(${style.width} - ${marginRight} - ${marginLeft})`\n }\n}\n\n/**\n * 根据uiSchema,获取当前schem相对的主题和组件类型\n * @param uiSchema\n * @returns\n */\nexport const getThemeAndType = (\n uiSchema: {\n type: string\n theme?: string\n } & Map\n): string => {\n const { type, theme } = uiSchema\n const [, newType] = type.split('::')\n // v0未区分容器和组件概念,需要做判断\n if (['root', 'object', 'array'].includes(newType || type)) {\n return newType || type\n } else {\n return newType ? type : `${theme}::${type}`\n }\n}\n\nexport function isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\nexport function removeSpaceAndmakeStringCamelCase(string: string) {\n const regex = /\\s+(\\w)?/gi\n const output = string.toLowerCase().replace(regex, function (match, letter) {\n return letter ? letter.toUpperCase() : ''\n })\n return output\n}\n","/**\n * 将二进制流数据转成base64格式的数据\n *\n * @param file\n */\nexport function binaryData2Blob(\n file: File\n): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.readAsDataURL(file)\n reader.onload = function () {\n resolve(this.result)\n }\n reader.onerror = function (err) {\n reject(err)\n }\n })\n}\n\n/**\n * 将base64g格式的图片地址转成img图片对象\n *\n * @param {string} imgBase64Url\n */\nexport function getImgEl(imgBase64Url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n resolve(img)\n }\n img.onerror = function (err) {\n reject(err)\n }\n img.src = imgBase64Url\n })\n}\n\n// 尺寸限制\nexport type ImgDimension = Partial<{\n width: number\n height: number\n minWidth: number\n minHeight: number\n maxWidth: number\n maxHeight: number\n widthDivisor: number\n heightDivisor: number\n widthHeightEqual: boolean\n}>\n// 大小限制\nexport type ImgSize = Partial<{\n max: number\n min: number\n}>\n\nconst isValidFileUploaded = (file: File, accept: string = '') => {\n if (accept) {\n const validExtensions = accept.split(',')\n const fileExtension = file.type.split('/')[1]\n const fileName = file.name.split('.')\n let fileNameExtension = ''\n if (fileName.length) {\n fileNameExtension = fileName[fileName.length - 1]\n }\n return (\n validExtensions.includes(`.${fileExtension}`) ||\n validExtensions.includes(`.${fileNameExtension}`)\n )\n }\n return true\n}\n\nexport async function checkImg({\n file,\n dimension,\n size,\n accept,\n errMsg,\n}: {\n file: File\n dimension?: ImgDimension\n size?: ImgSize\n accept?: string\n errMsg?: Partial<{\n dimension: string\n size: string\n type: string\n }>\n}): Promise<{ isOk: boolean; errors: Array<string> }> {\n let isOk: string | boolean = true\n const errors: Array<string> = []\n const {\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n widthDivisor,\n heightDivisor,\n widthHeightEqual,\n } = dimension || {}\n const { max, min } = size || {}\n // 尺寸校验\n try {\n const imgBase64Url = await binaryData2Blob(file)\n if (imgBase64Url) {\n const { naturalHeight, naturalWidth } = await getImgEl(\n imgBase64Url as string\n )\n\n let count = 0\n\n width && count++\n minWidth && count++\n maxWidth && count++\n widthDivisor && count++\n height && count++\n minHeight && count++\n maxHeight && count++\n heightDivisor && count++\n widthHeightEqual && count++\n\n if (width && width === naturalWidth) count--\n if (minWidth && minWidth <= naturalWidth) count--\n if (maxWidth && maxWidth >= naturalWidth) count--\n if (widthDivisor && naturalWidth % widthDivisor === 0) count--\n\n if (height && height === naturalHeight) count--\n if (minHeight && minHeight <= naturalHeight) count--\n if (maxHeight && maxHeight >= naturalHeight) count--\n if (heightDivisor && naturalHeight % heightDivisor === 0) count--\n\n if (widthHeightEqual === true && naturalHeight === naturalWidth) count--\n\n if (count !== 0) {\n errors.push(errMsg?.dimension || '图片尺寸校验未通过')\n isOk = false\n }\n }\n } catch (error) {\n console.error(error)\n }\n // 大小校验\n if (min && min >= file.size) {\n errors.push(errMsg?.size || '图片大小校验未通过')\n isOk = false\n } else if (max && max * 1024 <= file.size) {\n let size = file.size\n let message = ''\n if (max > 1024) {\n size = max / 1024\n message = `${size.toFixed(1)} mb`\n } else {\n message = `${max} kb`\n }\n errors.push(\n errMsg?.size ||\n `File size exceeds limit, the file must be smaller than ${message}`\n )\n isOk = false\n }\n if (!isValidFileUploaded(file, accept || '')) {\n errors.push(errMsg?.type || 'File type is not supported')\n isOk = false\n }\n return { isOk, errors }\n}\n","/**\n * 联合Schema解析函数\n */\nimport { typeCheck, setDeepProp } from '../common'\nimport { UiSchema, UnitedSchema, DataSchema, TypePath } from './types'\nimport _ from 'lodash'\nimport type { Map } from '../common/type'\n\n/**\n * 递归解析\n */\nfunction initParse({\n unitedSchema,\n parentType,\n idx,\n // 父级uiSchema\n parentUiSchema,\n // 父级dataSchema\n parentDataSchema,\n customProps,\n typePath,\n parentTypePath = '',\n index,\n}: {\n unitedSchema: UnitedSchema\n parentType?: 'array' | 'tuple' | 'object'\n idx?: string\n parentUiSchema: UiSchema\n parentDataSchema: DataSchema\n customProps: string[]\n typePath: Map\n parentTypePath?: string\n index?: string | number\n}) {\n // 当前uiSchema\n let curUiSchema = parentUiSchema\n // 当前dataSchema\n let curDataSchema = parentDataSchema\n // 当前的typePath的key\n let curTypePath = parentTypePath\n // 非第一次调用initParse\n if (idx) {\n // 设置typePath\n curTypePath = parentTypePath ? `${parentTypePath}.${idx}` : idx\n typePath[curTypePath] = {\n fatherKey: parentTypePath,\n title: unitedSchema.title || '',\n type: unitedSchema.type,\n unitedSchemaKey: `${\n typePath[parentTypePath]?.unitedSchemaKey\n ? `${typePath[parentTypePath]?.unitedSchemaKey}.`\n : ''\n }${parentType == 'object' ? 'schema' : 'items'}${\n index !== '$container' ? `.${index}` : ''\n }`,\n }\n } else {\n // 设置根元素的typePath\n if (unitedSchema.fieldKey) {\n typePath[unitedSchema.fieldKey] = {\n type: unitedSchema.type,\n unitedSchemaKey: '',\n fatherKey: '',\n }\n }\n // 根元素type默认为object\n curDataSchema.type = 'object'\n }\n // ui:开头的\n const uiReg = /^ui:/\n // 是否是uiSchema中的属性\n const isUiProp = (key: string): boolean => {\n // 需要丢到uiSchema中的属性\n const uiSchemaKeys = ['footer', 'theme', 'containerStyle', 'formMode', 'ui']\n return uiSchemaKeys.includes(key) || uiReg.test(key)\n }\n Object.entries(unitedSchema).map(([key, value]) => {\n // 设置uiSchema\n if (isUiProp(key)) {\n // 非第一次调用initParse\n if (idx) {\n const path = ['properties', idx]\n setDeepProp(path, parentUiSchema, {})\n curUiSchema = parentUiSchema.properties[idx] as UiSchema\n // 设置order\n const order = _.get(parentUiSchema, 'order', [] as string[])\n // 避免重复fieldKey\n if (!order.includes(idx)) {\n order.push(idx)\n }\n parentUiSchema.order = order\n }\n // 设置ui:开头的ui属性,ui:{}优先级更高\n if (uiReg.test(key)) {\n curUiSchema[key.slice(3)] =\n ((unitedSchema?.ui || {}) as Map)[key.slice(3)] || value\n } else if (key === 'ui') {\n // 设置ui:{}中的属性\n Object.entries(value).map(([key, value]) => {\n curUiSchema[key] = value\n })\n } else {\n curUiSchema[key] = value\n }\n } else {\n // 设置dataSchema\n // 非第一次调用initParse\n if (idx) {\n switch (parentType) {\n case 'object': {\n const path = ['properties', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = (\n parentDataSchema.properties as Record<string, DataSchema>\n )[idx]\n break\n }\n case 'array': {\n const path = ['items']\n setDeepProp(\n ['items'],\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = parentDataSchema.items as DataSchema\n break\n }\n case 'tuple': {\n const path = ['items', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {}),\n { items: { type: 'array' } }\n )\n curDataSchema = (parentDataSchema.items as DataSchema[])[\n Number(idx)\n ]\n break\n }\n default:\n break\n }\n }\n switch (key) {\n case 'requiredMsg':\n // 设置父级,只有对象才有\n if (parentType === 'object' && idx) {\n // 设置order\n const required = _.get(parentDataSchema, 'required', [] as string[])\n // 避免重复fieldKey\n if (!required.includes(idx)) {\n required.push(idx)\n }\n parentDataSchema.required = required\n setDeepProp(\n ['errorMessage', 'required', idx],\n parentDataSchema,\n value\n )\n }\n break\n // 错误信息配置\n case 'errMsg':\n curDataSchema.errorMessage = value\n break\n // 以下字段 items、 schema、fieldKey 不设置到dataSchema中\n case 'items':\n case 'schema':\n case 'fieldKey':\n break\n default:\n // 设置customProps\n if (/^\\$:/.test(key)) {\n customProps.push(key)\n }\n curDataSchema[key] = value\n break\n }\n }\n })\n\n // 当前表单嵌套类型 'schema'为object|'items'为array\n let type = 'object'\n if (unitedSchema.items) {\n type = 'array'\n }\n switch (type) {\n case 'object': {\n // 处理通用逻辑\n // 对schema处理(子表单处理,递归)\n unitedSchema.schema?.map((childUnitedSchema, i) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: childUnitedSchema.fieldKey,\n parentType: 'object',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n parentTypePath: curTypePath,\n customProps,\n typePath,\n index: i,\n })\n })\n break\n }\n case 'array': {\n // 处理通用逻辑\n // 对items处理(子表单处理,递归)\n const item = unitedSchema.items\n const type = typeCheck(item)\n // 普通数组\n if (type === 'Object') {\n initParse({\n unitedSchema: item as UnitedSchema,\n idx: '$container',\n parentType: 'array',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: '$container',\n })\n } else if (type === 'Array') {\n // 元祖\n item?.map((childUnitedSchema: UnitedSchema, i: number) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: String(i),\n parentType: 'tuple',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: i,\n })\n })\n }\n break\n }\n default:\n break\n }\n}\n\n/**\n * 解析联合Schema\n * @param unitedSchema\n */\nconst parseUnitedSchema = (\n unitedSchema: UnitedSchema\n): {\n uiSchema: UiSchema\n dataSchema: DataSchema\n typePath: TypePath\n customProps: string[]\n} => {\n const dataSchema = {} as DataSchema\n const uiSchema = {} as UiSchema\n // 用来存储每个表单项对应的type值,如果是嵌套格式,则解析为 { a: 'object', 'a.b': 'object', 'a.b.c': 'array' }\n const typePath = {}\n // $:的自定义属性,仅统计dataSchema的\n const customProps: string[] = []\n\n initParse({\n unitedSchema,\n parentUiSchema: uiSchema,\n parentDataSchema: dataSchema,\n customProps,\n typePath,\n })\n\n return {\n dataSchema,\n uiSchema,\n typePath,\n customProps: [...new Set(customProps)],\n }\n}\n\nexport { parseUnitedSchema }\n","import { UiSchema, DataSchema, UnitedSchema } from './types'\nimport { deepClone, isEmpty } from '../common'\nimport type { Map } from '../common/type'\n\ntype Options = Partial<{\n // 是否开启$fieldKey值转换为fieldKey(默认不开启,generator中viewport区域需要开启)\n $fieldKey: boolean\n}>\n\nconst needToHandledKeywords = [\n 'required',\n 'errorMessage',\n 'items',\n 'schema',\n 'properties',\n 'order',\n]\n\nconst needToSetToRootUi = ['theme']\n\n/**\n * 值拷贝\n * @param targetObj\n * @param rawObj\n * @param dataType\n */\nfunction valueClone({\n targetObj,\n rawObj,\n dataType,\n fromRoot,\n}: {\n targetObj: Map\n rawObj: Map\n dataType?: string\n fromRoot?: boolean\n}): void {\n for (const key in rawObj) {\n if (rawObj[key] === null || typeof rawObj[key] !== 'object') {\n if (fromRoot && key === 'theme') {\n //\n } else {\n targetObj[key] = rawObj[key]\n }\n } else if (\n !needToHandledKeywords.includes(key) &&\n !needToSetToRootUi.includes(key)\n ) {\n // 非特殊字段可使用深拷贝,比如title, containerStyle\n targetObj[key] = deepClone(rawObj[key])\n }\n }\n\n if (dataType && Object.hasOwnProperty.call(rawObj, 'errorMessage')) {\n targetObj.errMsg = deepClone(rawObj.errorMessage)\n if (targetObj.errMsg.required) {\n delete targetObj.errMsg.required\n if (Object.keys(targetObj.errMsg).length === 0) {\n delete targetObj.errMsg\n }\n }\n }\n}\n\n/**\n * 递归合并\n * @param dataSchema\n * @param uiSchema\n * @param schema\n * @param fromRoot\n */\nfunction recursionCombine({\n dataSchema,\n uiSchema,\n schema,\n fromRoot,\n options,\n}: {\n dataSchema: DataSchema\n uiSchema: UiSchema\n schema: Map\n fromRoot?: boolean\n options?: Options\n}) {\n // 先拷贝ui和data的值类型属性或非特殊对象类型属性,比如title, containerStyle\n valueClone({\n targetObj: schema,\n rawObj: dataSchema,\n dataType: dataSchema.type,\n })\n // uiSchema非空时进行拷贝\n if (!isEmpty(uiSchema)) {\n // 填充ui属性,用于存放uiSchema\n if (!Object.hasOwnProperty.call(schema, 'ui')) {\n schema.ui = {}\n }\n\n // 如果是根路径的,需要处理特殊字段\n if (fromRoot) {\n needToSetToRootUi.forEach((key) => {\n if (Object.hasOwnProperty.call(uiSchema, key)) {\n schema[key] = uiSchema[key]\n }\n })\n }\n\n valueClone({ targetObj: schema.ui, rawObj: uiSchema, fromRoot })\n\n if (isEmpty(schema.ui)) {\n delete schema.ui\n }\n }\n\n // 如果有order,则根据order填充联合schema\n if (Object.hasOwnProperty.call(uiSchema, 'order')) {\n // 子项需要填充到联合schema的哪个prop下\n // 当父节点类型为array时应为items,否则为schema\n const toSchemaProp = dataSchema.type === 'array' ? 'items' : 'schema'\n\n // 因为子项的错误信息在dataSchema中,此处需要进行处理\n const required = dataSchema.required,\n errorMessage = dataSchema.errorMessage,\n msgMap = {} as Map\n\n if (typeof errorMessage === 'object') {\n const requireMsg = errorMessage.required\n const errMsg =\n errorMessage[toSchemaProp === 'items' ? 'items' : 'properties']\n\n // 收集必填的错误提示\n if (required) {\n for (const fk of required) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n requiredMsg: requireMsg[fk],\n }\n }\n }\n\n // 收集校验的错误提示\n if (errMsg) {\n for (const fk in errMsg) {\n if (Object.hasOwnProperty.call(errMsg, fk)) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n // 注意errMsg[fk]可能为string或对象,因此需要深拷贝\n errMsg: deepClone(errMsg[fk]),\n }\n }\n }\n }\n }\n\n // 遍历order的fieldKey\n for (let fieldKey of uiSchema.order) {\n // 根据fieldKey获取子项的schema\n const subUiSchema = uiSchema.properties[fieldKey]\n // 初始化子项的dataSchema\n let subDataSchema: Array<Map> | Map = dataSchema\n\n // 根据dataSchema(父节点)中的type字段判断在联合schema中,子项以什么形式存在\n // array需读取dataSchema的items,object需读取properties\n if (fieldKey === '$container') {\n subDataSchema = subDataSchema.items\n } else if (dataSchema.type === 'array') {\n subDataSchema = subDataSchema.items[fieldKey]\n } else {\n subDataSchema = subDataSchema.properties[fieldKey]\n }\n\n // 初始化待填充的表单项\n const fieldItem = {} as Map\n // 开始递归\n recursionCombine({\n dataSchema: subDataSchema as DataSchema,\n uiSchema: subUiSchema as UiSchema,\n schema: fieldItem,\n options,\n })\n\n if (msgMap[fieldKey]) {\n Object.assign(fieldItem, msgMap[fieldKey])\n }\n\n // 将递归完成的fieldItem填充到父组件的prop中\n if (toSchemaProp === 'items' && !Array.isArray(dataSchema?.items)) {\n // 对于元组类型,items应为 {}\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = {}\n }\n\n schema[toSchemaProp] = fieldItem\n } else {\n // 其余类型应为数组\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = []\n }\n\n if (toSchemaProp === 'schema') {\n // 对于容器类型的子项,需要填充fieldKey\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (\n Object.prototype.hasOwnProperty.call(subDataSchema, '$fieldKey') &&\n options &&\n options['$fieldKey']\n ) {\n fieldKey = (subDataSchema as Map)['$fieldKey']\n delete fieldItem['$fieldKey']\n }\n fieldItem.fieldKey = fieldKey\n }\n\n schema[toSchemaProp].push(fieldItem)\n }\n }\n } else {\n // 如果没有order,但数据类型为array且dataSchema中有配置items的,将items拷贝至联合schema\n // fix: 时间选择器combine后属性丢失的问题\n if (dataSchema.type === 'array' && !isEmpty(dataSchema.items)) {\n schema.items = dataSchema.items\n }\n }\n}\n\n/**\n * 融合dataSchema和uiSchema为联合Schema\n */\nfunction combine(\n dataSchema: DataSchema,\n uiSchema: UiSchema,\n options?: Options\n): UnitedSchema {\n const unitedSchema = {}\n\n recursionCombine({\n dataSchema,\n uiSchema,\n schema: unitedSchema,\n fromRoot: true,\n options,\n })\n\n return unitedSchema\n}\n\nexport { combine }\n","/*\n * schema.flow 字段处理成联动语法\n * @Author: jiangxiaowei\n * @Date: 2022-07-12 15:13:44\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-23 23:49:26\n */\nimport stringify from 'js-stringify'\nimport type { Flow, ControlFlowAction } from './type'\n\nconst commonStr = 'const {get,set,merge,setDeepProp,changeKey}=props;'\n\nconst getFileKeyToString = (fieldKey: string) => {\n const [newFieldKey, type, property] = fieldKey.trim().split(' ')\n return property\n ? `get('${newFieldKey}').${type}?.${property}`\n : `get('${newFieldKey}').${type}`\n}\n\n// TODO else实现\n// TODO effect subAction实现\nconst parseControlFlow = (\n action: ControlFlowAction,\n flowStr: string\n): string => {\n // if的条件语句\n let condintionStr = ''\n // if判断成功,执行的语句\n let effectStr = ''\n action.condintion.map((condintion, index, condintions) => {\n if (!condintion.fieldKey1) return\n // 是否取反\n const non = condintion.operator.startsWith('-')\n // 去掉 - 之后的字符(例子:前 -includes 后:includes)\n let operator = non ? condintion.operator.slice(1) : condintion.operator\n if (['true', 'false'].includes(operator)) {\n operator = '==='\n }\n\n // 需要前面加.的操作符\n const isdotOperator = ['includes', 'in'].includes(operator)\n // change是特殊的判断\n const operatorStr =\n operator === 'change'\n ? `('${condintion.fieldKey1.trim().split(' ').shift()}'===changeKey)`\n : `(${getFileKeyToString(condintion.fieldKey1)}${\n isdotOperator ? '?.' : ''\n }${operator}${\n ['true', 'false'].includes(condintion.operator)\n ? condintion.operator\n : `${stringify(condintion.value2)}`\n })`\n condintionStr += `${operatorStr}${\n condintion.logicOperator && index != condintions.length - 1\n ? condintion.logicOperator\n : ''\n }`\n })\n action.effect.map((effect) => {\n // 转换set类型并过滤空的fieldKey\n if (effect.type === 'set' && effect.fieldKey) {\n const [fieldKey, subType, property] = effect.fieldKey.trim().split(' ')\n effectStr +=\n `set('${fieldKey}','${subType}',${\n property\n ? `(oldValue)=>{\n ${\n property == 'queryConfig.refreshId'\n ? 'let newRefreshId=oldValue?.queryConfig?.refreshId||0;newRefreshId++;'\n : ''\n }\n setDeepProp(${stringify(property.split('.'))},oldValue,${\n property === 'vcontrol'\n ? stringify(\n `const {get}=props;return ${\n effect.value ? condintionStr : `!(${condintionStr})`\n }`\n )\n : property == 'queryConfig.refreshId'\n ? 'newRefreshId'\n : stringify(effect.value)\n })\n }`\n : stringify(effect.value)\n }` + ');'\n }\n })\n\n if (condintionStr) {\n flowStr += `if(${condintionStr}){${effectStr}};`\n }\n return flowStr\n}\n\nexport const parseFlow = (flow: Flow): string => {\n let flowStr = ''\n //TODO trigger.event支持其他类型后,需对一期默认的globalChange兼容\n // 解析flow.actions\n flow.actions.map((action) => {\n switch (action.type) {\n case 'controlFlow':\n flowStr += parseControlFlow(action, flowStr)\n break\n default:\n break\n }\n })\n return commonStr + flowStr\n}\n","import { FetchApi, GetApi, PostApi } from './type'\nimport { message } from 'antd'\n\nconst request = async (url: string, config: RequestInit) => {\n if (!window.fetch) {\n throw '浏览器版本过低'\n }\n try {\n const res = await fetch(url, config)\n if (res.ok) {\n const data = await res.json()\n return data\n } else {\n console.error('请求失败')\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nconst get: GetApi<unknown> = ({ params, url }) => {\n const { search, origin, hash, pathname } = new URL(url)\n const searchParams = new URLSearchParams(search)\n Object.entries(params).map(([key, value]) => {\n searchParams.set(key, value)\n })\n const newSearchParams = searchParams.toString()\n return request(\n `${origin}${pathname}${\n newSearchParams ? `?${newSearchParams}` : ''\n }${hash}`,\n {\n method: 'GET',\n }\n )\n}\n\nconst post: PostApi<unknown> = ({ params, url }) => {\n return request(url, {\n method: 'POST',\n body: JSON.stringify(params),\n })\n}\n\nexport const fetchFn: FetchApi = ({ params: oldParams, url, method }) => {\n const params: Record<string, unknown> = {}\n oldParams.map(({ key, value }) => {\n params[key] = value\n })\n switch (method.toUpperCase()) {\n case 'GET':\n return get({ params, url })\n case 'POST':\n return post({ params, url })\n default:\n throw new Error('不支持改请求类型')\n }\n}\n\nexport const fetchFnJsonKey = async ({\n config,\n dataHandler = null,\n dataSetter = null,\n doFinally = null,\n}: {\n config: any\n dataHandler?: Function | null | undefined\n dataSetter?: Function | null | undefined\n doFinally?: Function | null | undefined\n}) => {\n let auth = config?.headers?.Authorization || ''\n if (localStorage.getItem('jwtToken')) {\n auth = `Bearer ${localStorage.getItem('jwtToken')}`\n }\n if (config?.token) {\n auth = `Bearer ${config?.token}`\n }\n const fetchConfig: RequestInit = {\n method: config.method,\n headers: {\n ...config?.headers,\n Authorization: auth,\n },\n }\n if (config?.body) {\n fetchConfig.body = config.body\n }\n await request(config.url, fetchConfig)\n .then((res: any) => {\n let data\n if (config.jsonkey) {\n const jsonKeyVals = config.jsonkey.split('.')\n if (jsonKeyVals.length === 1) {\n data = res?.[jsonKeyVals[0]]\n } else if (jsonKeyVals.length === 2) {\n data = res?.[jsonKeyVals[0]]?.[jsonKeyVals[1]]\n }\n } else {\n data = res\n }\n if (dataHandler) {\n dataHandler(\n (data || []).map((item: any) => ({\n label: item[config.labelKey],\n value: item[config.valueKey],\n }))\n )\n }\n if (dataSetter) {\n dataSetter(data)\n }\n })\n .catch((error) => {\n console.error('Error:', error)\n })\n .finally(() => {\n if (doFinally) {\n doFinally()\n }\n })\n}\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:24\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-24 16:33:13\n */\nimport _ from 'lodash'\nexport const isEqual = _.isEqual\nexport const get = _.get\nexport * from './common'\nexport * from './common/type'\nexport * from './image'\nexport * from './schemaHandle/parse'\nexport * from './schemaHandle/combine'\nexport * from './schemaHandle/types'\nexport * from './type'\nexport * from './flowHandle'\nexport * from './flowHandle/type'\nexport * from './fetch'\nexport * from './fetch/type'\n"],"names":["_typeof","_","stringify","get"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/common/index.ts","../../src/image.ts","../../src/schemaHandle/parse.ts","../../src/schemaHandle/combine.ts","../../src/flowHandle/index.ts","../../src/fetch/index.ts","../../src/index.ts"],"sourcesContent":["/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:13\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-07-22 13:46:08\n */\nimport { CSSProperties } from 'react'\nimport type { Map } from './type'\n\n/**\n * 生成fieldkey的正则\n * 根据a.0.b 返回/a.(\\d+|$container).b/正则\n * @param arr <Array> 需要生成正则的数组\n * @returns 返回正则\n */\nexport const generateReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index, arr) => {\n if (Number.isNaN(parseInt(cur))) {\n return `${prev}${index !== 0 ? '\\\\.' : ''}${arr[index].replace(\n /\\$/g,\n '\\\\$'\n )}`\n } else {\n return `${index !== 0 ? `${prev}\\\\.` : ''}(${cur}|\\\\$container)`\n }\n }, '')\n return new RegExp(`^${regStr}$`, 'ig')\n}\n\n/**\n * 用于删除、切换数组排序的arraykey\n * @param arr\n * @returns\n */\nexport const generateArrayKeyReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index) => {\n if (index === arr.length - 1) {\n return `${prev})\\\\.(\\\\d)+`\n }\n return `${index !== 0 ? `${prev}\\\\.` : ''}${cur}`\n })\n return new RegExp(`^(${regStr}(\\\\..+)+`, 'ig')\n}\n\n/**\n * 基本数据类型检测\n * @param {unknown} checkVar 待检测的变量\n * @returns {string} 基本数据类型:Object | Array | String | Number | Boolean | Null | Undefined\n */\nexport function typeCheck(checkVar: any): string {\n const typeClass = Object.prototype.toString.call(checkVar)\n\n return typeClass.split(' ')[1].split(']')[0]\n}\n\n/**\n * 判断变量是否为空\n * @param checkVar\n */\nexport function isEmpty(checkVar: any): boolean {\n let empty = false\n const varType: string = typeCheck(checkVar)\n\n switch (varType) {\n case 'Number':\n case 'Boolean':\n empty = false\n break\n case 'Null':\n case 'Undefined':\n empty = true\n break\n case 'Array':\n case 'String':\n empty = checkVar.length === 0\n break\n default: {\n const keys = Object.keys(checkVar)\n empty = keys.length === 0\n }\n }\n\n return empty\n}\n\n/**\n * 设置data.a.b.c = value\n * 若data没有a.b 则依次赋值空对象,最后再将a.b.c设为value\n * @param {string} keys a.b.c\n * @param {object} data data.a.b.c\n * @param {unknown} value data.a.b.c = value\n * @param {object} typeMap 确定a.0.b.1中的0和1的父级应该是对象还是数组形式\n * @param parentKey\n */\nexport const setDeepProp = (\n keys: string[],\n data: Map,\n value: unknown,\n typeMap?: Map,\n parentKey?: Array<string>\n): void => {\n if (keys.length === 0) {\n return\n }\n // 取出keys的第一个元素作为当前待填充的key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n if (keys.length > 0) {\n const hasKey = Object.keys(data).includes(curKey)\n if (!hasKey) {\n if (typeMap) {\n const typeKey = Object.keys(typeMap).find((item) => {\n return generateReg(\n parentKey ? parentKey.concat(curKey) : [curKey]\n ).test(item)\n })\n // 根据typeMap判断当前是数组还是对象,兜底逻辑为对象\n if (typeKey) {\n switch (typeMap[typeKey].type) {\n case 'array':\n data[curKey] = []\n break\n case 'object':\n data[curKey] = {}\n break\n }\n } else {\n // TODO @jiangxiaowei 开启需要render函数支持 暂时不支持fieldkey包含.\n // data[curKey] = {}\n }\n } else {\n // typeMap未定义当前curKey时,默认认为是对象\n data[curKey] = {}\n }\n }\n setDeepProp(\n keys,\n data[curKey],\n value,\n typeMap,\n (parentKey || []).concat(curKey)\n )\n } else {\n data[curKey] = value\n }\n}\n\n/**\n * 删除data.a.b.c\n * 若data没有a.b.c,则不进行任何操作\n * @param {string} keys [a,b,c]\n * @param {object} data 需要删除的对象\n */\nexport const deleteDeepProp = (keys: string[], data: Map): void => {\n if (keys.length === 0) return\n // 当前key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n const hasKey = Object.keys(data).includes(curKey)\n if (keys.length > 0) {\n if (!hasKey) {\n return\n }\n deleteDeepProp(keys, data[curKey])\n } else {\n if (Array.isArray(data) && !Number.isNaN(parseInt(curKey))) {\n data.splice(parseInt(curKey), 1)\n } else {\n delete data[curKey]\n }\n }\n}\n\n/**\n * 判断对象是否有某一属性,如没有,则根据valueType为其创建\n * 并返回最后一个key的校验生成后的value\n * @param {Map} source 源对象\n * @param {'array' | 'object'} valueType 创建的类型\n * @param {array} keys 对象的key值,支持...以拓展深层对象的创建\n */\nexport const judgeAndRegister = (\n source: Map,\n valueType: 'array' | 'object',\n ...keys: any[]\n): Map => {\n let currSource = source\n for (const key of keys) {\n if (!Object.hasOwnProperty.call(currSource, key)) {\n currSource[key] = valueType === 'array' ? [] : {}\n }\n currSource = currSource[key]\n }\n return currSource\n}\n\n/**\n * 允许循环引用的深拷贝\n * @param target\n * @param map\n */\nexport function deepClone(target: any, map = new WeakMap()): any {\n if (map.get(target) || target === null || target === undefined) return target\n\n // 针对Date和RegExp等特殊引用类型,直接执行构造函数进行克隆\n const constructor = target.constructor\n if (/^(Date|RegExp)/.test(constructor.name)) {\n return new constructor(target)\n }\n\n if (typeof target === 'object') {\n // 标记当前target已被处理过,避免递归过程中出现循环引用导致栈溢出的文日\n map.set(target, true)\n const res: any = Array.isArray(target) ? [] : {}\n for (const i in target) {\n if (Object.hasOwnProperty.call(target, i)) {\n res[i] = deepClone(target[i], map)\n }\n }\n return res\n } else {\n return target\n }\n}\n\n/**\n * 该方法用于快速向check的shcmea中注入vcontol。方便过滤已经设置的表单\n * @param obj 待注入vontrol的uiSchema对象\n */\nexport function injectVcontrol(obj: Record<string, unknown>): void {\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n switch (typeCheck(i)) {\n case 'Array':\n // 数组的vcontrol统一设置在顶层\n break\n case 'Object':\n injectVcontrol(obj[i] as Record<string, unknown>)\n break\n default: {\n // 只有设置了fieldKey的才需要设置vcontrol和vcontrolDefault\n const fieldKey = obj.fieldKey\n if (fieldKey) {\n setDeepProp(\n ['ui', 'vcontrol'],\n obj,\n 'const {fieldKey,formData,get}=props;return formData.viewMode===\"configured\"?typeof get(fieldKey).data!==\\'number\\'? get(fieldKey).data:true:true'\n )\n }\n break\n }\n }\n }\n }\n}\n\n/**\n * 解析url中?后的参数,返回参数Map\n * @param url\n */\nexport function parseHrefParam(url: string | undefined): Map {\n url = url || window.location.href\n const parseUrl: string[] | null = /(.*)\\?(.*)/.exec(url)\n const res: Map = {}\n\n if (parseUrl && parseUrl[2]) {\n const paramsList = parseUrl[2].split('&')\n for (const str of paramsList) {\n const split = str.split('=')\n\n res[split[0]] = split[1] !== undefined ? split[1] : true\n }\n }\n\n return res\n}\n\nexport function randomString(length: number): string {\n const str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n let result = ''\n for (let i = length; i > 0; --i)\n result += str[Math.floor(Math.random() * str.length)]\n return result\n}\n\n/**\n * 将大于等于零的整数number转成中文汉字\n */\nconst numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']\nconst unitChar = ['', '十', '百', '千']\nconst millionUnitChar = ['', '万', '亿', '万亿', '亿亿']\n// 已万为处理段,该方法处理万以内的数字转成中文\nfunction range2Chinese(range: number): string {\n let numUnitChar = ''\n let tempStr = ''\n let unit = 0\n let isNeedZero = true\n while (range > 0) {\n const currentNum = range % 10\n if (currentNum === 0) {\n if (!isNeedZero) {\n isNeedZero = true\n tempStr = numChar[currentNum] + tempStr\n }\n } else {\n isNeedZero = false\n numUnitChar = numChar[currentNum]\n numUnitChar += unitChar[unit]\n tempStr = numUnitChar + tempStr\n }\n unit++\n range = Math.floor(range / 10)\n }\n return tempStr\n}\nexport function number2Chinese(num: number): string {\n let millionUnit = 0\n let tempStr = ''\n let resStr = ''\n let isNeedZero = false\n if (num === 0) {\n return numChar[0]\n }\n while (num > 0) {\n const range = num % 10000\n if (isNeedZero) {\n resStr = numChar[0] + resStr\n }\n tempStr = range2Chinese(range)\n tempStr += range !== 0 ? millionUnitChar[millionUnit] : millionUnitChar[0]\n resStr = tempStr + resStr\n isNeedZero = range < 1000 && range > 0\n num = Math.floor(num / 10000)\n millionUnit++\n }\n return resStr\n}\n\n// TODO 更新Read more文档\nexport function upgradeTips(oldApiName: string, newApiName: string): void {\n console.warn(\n `${oldApiName}: The current usage is about to discard after the next main version is upgraded, please use ${newApiName}! `\n )\n}\n\n// 转换数组\nexport function toArray(param: string | Array<string>): Array<string> {\n return Array.isArray(param) ? param : [param]\n}\n\n// 处理容器宽度\nexport const handleMargin = (\n style: CSSProperties,\n breakPoint: number,\n screenSize: number\n): void => {\n const { margin, width } = style\n let marginRight = style.marginRight || '0px'\n let marginLeft = style.marginLeft || '0px'\n if (width) {\n if (margin) {\n if (typeof margin === 'string') {\n const marginArr = margin.trim().split(' ')\n if (marginArr.length === 1) {\n marginRight = margin\n marginLeft = margin\n }\n if (marginArr.length === 2 || marginArr.length === 3) {\n marginRight = marginArr[1]\n marginLeft = marginArr[1]\n }\n if (marginArr.length === 4) {\n marginRight = marginArr[1]\n marginLeft = marginArr[3]\n }\n }\n }\n marginRight = marginRight === '0' ? '0px' : marginRight\n marginLeft = marginLeft === '0' ? '0px' : marginLeft\n if (screenSize < breakPoint) {\n style.width = `calc(100% - ${marginRight} - ${marginLeft})`\n } else {\n style.width = `calc(${style.width} - ${marginRight} - ${marginLeft})`\n }\n }\n}\n\n/**\n * 根据uiSchema,获取当前schem相对的主题和组件类型\n * @param uiSchema\n * @returns\n */\nexport const getThemeAndType = (\n uiSchema: {\n type: string\n theme?: string\n } & Map\n): string => {\n const { type, theme } = uiSchema\n const [, newType] = type.split('::')\n // v0未区分容器和组件概念,需要做判断\n if (['root', 'object', 'array'].includes(newType || type)) {\n return newType || type\n } else {\n return newType ? type : `${theme}::${type}`\n }\n}\n\nexport function isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\nexport function removeSpaceAndmakeStringCamelCase(string: string) {\n const regex = /\\s+(\\w)?/gi\n const output = string.toLowerCase().replace(regex, function (match, letter) {\n return letter ? letter.toUpperCase() : ''\n })\n return output\n}\n","/**\n * 将二进制流数据转成base64格式的数据\n *\n * @param file\n */\nexport function binaryData2Blob(\n file: File\n): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.readAsDataURL(file)\n reader.onload = function () {\n resolve(this.result)\n }\n reader.onerror = function (err) {\n reject(err)\n }\n })\n}\n\n/**\n * 将base64g格式的图片地址转成img图片对象\n *\n * @param {string} imgBase64Url\n */\nexport function getImgEl(imgBase64Url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n resolve(img)\n }\n img.onerror = function (err) {\n reject(err)\n }\n img.src = imgBase64Url\n })\n}\n\n// 尺寸限制\nexport type ImgDimension = Partial<{\n width: number\n height: number\n minWidth: number\n minHeight: number\n maxWidth: number\n maxHeight: number\n widthDivisor: number\n heightDivisor: number\n widthHeightEqual: boolean\n}>\n// 大小限制\nexport type ImgSize = Partial<{\n max: number\n min: number\n}>\n\nconst isValidFileUploaded = (file: File, accept: string = '') => {\n if (accept) {\n const validExtensions = accept.split(',')\n const fileExtension = file.type.split('/')[1]\n const fileName = file.name.split('.')\n let fileNameExtension = ''\n if (fileName.length) {\n fileNameExtension = fileName[fileName.length - 1]\n }\n return (\n validExtensions.includes(`.${fileExtension}`) ||\n validExtensions.includes(`.${fileNameExtension}`)\n )\n }\n return true\n}\n\nexport async function checkImg({\n file,\n dimension,\n size,\n accept,\n errMsg,\n}: {\n file: File\n dimension?: ImgDimension\n size?: ImgSize\n accept?: string\n errMsg?: Partial<{\n dimension: string\n size: string\n type: string\n }>\n}): Promise<{ isOk: boolean; errors: Array<string> }> {\n let isOk: string | boolean = true\n const errors: Array<string> = []\n const {\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n widthDivisor,\n heightDivisor,\n widthHeightEqual,\n } = dimension || {}\n const { max, min } = size || {}\n // 尺寸校验\n try {\n const imgBase64Url = await binaryData2Blob(file)\n if (imgBase64Url) {\n const { naturalHeight, naturalWidth } = await getImgEl(\n imgBase64Url as string\n )\n\n let count = 0\n\n width && count++\n minWidth && count++\n maxWidth && count++\n widthDivisor && count++\n height && count++\n minHeight && count++\n maxHeight && count++\n heightDivisor && count++\n widthHeightEqual && count++\n\n if (width && width === naturalWidth) count--\n if (minWidth && minWidth <= naturalWidth) count--\n if (maxWidth && maxWidth >= naturalWidth) count--\n if (widthDivisor && naturalWidth % widthDivisor === 0) count--\n\n if (height && height === naturalHeight) count--\n if (minHeight && minHeight <= naturalHeight) count--\n if (maxHeight && maxHeight >= naturalHeight) count--\n if (heightDivisor && naturalHeight % heightDivisor === 0) count--\n\n if (widthHeightEqual === true && naturalHeight === naturalWidth) count--\n\n if (count !== 0) {\n errors.push(errMsg?.dimension || '图片尺寸校验未通过')\n isOk = false\n }\n }\n } catch (error) {\n console.error(error)\n }\n // 大小校验\n if (min && min >= file.size) {\n errors.push(errMsg?.size || '图片大小校验未通过')\n isOk = false\n } else if (max && max * 1024 <= file.size) {\n let size = file.size\n let message = ''\n if (max > 1024) {\n size = max / 1024\n message = `${size.toFixed(1)} mb`\n } else {\n message = `${max} kb`\n }\n errors.push(\n errMsg?.size ||\n `File size exceeds limit, the file must be smaller than ${message}`\n )\n isOk = false\n }\n if (!isValidFileUploaded(file, accept || '')) {\n errors.push(errMsg?.type || 'File type is not supported')\n isOk = false\n }\n return { isOk, errors }\n}\n","/**\n * 联合Schema解析函数\n */\nimport { typeCheck, setDeepProp } from '../common'\nimport { UiSchema, UnitedSchema, DataSchema, TypePath } from './types'\nimport _ from 'lodash'\nimport type { Map } from '../common/type'\n\n/**\n * 递归解析\n */\nfunction initParse({\n unitedSchema,\n parentType,\n idx,\n // 父级uiSchema\n parentUiSchema,\n // 父级dataSchema\n parentDataSchema,\n customProps,\n typePath,\n parentTypePath = '',\n index,\n}: {\n unitedSchema: UnitedSchema\n parentType?: 'array' | 'tuple' | 'object'\n idx?: string\n parentUiSchema: UiSchema\n parentDataSchema: DataSchema\n customProps: string[]\n typePath: Map\n parentTypePath?: string\n index?: string | number\n}) {\n // 当前uiSchema\n let curUiSchema = parentUiSchema\n // 当前dataSchema\n let curDataSchema = parentDataSchema\n // 当前的typePath的key\n let curTypePath = parentTypePath\n // 非第一次调用initParse\n if (idx) {\n // 设置typePath\n curTypePath = parentTypePath ? `${parentTypePath}.${idx}` : idx\n typePath[curTypePath] = {\n fatherKey: parentTypePath,\n title: unitedSchema.title || '',\n type: unitedSchema.type,\n unitedSchemaKey: `${\n typePath[parentTypePath]?.unitedSchemaKey\n ? `${typePath[parentTypePath]?.unitedSchemaKey}.`\n : ''\n }${parentType == 'object' ? 'schema' : 'items'}${\n index !== '$container' ? `.${index}` : ''\n }`,\n }\n } else {\n // 设置根元素的typePath\n if (unitedSchema.fieldKey) {\n typePath[unitedSchema.fieldKey] = {\n type: unitedSchema.type,\n unitedSchemaKey: '',\n fatherKey: '',\n }\n }\n // 根元素type默认为object\n curDataSchema.type = 'object'\n }\n // ui:开头的\n const uiReg = /^ui:/\n // 是否是uiSchema中的属性\n const isUiProp = (key: string): boolean => {\n // 需要丢到uiSchema中的属性\n const uiSchemaKeys = [\n 'footer',\n 'theme',\n 'containerStyle',\n 'formMode',\n 'ui',\n 'token',\n 'themeColor',\n ]\n return uiSchemaKeys.includes(key) || uiReg.test(key)\n }\n Object.entries(unitedSchema).map(([key, value]) => {\n // 设置uiSchema\n if (isUiProp(key)) {\n // 非第一次调用initParse\n if (idx) {\n const path = ['properties', idx]\n setDeepProp(path, parentUiSchema, {})\n curUiSchema = parentUiSchema.properties[idx] as UiSchema\n // 设置order\n const order = _.get(parentUiSchema, 'order', [] as string[])\n // 避免重复fieldKey\n if (!order.includes(idx)) {\n order.push(idx)\n }\n parentUiSchema.order = order\n }\n // 设置ui:开头的ui属性,ui:{}优先级更高\n if (uiReg.test(key)) {\n curUiSchema[key.slice(3)] =\n ((unitedSchema?.ui || {}) as Map)[key.slice(3)] || value\n } else if (key === 'ui') {\n // 设置ui:{}中的属性\n Object.entries(value).map(([key, value]) => {\n curUiSchema[key] = value\n })\n } else {\n curUiSchema[key] = value\n }\n } else {\n // 设置dataSchema\n // 非第一次调用initParse\n if (idx) {\n switch (parentType) {\n case 'object': {\n const path = ['properties', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = (\n parentDataSchema.properties as Record<string, DataSchema>\n )[idx]\n break\n }\n case 'array': {\n const path = ['items']\n setDeepProp(\n ['items'],\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = parentDataSchema.items as DataSchema\n break\n }\n case 'tuple': {\n const path = ['items', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {}),\n { items: { type: 'array' } }\n )\n curDataSchema = (parentDataSchema.items as DataSchema[])[\n Number(idx)\n ]\n break\n }\n default:\n break\n }\n }\n switch (key) {\n case 'requiredMsg':\n // 设置父级,只有对象才有\n if (parentType === 'object' && idx) {\n // 设置order\n const required = _.get(parentDataSchema, 'required', [] as string[])\n // 避免重复fieldKey\n if (!required.includes(idx)) {\n required.push(idx)\n }\n parentDataSchema.required = required\n setDeepProp(\n ['errorMessage', 'required', idx],\n parentDataSchema,\n value\n )\n }\n break\n // 错误信息配置\n case 'errMsg':\n curDataSchema.errorMessage = value\n break\n // 以下字段 items、 schema、fieldKey 不设置到dataSchema中\n case 'items':\n case 'schema':\n case 'fieldKey':\n break\n default:\n // 设置customProps\n if (/^\\$:/.test(key)) {\n customProps.push(key)\n }\n curDataSchema[key] = value\n break\n }\n }\n })\n\n // 当前表单嵌套类型 'schema'为object|'items'为array\n let type = 'object'\n if (unitedSchema.items) {\n type = 'array'\n }\n switch (type) {\n case 'object': {\n // 处理通用逻辑\n // 对schema处理(子表单处理,递归)\n unitedSchema.schema?.map((childUnitedSchema, i) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: childUnitedSchema.fieldKey,\n parentType: 'object',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n parentTypePath: curTypePath,\n customProps,\n typePath,\n index: i,\n })\n })\n break\n }\n case 'array': {\n // 处理通用逻辑\n // 对items处理(子表单处理,递归)\n const item = unitedSchema.items\n const type = typeCheck(item)\n // 普通数组\n if (type === 'Object') {\n initParse({\n unitedSchema: item as UnitedSchema,\n idx: '$container',\n parentType: 'array',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: '$container',\n })\n } else if (type === 'Array') {\n // 元祖\n item?.map((childUnitedSchema: UnitedSchema, i: number) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: String(i),\n parentType: 'tuple',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: i,\n })\n })\n }\n break\n }\n default:\n break\n }\n}\n\n/**\n * 解析联合Schema\n * @param unitedSchema\n */\nconst parseUnitedSchema = (\n unitedSchema: UnitedSchema\n): {\n uiSchema: UiSchema\n dataSchema: DataSchema\n typePath: TypePath\n customProps: string[]\n} => {\n const dataSchema = {} as DataSchema\n const uiSchema = {} as UiSchema\n // 用来存储每个表单项对应的type值,如果是嵌套格式,则解析为 { a: 'object', 'a.b': 'object', 'a.b.c': 'array' }\n const typePath = {}\n // $:的自定义属性,仅统计dataSchema的\n const customProps: string[] = []\n\n initParse({\n unitedSchema,\n parentUiSchema: uiSchema,\n parentDataSchema: dataSchema,\n customProps,\n typePath,\n })\n\n return {\n dataSchema,\n uiSchema,\n typePath,\n customProps: [...new Set(customProps)],\n }\n}\n\nexport { parseUnitedSchema }\n","import { UiSchema, DataSchema, UnitedSchema } from './types'\nimport { deepClone, isEmpty } from '../common'\nimport type { Map } from '../common/type'\n\ntype Options = Partial<{\n // 是否开启$fieldKey值转换为fieldKey(默认不开启,generator中viewport区域需要开启)\n $fieldKey: boolean\n}>\n\nconst needToHandledKeywords = [\n 'required',\n 'errorMessage',\n 'items',\n 'schema',\n 'properties',\n 'order',\n]\n\nconst needToSetToRootUi = ['theme']\n\n/**\n * 值拷贝\n * @param targetObj\n * @param rawObj\n * @param dataType\n */\nfunction valueClone({\n targetObj,\n rawObj,\n dataType,\n fromRoot,\n}: {\n targetObj: Map\n rawObj: Map\n dataType?: string\n fromRoot?: boolean\n}): void {\n for (const key in rawObj) {\n if (rawObj[key] === null || typeof rawObj[key] !== 'object') {\n if (fromRoot && key === 'theme') {\n //\n } else {\n targetObj[key] = rawObj[key]\n }\n } else if (\n !needToHandledKeywords.includes(key) &&\n !needToSetToRootUi.includes(key)\n ) {\n // 非特殊字段可使用深拷贝,比如title, containerStyle\n targetObj[key] = deepClone(rawObj[key])\n }\n }\n\n if (dataType && Object.hasOwnProperty.call(rawObj, 'errorMessage')) {\n targetObj.errMsg = deepClone(rawObj.errorMessage)\n if (targetObj.errMsg.required) {\n delete targetObj.errMsg.required\n if (Object.keys(targetObj.errMsg).length === 0) {\n delete targetObj.errMsg\n }\n }\n }\n}\n\n/**\n * 递归合并\n * @param dataSchema\n * @param uiSchema\n * @param schema\n * @param fromRoot\n */\nfunction recursionCombine({\n dataSchema,\n uiSchema,\n schema,\n fromRoot,\n options,\n}: {\n dataSchema: DataSchema\n uiSchema: UiSchema\n schema: Map\n fromRoot?: boolean\n options?: Options\n}) {\n // 先拷贝ui和data的值类型属性或非特殊对象类型属性,比如title, containerStyle\n valueClone({\n targetObj: schema,\n rawObj: dataSchema,\n dataType: dataSchema.type,\n })\n // uiSchema非空时进行拷贝\n if (!isEmpty(uiSchema)) {\n // 填充ui属性,用于存放uiSchema\n if (!Object.hasOwnProperty.call(schema, 'ui')) {\n schema.ui = {}\n }\n\n // 如果是根路径的,需要处理特殊字段\n if (fromRoot) {\n needToSetToRootUi.forEach((key) => {\n if (Object.hasOwnProperty.call(uiSchema, key)) {\n schema[key] = uiSchema[key]\n }\n })\n }\n\n valueClone({ targetObj: schema.ui, rawObj: uiSchema, fromRoot })\n\n if (isEmpty(schema.ui)) {\n delete schema.ui\n }\n }\n\n // 如果有order,则根据order填充联合schema\n if (Object.hasOwnProperty.call(uiSchema, 'order')) {\n // 子项需要填充到联合schema的哪个prop下\n // 当父节点类型为array时应为items,否则为schema\n const toSchemaProp = dataSchema.type === 'array' ? 'items' : 'schema'\n\n // 因为子项的错误信息在dataSchema中,此处需要进行处理\n const required = dataSchema.required,\n errorMessage = dataSchema.errorMessage,\n msgMap = {} as Map\n\n if (typeof errorMessage === 'object') {\n const requireMsg = errorMessage.required\n const errMsg =\n errorMessage[toSchemaProp === 'items' ? 'items' : 'properties']\n\n // 收集必填的错误提示\n if (required) {\n for (const fk of required) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n requiredMsg: requireMsg[fk],\n }\n }\n }\n\n // 收集校验的错误提示\n if (errMsg) {\n for (const fk in errMsg) {\n if (Object.hasOwnProperty.call(errMsg, fk)) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n // 注意errMsg[fk]可能为string或对象,因此需要深拷贝\n errMsg: deepClone(errMsg[fk]),\n }\n }\n }\n }\n }\n\n // 遍历order的fieldKey\n for (let fieldKey of uiSchema.order) {\n // 根据fieldKey获取子项的schema\n const subUiSchema = uiSchema.properties[fieldKey]\n // 初始化子项的dataSchema\n let subDataSchema: Array<Map> | Map = dataSchema\n\n // 根据dataSchema(父节点)中的type字段判断在联合schema中,子项以什么形式存在\n // array需读取dataSchema的items,object需读取properties\n if (fieldKey === '$container') {\n subDataSchema = subDataSchema.items\n } else if (dataSchema.type === 'array') {\n subDataSchema = subDataSchema.items[fieldKey]\n } else {\n subDataSchema = subDataSchema.properties[fieldKey]\n }\n\n // 初始化待填充的表单项\n const fieldItem = {} as Map\n // 开始递归\n recursionCombine({\n dataSchema: subDataSchema as DataSchema,\n uiSchema: subUiSchema as UiSchema,\n schema: fieldItem,\n options,\n })\n\n if (msgMap[fieldKey]) {\n Object.assign(fieldItem, msgMap[fieldKey])\n }\n\n // 将递归完成的fieldItem填充到父组件的prop中\n if (toSchemaProp === 'items' && !Array.isArray(dataSchema?.items)) {\n // 对于元组类型,items应为 {}\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = {}\n }\n\n schema[toSchemaProp] = fieldItem\n } else {\n // 其余类型应为数组\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = []\n }\n\n if (toSchemaProp === 'schema') {\n // 对于容器类型的子项,需要填充fieldKey\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (\n Object.prototype.hasOwnProperty.call(subDataSchema, '$fieldKey') &&\n options &&\n options['$fieldKey']\n ) {\n fieldKey = (subDataSchema as Map)['$fieldKey']\n delete fieldItem['$fieldKey']\n }\n fieldItem.fieldKey = fieldKey\n }\n\n schema[toSchemaProp].push(fieldItem)\n }\n }\n } else {\n // 如果没有order,但数据类型为array且dataSchema中有配置items的,将items拷贝至联合schema\n // fix: 时间选择器combine后属性丢失的问题\n if (dataSchema.type === 'array' && !isEmpty(dataSchema.items)) {\n schema.items = dataSchema.items\n }\n }\n}\n\n/**\n * 融合dataSchema和uiSchema为联合Schema\n */\nfunction combine(\n dataSchema: DataSchema,\n uiSchema: UiSchema,\n options?: Options\n): UnitedSchema {\n const unitedSchema = {}\n\n recursionCombine({\n dataSchema,\n uiSchema,\n schema: unitedSchema,\n fromRoot: true,\n options,\n })\n\n return unitedSchema\n}\n\nexport { combine }\n","/*\n * schema.flow 字段处理成联动语法\n * @Author: jiangxiaowei\n * @Date: 2022-07-12 15:13:44\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-23 23:49:26\n */\nimport stringify from 'js-stringify'\nimport type { Flow, ControlFlowAction } from './type'\n\nconst commonStr = 'const {get,set,merge,setDeepProp,changeKey}=props;'\n\nconst getFileKeyToString = (fieldKey: string) => {\n const [newFieldKey, type, property] = fieldKey.trim().split(' ')\n return property\n ? `get('${newFieldKey}').${type}?.${property}`\n : `get('${newFieldKey}').${type}`\n}\n\n// TODO else实现\n// TODO effect subAction实现\nconst parseControlFlow = (\n action: ControlFlowAction,\n flowStr: string\n): string => {\n // if的条件语句\n let condintionStr = ''\n // if判断成功,执行的语句\n let effectStr = ''\n action.condintion.map((condintion, index, condintions) => {\n if (!condintion.fieldKey1) return\n // 是否取反\n const non = condintion.operator.startsWith('-')\n // 去掉 - 之后的字符(例子:前 -includes 后:includes)\n let operator = non ? condintion.operator.slice(1) : condintion.operator\n if (['true', 'false'].includes(operator)) {\n operator = '==='\n }\n\n // 需要前面加.的操作符\n const isdotOperator = ['includes', 'in'].includes(operator)\n // change是特殊的判断\n const operatorStr =\n operator === 'change'\n ? `('${condintion.fieldKey1.trim().split(' ').shift()}'===changeKey)`\n : `(${getFileKeyToString(condintion.fieldKey1)}${\n isdotOperator ? '?.' : ''\n }${operator}${\n ['true', 'false'].includes(condintion.operator)\n ? condintion.operator\n : `${stringify(condintion.value2)}`\n })`\n condintionStr += `${operatorStr}${\n condintion.logicOperator && index != condintions.length - 1\n ? condintion.logicOperator\n : ''\n }`\n })\n action.effect.map((effect) => {\n // 转换set类型并过滤空的fieldKey\n if (effect.type === 'set' && effect.fieldKey) {\n const [fieldKey, subType, property] = effect.fieldKey.trim().split(' ')\n effectStr +=\n `set('${fieldKey}','${subType}',${\n property\n ? `(oldValue)=>{\n ${\n property == 'queryConfig.refreshId'\n ? 'let newRefreshId=oldValue?.queryConfig?.refreshId||0;newRefreshId++;'\n : ''\n }\n setDeepProp(${stringify(property.split('.'))},oldValue,${\n property === 'vcontrol'\n ? stringify(\n `const {get}=props;return ${\n effect.value ? condintionStr : `!(${condintionStr})`\n }`\n )\n : property == 'queryConfig.refreshId'\n ? 'newRefreshId'\n : stringify(effect.value)\n })\n }`\n : stringify(effect.value)\n }` + ');'\n }\n })\n\n if (condintionStr) {\n flowStr += `if(${condintionStr}){${effectStr}};`\n }\n return flowStr\n}\n\nexport const parseFlow = (flow: Flow): string => {\n let flowStr = ''\n //TODO trigger.event支持其他类型后,需对一期默认的globalChange兼容\n // 解析flow.actions\n flow.actions.map((action) => {\n switch (action.type) {\n case 'controlFlow':\n flowStr += parseControlFlow(action, flowStr)\n break\n default:\n break\n }\n })\n return commonStr + flowStr\n}\n","import {\n FetchApi,\n GetApi,\n PostApi,\n formValuePayloadType,\n getFormValueByType,\n} from './type'\n\nconst request = async (url: string, config: RequestInit) => {\n if (!window.fetch) {\n throw '浏览器版本过低'\n }\n try {\n const res = await fetch(url, config)\n if (res.ok) {\n const data = await res.json()\n return data\n } else {\n console.error('请求失败')\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nconst get: GetApi<unknown> = ({ params, url, headers }) => {\n const { search, origin, hash, pathname } = new URL(url)\n const searchParams = new URLSearchParams(search)\n Object.entries(params).map(([key, value]) => {\n searchParams.set(key, value)\n })\n const newSearchParams = searchParams.toString()\n return request(\n `${origin}${pathname}${\n newSearchParams ? `?${newSearchParams}` : ''\n }${hash}`,\n {\n method: 'GET',\n ...(headers ? { headers } : {}),\n }\n )\n}\n\nconst post: PostApi<unknown> = ({ params, url, headers }) => {\n return request(url, {\n method: 'POST',\n body: JSON.stringify(params),\n ...(headers ? { headers } : {}),\n })\n}\n\nexport const fetchFn: FetchApi = ({\n params: oldParams,\n url,\n method,\n headers,\n}) => {\n const params: Record<string, unknown> = {}\n oldParams.map(({ key, value }) => {\n params[key] = value\n })\n switch (method.toUpperCase()) {\n case 'GET':\n return get({ params, url, headers })\n case 'POST':\n return post({ params, url, headers })\n default:\n throw new Error('不支持改请求类型')\n }\n}\n\nexport const fetchFnJsonKey = async ({\n config,\n dataHandler = null,\n dataSetter = null,\n doFinally = null,\n}: {\n config: any\n dataHandler?: Function | null | undefined\n dataSetter?: Function | null | undefined\n doFinally?: Function | null | undefined\n}) => {\n let auth = config?.headers?.Authorization || ''\n if (localStorage.getItem('jwtToken')) {\n auth = `Bearer ${localStorage.getItem('jwtToken')}`\n }\n if (config?.token) {\n auth = `Bearer ${config?.token}`\n }\n const fetchConfig: RequestInit = {\n method: config.method,\n headers: {\n ...config?.headers,\n Authorization: auth,\n },\n }\n if (config?.body) {\n fetchConfig.body = config.body\n }\n await request(config.url, fetchConfig)\n .then((res: any) => {\n let data\n if (config.jsonkey) {\n const jsonKeyVals = config.jsonkey.split('.')\n if (jsonKeyVals.length === 1) {\n data = res?.[jsonKeyVals[0]]\n } else if (jsonKeyVals.length === 2) {\n data = res?.[jsonKeyVals[0]]?.[jsonKeyVals[1]]\n }\n } else {\n data = res\n }\n if (dataHandler) {\n dataHandler(\n (data || []).map((item: any) => ({\n label: item[config.labelKey],\n value: item[config.valueKey],\n }))\n )\n }\n if (dataSetter) {\n dataSetter(data)\n }\n })\n .catch((error) => {\n console.error('Error:', error)\n })\n .finally(() => {\n if (doFinally) {\n doFinally()\n }\n })\n}\nexport const fetchFormValue = async (config: {\n url: string\n token: string\n getFormValueBy: getFormValueByType\n}): Promise<any> => {\n let param = ''\n const externalParam = config.getFormValueBy\n if (externalParam && typeof externalParam === 'object') {\n if (externalParam.id) {\n param = `?id=${externalParam.id}`\n } else {\n param = `?where=${encodeURIComponent(JSON.stringify(externalParam))}`\n }\n }\n return request(`${config.url}${param}`, {\n method: 'GET',\n headers: { Authorization: `Bearer ${config?.token}` },\n })\n}\nexport const addFormValue = (config: {\n url: string\n token: string\n formValuePayload: formValuePayloadType\n}): Promise<any> => {\n const payload = new FormData()\n return request(config.url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${config?.token}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config.formValuePayload),\n })\n}\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:24\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-24 16:33:13\n */\nimport _ from 'lodash'\nexport const isEqual = _.isEqual\nexport const get = _.get\nexport * from './common'\nexport * from './common/type'\nexport * from './image'\nexport * from './schemaHandle/parse'\nexport * from './schemaHandle/combine'\nexport * from './schemaHandle/types'\nexport * from './type'\nexport * from './flowHandle'\nexport * from './flowHandle/type'\nexport * from './fetch'\nexport * from './fetch/type'\n"],"names":["_typeof","_","stringify","get"],"mappings":"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"}
@@ -104,7 +104,7 @@ declare function upgradeTips(oldApiName: string, newApiName: string): void;
104
104
  // 转换数组
105
105
  declare function toArray(param: string | Array<string>): Array<string>;
106
106
  // 处理容器宽度
107
- declare const handleMargin: (style: CSSProperties) => void;
107
+ declare const handleMargin: (style: CSSProperties, breakPoint: number, screenSize: number) => void;
108
108
  /**
109
109
  * 根据uiSchema,获取当前schem相对的主题和组件类型
110
110
  * @param uiSchema
@@ -515,7 +515,7 @@ type UiSchema = {
515
515
  mode: "add" | "normal" | "collapse" | "tuple" | "fixed";
516
516
  theme: Theme;
517
517
  type: string;
518
- containerStyle?: ContainerStyle;
518
+ containerStyle?: ContainerStyle & Record<string, any>;
519
519
  properties: Properties;
520
520
  order: Array<string | number>;
521
521
  title?: TitleUi;
@@ -528,6 +528,7 @@ type UiSchema = {
528
528
  fetchData?: boolean;
529
529
  jsonkey?: string;
530
530
  apiJson?: string;
531
+ formValueApiURLDomain?: string;
531
532
  [propName: string]: unknown;
532
533
  };
533
534
  [propName: string]: unknown;
@@ -597,15 +598,35 @@ type FetchApi = (args: {
597
598
  }>;
598
599
  url: string;
599
600
  method: "GET" | "POST";
601
+ headers?: Record<string, string>;
600
602
  }) => Promise<unknown>;
601
603
  type GetApi<R> = (args: {
602
604
  params: Map;
603
605
  url: string;
606
+ headers?: Record<string, string>;
604
607
  }) => Promise<R>;
605
608
  type PostApi<R> = (args: {
606
609
  params: Map;
607
610
  url: string;
611
+ headers?: Record<string, string>;
608
612
  }) => Promise<R>;
613
+ type formValuePayloadType = {
614
+ form_id: string;
615
+ version_id: string;
616
+ extension: {
617
+ [key: string]: any;
618
+ };
619
+ form_data: {
620
+ [key: string]: any;
621
+ };
622
+ };
623
+ type getFormValueByType = {
624
+ id?: string;
625
+ form_id?: string;
626
+ extension?: {
627
+ [key: string]: any;
628
+ };
629
+ };
609
630
  declare const fetchFn: FetchApi;
610
631
  declare const fetchFnJsonKey: ({ config, dataHandler, dataSetter, doFinally }: {
611
632
  config: any;
@@ -613,4 +634,14 @@ declare const fetchFnJsonKey: ({ config, dataHandler, dataSetter, doFinally }: {
613
634
  dataSetter?: Function | null | undefined;
614
635
  doFinally?: Function | null | undefined;
615
636
  }) => Promise<void>;
616
- export { isEqual, get, generateReg, generateArrayKeyReg, typeCheck, isEmpty, setDeepProp, deleteDeepProp, judgeAndRegister, deepClone, injectVcontrol, parseHrefParam, randomString, number2Chinese, upgradeTips, toArray, handleMargin, getThemeAndType, isValidHttpUrl, removeSpaceAndmakeStringCamelCase, Map, ClosestEdge, binaryData2Blob, getImgEl, ImgDimension, ImgSize, checkImg, parseUnitedSchema, combine, FieldAtomType, ContainerStyle, Description, TitlePlacement, Theme, TitleUi, OnChange, UiSchema, DataSchema, UnitedSchema, TypePathItem, TypePath, Get, GetKey, GetTypeKey, State, SetErrType, SetErrsType, Action$0 as Action, parseFlow, Operator, Condintion, SetEffect, ControlFlowAction, Flow, fetchFn, fetchFnJsonKey, FetchApi, GetApi, PostApi };
637
+ declare const fetchFormValue: (config: {
638
+ url: string;
639
+ token: string;
640
+ getFormValueBy: getFormValueByType;
641
+ }) => Promise<any>;
642
+ declare const addFormValue: (config: {
643
+ url: string;
644
+ token: string;
645
+ formValuePayload: formValuePayloadType;
646
+ }) => Promise<any>;
647
+ export { isEqual, get, generateReg, generateArrayKeyReg, typeCheck, isEmpty, setDeepProp, deleteDeepProp, judgeAndRegister, deepClone, injectVcontrol, parseHrefParam, randomString, number2Chinese, upgradeTips, toArray, handleMargin, getThemeAndType, isValidHttpUrl, removeSpaceAndmakeStringCamelCase, Map, ClosestEdge, binaryData2Blob, getImgEl, ImgDimension, ImgSize, checkImg, parseUnitedSchema, combine, FieldAtomType, ContainerStyle, Description, TitlePlacement, Theme, TitleUi, OnChange, UiSchema, DataSchema, UnitedSchema, TypePathItem, TypePath, Get, GetKey, GetTypeKey, State, SetErrType, SetErrsType, Action$0 as Action, parseFlow, Operator, Condintion, SetEffect, ControlFlowAction, Flow, fetchFn, fetchFnJsonKey, fetchFormValue, addFormValue, FetchApi, GetApi, PostApi, formValuePayloadType, getFormValueByType };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/common/index.ts","../../src/image.ts","../../src/schemaHandle/parse.ts","../../src/schemaHandle/combine.ts","../../src/flowHandle/index.ts","../../src/fetch/index.ts","../../src/index.ts"],"sourcesContent":["/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:13\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-07-22 13:46:08\n */\nimport { CSSProperties } from 'react'\nimport type { Map } from './type'\n\n/**\n * 生成fieldkey的正则\n * 根据a.0.b 返回/a.(\\d+|$container).b/正则\n * @param arr <Array> 需要生成正则的数组\n * @returns 返回正则\n */\nexport const generateReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index, arr) => {\n if (Number.isNaN(parseInt(cur))) {\n return `${prev}${index !== 0 ? '\\\\.' : ''}${arr[index].replace(\n /\\$/g,\n '\\\\$'\n )}`\n } else {\n return `${index !== 0 ? `${prev}\\\\.` : ''}(${cur}|\\\\$container)`\n }\n }, '')\n return new RegExp(`^${regStr}$`, 'ig')\n}\n\n/**\n * 用于删除、切换数组排序的arraykey\n * @param arr\n * @returns\n */\nexport const generateArrayKeyReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index) => {\n if (index === arr.length - 1) {\n return `${prev})\\\\.(\\\\d)+`\n }\n return `${index !== 0 ? `${prev}\\\\.` : ''}${cur}`\n })\n return new RegExp(`^(${regStr}(\\\\..+)+`, 'ig')\n}\n\n/**\n * 基本数据类型检测\n * @param {unknown} checkVar 待检测的变量\n * @returns {string} 基本数据类型:Object | Array | String | Number | Boolean | Null | Undefined\n */\nexport function typeCheck(checkVar: any): string {\n const typeClass = Object.prototype.toString.call(checkVar)\n\n return typeClass.split(' ')[1].split(']')[0]\n}\n\n/**\n * 判断变量是否为空\n * @param checkVar\n */\nexport function isEmpty(checkVar: any): boolean {\n let empty = false\n const varType: string = typeCheck(checkVar)\n\n switch (varType) {\n case 'Number':\n case 'Boolean':\n empty = false\n break\n case 'Null':\n case 'Undefined':\n empty = true\n break\n case 'Array':\n case 'String':\n empty = checkVar.length === 0\n break\n default: {\n const keys = Object.keys(checkVar)\n empty = keys.length === 0\n }\n }\n\n return empty\n}\n\n/**\n * 设置data.a.b.c = value\n * 若data没有a.b 则依次赋值空对象,最后再将a.b.c设为value\n * @param {string} keys a.b.c\n * @param {object} data data.a.b.c\n * @param {unknown} value data.a.b.c = value\n * @param {object} typeMap 确定a.0.b.1中的0和1的父级应该是对象还是数组形式\n * @param parentKey\n */\nexport const setDeepProp = (\n keys: string[],\n data: Map,\n value: unknown,\n typeMap?: Map,\n parentKey?: Array<string>\n): void => {\n if (keys.length === 0) {\n return\n }\n // 取出keys的第一个元素作为当前待填充的key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n if (keys.length > 0) {\n const hasKey = Object.keys(data).includes(curKey)\n if (!hasKey) {\n if (typeMap) {\n const typeKey = Object.keys(typeMap).find((item) => {\n return generateReg(\n parentKey ? parentKey.concat(curKey) : [curKey]\n ).test(item)\n })\n // 根据typeMap判断当前是数组还是对象,兜底逻辑为对象\n if (typeKey) {\n switch (typeMap[typeKey].type) {\n case 'array':\n data[curKey] = []\n break\n case 'object':\n data[curKey] = {}\n break\n }\n } else {\n // TODO @jiangxiaowei 开启需要render函数支持 暂时不支持fieldkey包含.\n // data[curKey] = {}\n }\n } else {\n // typeMap未定义当前curKey时,默认认为是对象\n data[curKey] = {}\n }\n }\n setDeepProp(\n keys,\n data[curKey],\n value,\n typeMap,\n (parentKey || []).concat(curKey)\n )\n } else {\n data[curKey] = value\n }\n}\n\n/**\n * 删除data.a.b.c\n * 若data没有a.b.c,则不进行任何操作\n * @param {string} keys [a,b,c]\n * @param {object} data 需要删除的对象\n */\nexport const deleteDeepProp = (keys: string[], data: Map): void => {\n if (keys.length === 0) return\n // 当前key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n const hasKey = Object.keys(data).includes(curKey)\n if (keys.length > 0) {\n if (!hasKey) {\n return\n }\n deleteDeepProp(keys, data[curKey])\n } else {\n if (Array.isArray(data) && !Number.isNaN(parseInt(curKey))) {\n data.splice(parseInt(curKey), 1)\n } else {\n delete data[curKey]\n }\n }\n}\n\n/**\n * 判断对象是否有某一属性,如没有,则根据valueType为其创建\n * 并返回最后一个key的校验生成后的value\n * @param {Map} source 源对象\n * @param {'array' | 'object'} valueType 创建的类型\n * @param {array} keys 对象的key值,支持...以拓展深层对象的创建\n */\nexport const judgeAndRegister = (\n source: Map,\n valueType: 'array' | 'object',\n ...keys: any[]\n): Map => {\n let currSource = source\n for (const key of keys) {\n if (!Object.hasOwnProperty.call(currSource, key)) {\n currSource[key] = valueType === 'array' ? [] : {}\n }\n currSource = currSource[key]\n }\n return currSource\n}\n\n/**\n * 允许循环引用的深拷贝\n * @param target\n * @param map\n */\nexport function deepClone(target: any, map = new WeakMap()): any {\n if (map.get(target) || target === null || target === undefined) return target\n\n // 针对Date和RegExp等特殊引用类型,直接执行构造函数进行克隆\n const constructor = target.constructor\n if (/^(Date|RegExp)/.test(constructor.name)) {\n return new constructor(target)\n }\n\n if (typeof target === 'object') {\n // 标记当前target已被处理过,避免递归过程中出现循环引用导致栈溢出的文日\n map.set(target, true)\n const res: any = Array.isArray(target) ? [] : {}\n for (const i in target) {\n if (Object.hasOwnProperty.call(target, i)) {\n res[i] = deepClone(target[i], map)\n }\n }\n return res\n } else {\n return target\n }\n}\n\n/**\n * 该方法用于快速向check的shcmea中注入vcontol。方便过滤已经设置的表单\n * @param obj 待注入vontrol的uiSchema对象\n */\nexport function injectVcontrol(obj: Record<string, unknown>): void {\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n switch (typeCheck(i)) {\n case 'Array':\n // 数组的vcontrol统一设置在顶层\n break\n case 'Object':\n injectVcontrol(obj[i] as Record<string, unknown>)\n break\n default: {\n // 只有设置了fieldKey的才需要设置vcontrol和vcontrolDefault\n const fieldKey = obj.fieldKey\n if (fieldKey) {\n setDeepProp(\n ['ui', 'vcontrol'],\n obj,\n 'const {fieldKey,formData,get}=props;return formData.viewMode===\"configured\"?typeof get(fieldKey).data!==\\'number\\'? get(fieldKey).data:true:true'\n )\n }\n break\n }\n }\n }\n }\n}\n\n/**\n * 解析url中?后的参数,返回参数Map\n * @param url\n */\nexport function parseHrefParam(url: string | undefined): Map {\n url = url || window.location.href\n const parseUrl: string[] | null = /(.*)\\?(.*)/.exec(url)\n const res: Map = {}\n\n if (parseUrl && parseUrl[2]) {\n const paramsList = parseUrl[2].split('&')\n for (const str of paramsList) {\n const split = str.split('=')\n\n res[split[0]] = split[1] !== undefined ? split[1] : true\n }\n }\n\n return res\n}\n\nexport function randomString(length: number): string {\n const str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n let result = ''\n for (let i = length; i > 0; --i)\n result += str[Math.floor(Math.random() * str.length)]\n return result\n}\n\n/**\n * 将大于等于零的整数number转成中文汉字\n */\nconst numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']\nconst unitChar = ['', '十', '百', '千']\nconst millionUnitChar = ['', '万', '亿', '万亿', '亿亿']\n// 已万为处理段,该方法处理万以内的数字转成中文\nfunction range2Chinese(range: number): string {\n let numUnitChar = ''\n let tempStr = ''\n let unit = 0\n let isNeedZero = true\n while (range > 0) {\n const currentNum = range % 10\n if (currentNum === 0) {\n if (!isNeedZero) {\n isNeedZero = true\n tempStr = numChar[currentNum] + tempStr\n }\n } else {\n isNeedZero = false\n numUnitChar = numChar[currentNum]\n numUnitChar += unitChar[unit]\n tempStr = numUnitChar + tempStr\n }\n unit++\n range = Math.floor(range / 10)\n }\n return tempStr\n}\nexport function number2Chinese(num: number): string {\n let millionUnit = 0\n let tempStr = ''\n let resStr = ''\n let isNeedZero = false\n if (num === 0) {\n return numChar[0]\n }\n while (num > 0) {\n const range = num % 10000\n if (isNeedZero) {\n resStr = numChar[0] + resStr\n }\n tempStr = range2Chinese(range)\n tempStr += range !== 0 ? millionUnitChar[millionUnit] : millionUnitChar[0]\n resStr = tempStr + resStr\n isNeedZero = range < 1000 && range > 0\n num = Math.floor(num / 10000)\n millionUnit++\n }\n return resStr\n}\n\n// TODO 更新Read more文档\nexport function upgradeTips(oldApiName: string, newApiName: string): void {\n console.warn(\n `${oldApiName}: The current usage is about to discard after the next main version is upgraded, please use ${newApiName}! `\n )\n}\n\n// 转换数组\nexport function toArray(param: string | Array<string>): Array<string> {\n return Array.isArray(param) ? param : [param]\n}\n\n// 处理容器宽度\nexport const handleMargin = (style: CSSProperties): void => {\n const { margin, width } = style\n let marginRight = style.marginRight || '0px'\n let marginLeft = style.marginLeft || '0px'\n if (width) {\n if (margin) {\n if (typeof margin === 'string') {\n const marginArr = margin.trim().split(' ')\n if (marginArr.length === 1) {\n marginRight = margin\n marginLeft = margin\n }\n if (marginArr.length === 2 || marginArr.length === 3) {\n marginRight = marginArr[1]\n marginLeft = marginArr[1]\n }\n if (marginArr.length === 4) {\n marginRight = marginArr[1]\n marginLeft = marginArr[3]\n }\n }\n }\n marginRight = marginRight === '0' ? '0px' : marginRight\n marginLeft = marginLeft === '0' ? '0px' : marginLeft\n style.width = `calc(${style.width} - ${marginRight} - ${marginLeft})`\n }\n}\n\n/**\n * 根据uiSchema,获取当前schem相对的主题和组件类型\n * @param uiSchema\n * @returns\n */\nexport const getThemeAndType = (\n uiSchema: {\n type: string\n theme?: string\n } & Map\n): string => {\n const { type, theme } = uiSchema\n const [, newType] = type.split('::')\n // v0未区分容器和组件概念,需要做判断\n if (['root', 'object', 'array'].includes(newType || type)) {\n return newType || type\n } else {\n return newType ? type : `${theme}::${type}`\n }\n}\n\nexport function isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\nexport function removeSpaceAndmakeStringCamelCase(string: string) {\n const regex = /\\s+(\\w)?/gi\n const output = string.toLowerCase().replace(regex, function (match, letter) {\n return letter ? letter.toUpperCase() : ''\n })\n return output\n}\n","/**\n * 将二进制流数据转成base64格式的数据\n *\n * @param file\n */\nexport function binaryData2Blob(\n file: File\n): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.readAsDataURL(file)\n reader.onload = function () {\n resolve(this.result)\n }\n reader.onerror = function (err) {\n reject(err)\n }\n })\n}\n\n/**\n * 将base64g格式的图片地址转成img图片对象\n *\n * @param {string} imgBase64Url\n */\nexport function getImgEl(imgBase64Url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n resolve(img)\n }\n img.onerror = function (err) {\n reject(err)\n }\n img.src = imgBase64Url\n })\n}\n\n// 尺寸限制\nexport type ImgDimension = Partial<{\n width: number\n height: number\n minWidth: number\n minHeight: number\n maxWidth: number\n maxHeight: number\n widthDivisor: number\n heightDivisor: number\n widthHeightEqual: boolean\n}>\n// 大小限制\nexport type ImgSize = Partial<{\n max: number\n min: number\n}>\n\nconst isValidFileUploaded = (file: File, accept: string = '') => {\n if (accept) {\n const validExtensions = accept.split(',')\n const fileExtension = file.type.split('/')[1]\n const fileName = file.name.split('.')\n let fileNameExtension = ''\n if (fileName.length) {\n fileNameExtension = fileName[fileName.length - 1]\n }\n return (\n validExtensions.includes(`.${fileExtension}`) ||\n validExtensions.includes(`.${fileNameExtension}`)\n )\n }\n return true\n}\n\nexport async function checkImg({\n file,\n dimension,\n size,\n accept,\n errMsg,\n}: {\n file: File\n dimension?: ImgDimension\n size?: ImgSize\n accept?: string\n errMsg?: Partial<{\n dimension: string\n size: string\n type: string\n }>\n}): Promise<{ isOk: boolean; errors: Array<string> }> {\n let isOk: string | boolean = true\n const errors: Array<string> = []\n const {\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n widthDivisor,\n heightDivisor,\n widthHeightEqual,\n } = dimension || {}\n const { max, min } = size || {}\n // 尺寸校验\n try {\n const imgBase64Url = await binaryData2Blob(file)\n if (imgBase64Url) {\n const { naturalHeight, naturalWidth } = await getImgEl(\n imgBase64Url as string\n )\n\n let count = 0\n\n width && count++\n minWidth && count++\n maxWidth && count++\n widthDivisor && count++\n height && count++\n minHeight && count++\n maxHeight && count++\n heightDivisor && count++\n widthHeightEqual && count++\n\n if (width && width === naturalWidth) count--\n if (minWidth && minWidth <= naturalWidth) count--\n if (maxWidth && maxWidth >= naturalWidth) count--\n if (widthDivisor && naturalWidth % widthDivisor === 0) count--\n\n if (height && height === naturalHeight) count--\n if (minHeight && minHeight <= naturalHeight) count--\n if (maxHeight && maxHeight >= naturalHeight) count--\n if (heightDivisor && naturalHeight % heightDivisor === 0) count--\n\n if (widthHeightEqual === true && naturalHeight === naturalWidth) count--\n\n if (count !== 0) {\n errors.push(errMsg?.dimension || '图片尺寸校验未通过')\n isOk = false\n }\n }\n } catch (error) {\n console.error(error)\n }\n // 大小校验\n if (min && min >= file.size) {\n errors.push(errMsg?.size || '图片大小校验未通过')\n isOk = false\n } else if (max && max * 1024 <= file.size) {\n let size = file.size\n let message = ''\n if (max > 1024) {\n size = max / 1024\n message = `${size.toFixed(1)} mb`\n } else {\n message = `${max} kb`\n }\n errors.push(\n errMsg?.size ||\n `File size exceeds limit, the file must be smaller than ${message}`\n )\n isOk = false\n }\n if (!isValidFileUploaded(file, accept || '')) {\n errors.push(errMsg?.type || 'File type is not supported')\n isOk = false\n }\n return { isOk, errors }\n}\n","/**\n * 联合Schema解析函数\n */\nimport { typeCheck, setDeepProp } from '../common'\nimport { UiSchema, UnitedSchema, DataSchema, TypePath } from './types'\nimport _ from 'lodash'\nimport type { Map } from '../common/type'\n\n/**\n * 递归解析\n */\nfunction initParse({\n unitedSchema,\n parentType,\n idx,\n // 父级uiSchema\n parentUiSchema,\n // 父级dataSchema\n parentDataSchema,\n customProps,\n typePath,\n parentTypePath = '',\n index,\n}: {\n unitedSchema: UnitedSchema\n parentType?: 'array' | 'tuple' | 'object'\n idx?: string\n parentUiSchema: UiSchema\n parentDataSchema: DataSchema\n customProps: string[]\n typePath: Map\n parentTypePath?: string\n index?: string | number\n}) {\n // 当前uiSchema\n let curUiSchema = parentUiSchema\n // 当前dataSchema\n let curDataSchema = parentDataSchema\n // 当前的typePath的key\n let curTypePath = parentTypePath\n // 非第一次调用initParse\n if (idx) {\n // 设置typePath\n curTypePath = parentTypePath ? `${parentTypePath}.${idx}` : idx\n typePath[curTypePath] = {\n fatherKey: parentTypePath,\n title: unitedSchema.title || '',\n type: unitedSchema.type,\n unitedSchemaKey: `${\n typePath[parentTypePath]?.unitedSchemaKey\n ? `${typePath[parentTypePath]?.unitedSchemaKey}.`\n : ''\n }${parentType == 'object' ? 'schema' : 'items'}${\n index !== '$container' ? `.${index}` : ''\n }`,\n }\n } else {\n // 设置根元素的typePath\n if (unitedSchema.fieldKey) {\n typePath[unitedSchema.fieldKey] = {\n type: unitedSchema.type,\n unitedSchemaKey: '',\n fatherKey: '',\n }\n }\n // 根元素type默认为object\n curDataSchema.type = 'object'\n }\n // ui:开头的\n const uiReg = /^ui:/\n // 是否是uiSchema中的属性\n const isUiProp = (key: string): boolean => {\n // 需要丢到uiSchema中的属性\n const uiSchemaKeys = ['footer', 'theme', 'containerStyle', 'formMode', 'ui']\n return uiSchemaKeys.includes(key) || uiReg.test(key)\n }\n Object.entries(unitedSchema).map(([key, value]) => {\n // 设置uiSchema\n if (isUiProp(key)) {\n // 非第一次调用initParse\n if (idx) {\n const path = ['properties', idx]\n setDeepProp(path, parentUiSchema, {})\n curUiSchema = parentUiSchema.properties[idx] as UiSchema\n // 设置order\n const order = _.get(parentUiSchema, 'order', [] as string[])\n // 避免重复fieldKey\n if (!order.includes(idx)) {\n order.push(idx)\n }\n parentUiSchema.order = order\n }\n // 设置ui:开头的ui属性,ui:{}优先级更高\n if (uiReg.test(key)) {\n curUiSchema[key.slice(3)] =\n ((unitedSchema?.ui || {}) as Map)[key.slice(3)] || value\n } else if (key === 'ui') {\n // 设置ui:{}中的属性\n Object.entries(value).map(([key, value]) => {\n curUiSchema[key] = value\n })\n } else {\n curUiSchema[key] = value\n }\n } else {\n // 设置dataSchema\n // 非第一次调用initParse\n if (idx) {\n switch (parentType) {\n case 'object': {\n const path = ['properties', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = (\n parentDataSchema.properties as Record<string, DataSchema>\n )[idx]\n break\n }\n case 'array': {\n const path = ['items']\n setDeepProp(\n ['items'],\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = parentDataSchema.items as DataSchema\n break\n }\n case 'tuple': {\n const path = ['items', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {}),\n { items: { type: 'array' } }\n )\n curDataSchema = (parentDataSchema.items as DataSchema[])[\n Number(idx)\n ]\n break\n }\n default:\n break\n }\n }\n switch (key) {\n case 'requiredMsg':\n // 设置父级,只有对象才有\n if (parentType === 'object' && idx) {\n // 设置order\n const required = _.get(parentDataSchema, 'required', [] as string[])\n // 避免重复fieldKey\n if (!required.includes(idx)) {\n required.push(idx)\n }\n parentDataSchema.required = required\n setDeepProp(\n ['errorMessage', 'required', idx],\n parentDataSchema,\n value\n )\n }\n break\n // 错误信息配置\n case 'errMsg':\n curDataSchema.errorMessage = value\n break\n // 以下字段 items、 schema、fieldKey 不设置到dataSchema中\n case 'items':\n case 'schema':\n case 'fieldKey':\n break\n default:\n // 设置customProps\n if (/^\\$:/.test(key)) {\n customProps.push(key)\n }\n curDataSchema[key] = value\n break\n }\n }\n })\n\n // 当前表单嵌套类型 'schema'为object|'items'为array\n let type = 'object'\n if (unitedSchema.items) {\n type = 'array'\n }\n switch (type) {\n case 'object': {\n // 处理通用逻辑\n // 对schema处理(子表单处理,递归)\n unitedSchema.schema?.map((childUnitedSchema, i) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: childUnitedSchema.fieldKey,\n parentType: 'object',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n parentTypePath: curTypePath,\n customProps,\n typePath,\n index: i,\n })\n })\n break\n }\n case 'array': {\n // 处理通用逻辑\n // 对items处理(子表单处理,递归)\n const item = unitedSchema.items\n const type = typeCheck(item)\n // 普通数组\n if (type === 'Object') {\n initParse({\n unitedSchema: item as UnitedSchema,\n idx: '$container',\n parentType: 'array',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: '$container',\n })\n } else if (type === 'Array') {\n // 元祖\n item?.map((childUnitedSchema: UnitedSchema, i: number) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: String(i),\n parentType: 'tuple',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: i,\n })\n })\n }\n break\n }\n default:\n break\n }\n}\n\n/**\n * 解析联合Schema\n * @param unitedSchema\n */\nconst parseUnitedSchema = (\n unitedSchema: UnitedSchema\n): {\n uiSchema: UiSchema\n dataSchema: DataSchema\n typePath: TypePath\n customProps: string[]\n} => {\n const dataSchema = {} as DataSchema\n const uiSchema = {} as UiSchema\n // 用来存储每个表单项对应的type值,如果是嵌套格式,则解析为 { a: 'object', 'a.b': 'object', 'a.b.c': 'array' }\n const typePath = {}\n // $:的自定义属性,仅统计dataSchema的\n const customProps: string[] = []\n\n initParse({\n unitedSchema,\n parentUiSchema: uiSchema,\n parentDataSchema: dataSchema,\n customProps,\n typePath,\n })\n\n return {\n dataSchema,\n uiSchema,\n typePath,\n customProps: [...new Set(customProps)],\n }\n}\n\nexport { parseUnitedSchema }\n","import { UiSchema, DataSchema, UnitedSchema } from './types'\nimport { deepClone, isEmpty } from '../common'\nimport type { Map } from '../common/type'\n\ntype Options = Partial<{\n // 是否开启$fieldKey值转换为fieldKey(默认不开启,generator中viewport区域需要开启)\n $fieldKey: boolean\n}>\n\nconst needToHandledKeywords = [\n 'required',\n 'errorMessage',\n 'items',\n 'schema',\n 'properties',\n 'order',\n]\n\nconst needToSetToRootUi = ['theme']\n\n/**\n * 值拷贝\n * @param targetObj\n * @param rawObj\n * @param dataType\n */\nfunction valueClone({\n targetObj,\n rawObj,\n dataType,\n fromRoot,\n}: {\n targetObj: Map\n rawObj: Map\n dataType?: string\n fromRoot?: boolean\n}): void {\n for (const key in rawObj) {\n if (rawObj[key] === null || typeof rawObj[key] !== 'object') {\n if (fromRoot && key === 'theme') {\n //\n } else {\n targetObj[key] = rawObj[key]\n }\n } else if (\n !needToHandledKeywords.includes(key) &&\n !needToSetToRootUi.includes(key)\n ) {\n // 非特殊字段可使用深拷贝,比如title, containerStyle\n targetObj[key] = deepClone(rawObj[key])\n }\n }\n\n if (dataType && Object.hasOwnProperty.call(rawObj, 'errorMessage')) {\n targetObj.errMsg = deepClone(rawObj.errorMessage)\n if (targetObj.errMsg.required) {\n delete targetObj.errMsg.required\n if (Object.keys(targetObj.errMsg).length === 0) {\n delete targetObj.errMsg\n }\n }\n }\n}\n\n/**\n * 递归合并\n * @param dataSchema\n * @param uiSchema\n * @param schema\n * @param fromRoot\n */\nfunction recursionCombine({\n dataSchema,\n uiSchema,\n schema,\n fromRoot,\n options,\n}: {\n dataSchema: DataSchema\n uiSchema: UiSchema\n schema: Map\n fromRoot?: boolean\n options?: Options\n}) {\n // 先拷贝ui和data的值类型属性或非特殊对象类型属性,比如title, containerStyle\n valueClone({\n targetObj: schema,\n rawObj: dataSchema,\n dataType: dataSchema.type,\n })\n // uiSchema非空时进行拷贝\n if (!isEmpty(uiSchema)) {\n // 填充ui属性,用于存放uiSchema\n if (!Object.hasOwnProperty.call(schema, 'ui')) {\n schema.ui = {}\n }\n\n // 如果是根路径的,需要处理特殊字段\n if (fromRoot) {\n needToSetToRootUi.forEach((key) => {\n if (Object.hasOwnProperty.call(uiSchema, key)) {\n schema[key] = uiSchema[key]\n }\n })\n }\n\n valueClone({ targetObj: schema.ui, rawObj: uiSchema, fromRoot })\n\n if (isEmpty(schema.ui)) {\n delete schema.ui\n }\n }\n\n // 如果有order,则根据order填充联合schema\n if (Object.hasOwnProperty.call(uiSchema, 'order')) {\n // 子项需要填充到联合schema的哪个prop下\n // 当父节点类型为array时应为items,否则为schema\n const toSchemaProp = dataSchema.type === 'array' ? 'items' : 'schema'\n\n // 因为子项的错误信息在dataSchema中,此处需要进行处理\n const required = dataSchema.required,\n errorMessage = dataSchema.errorMessage,\n msgMap = {} as Map\n\n if (typeof errorMessage === 'object') {\n const requireMsg = errorMessage.required\n const errMsg =\n errorMessage[toSchemaProp === 'items' ? 'items' : 'properties']\n\n // 收集必填的错误提示\n if (required) {\n for (const fk of required) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n requiredMsg: requireMsg[fk],\n }\n }\n }\n\n // 收集校验的错误提示\n if (errMsg) {\n for (const fk in errMsg) {\n if (Object.hasOwnProperty.call(errMsg, fk)) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n // 注意errMsg[fk]可能为string或对象,因此需要深拷贝\n errMsg: deepClone(errMsg[fk]),\n }\n }\n }\n }\n }\n\n // 遍历order的fieldKey\n for (let fieldKey of uiSchema.order) {\n // 根据fieldKey获取子项的schema\n const subUiSchema = uiSchema.properties[fieldKey]\n // 初始化子项的dataSchema\n let subDataSchema: Array<Map> | Map = dataSchema\n\n // 根据dataSchema(父节点)中的type字段判断在联合schema中,子项以什么形式存在\n // array需读取dataSchema的items,object需读取properties\n if (fieldKey === '$container') {\n subDataSchema = subDataSchema.items\n } else if (dataSchema.type === 'array') {\n subDataSchema = subDataSchema.items[fieldKey]\n } else {\n subDataSchema = subDataSchema.properties[fieldKey]\n }\n\n // 初始化待填充的表单项\n const fieldItem = {} as Map\n // 开始递归\n recursionCombine({\n dataSchema: subDataSchema as DataSchema,\n uiSchema: subUiSchema as UiSchema,\n schema: fieldItem,\n options,\n })\n\n if (msgMap[fieldKey]) {\n Object.assign(fieldItem, msgMap[fieldKey])\n }\n\n // 将递归完成的fieldItem填充到父组件的prop中\n if (toSchemaProp === 'items' && !Array.isArray(dataSchema?.items)) {\n // 对于元组类型,items应为 {}\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = {}\n }\n\n schema[toSchemaProp] = fieldItem\n } else {\n // 其余类型应为数组\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = []\n }\n\n if (toSchemaProp === 'schema') {\n // 对于容器类型的子项,需要填充fieldKey\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (\n Object.prototype.hasOwnProperty.call(subDataSchema, '$fieldKey') &&\n options &&\n options['$fieldKey']\n ) {\n fieldKey = (subDataSchema as Map)['$fieldKey']\n delete fieldItem['$fieldKey']\n }\n fieldItem.fieldKey = fieldKey\n }\n\n schema[toSchemaProp].push(fieldItem)\n }\n }\n } else {\n // 如果没有order,但数据类型为array且dataSchema中有配置items的,将items拷贝至联合schema\n // fix: 时间选择器combine后属性丢失的问题\n if (dataSchema.type === 'array' && !isEmpty(dataSchema.items)) {\n schema.items = dataSchema.items\n }\n }\n}\n\n/**\n * 融合dataSchema和uiSchema为联合Schema\n */\nfunction combine(\n dataSchema: DataSchema,\n uiSchema: UiSchema,\n options?: Options\n): UnitedSchema {\n const unitedSchema = {}\n\n recursionCombine({\n dataSchema,\n uiSchema,\n schema: unitedSchema,\n fromRoot: true,\n options,\n })\n\n return unitedSchema\n}\n\nexport { combine }\n","/*\n * schema.flow 字段处理成联动语法\n * @Author: jiangxiaowei\n * @Date: 2022-07-12 15:13:44\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-23 23:49:26\n */\nimport stringify from 'js-stringify'\nimport type { Flow, ControlFlowAction } from './type'\n\nconst commonStr = 'const {get,set,merge,setDeepProp,changeKey}=props;'\n\nconst getFileKeyToString = (fieldKey: string) => {\n const [newFieldKey, type, property] = fieldKey.trim().split(' ')\n return property\n ? `get('${newFieldKey}').${type}?.${property}`\n : `get('${newFieldKey}').${type}`\n}\n\n// TODO else实现\n// TODO effect subAction实现\nconst parseControlFlow = (\n action: ControlFlowAction,\n flowStr: string\n): string => {\n // if的条件语句\n let condintionStr = ''\n // if判断成功,执行的语句\n let effectStr = ''\n action.condintion.map((condintion, index, condintions) => {\n if (!condintion.fieldKey1) return\n // 是否取反\n const non = condintion.operator.startsWith('-')\n // 去掉 - 之后的字符(例子:前 -includes 后:includes)\n let operator = non ? condintion.operator.slice(1) : condintion.operator\n if (['true', 'false'].includes(operator)) {\n operator = '==='\n }\n\n // 需要前面加.的操作符\n const isdotOperator = ['includes', 'in'].includes(operator)\n // change是特殊的判断\n const operatorStr =\n operator === 'change'\n ? `('${condintion.fieldKey1.trim().split(' ').shift()}'===changeKey)`\n : `(${getFileKeyToString(condintion.fieldKey1)}${\n isdotOperator ? '?.' : ''\n }${operator}${\n ['true', 'false'].includes(condintion.operator)\n ? condintion.operator\n : `${stringify(condintion.value2)}`\n })`\n condintionStr += `${operatorStr}${\n condintion.logicOperator && index != condintions.length - 1\n ? condintion.logicOperator\n : ''\n }`\n })\n action.effect.map((effect) => {\n // 转换set类型并过滤空的fieldKey\n if (effect.type === 'set' && effect.fieldKey) {\n const [fieldKey, subType, property] = effect.fieldKey.trim().split(' ')\n effectStr +=\n `set('${fieldKey}','${subType}',${\n property\n ? `(oldValue)=>{\n ${\n property == 'queryConfig.refreshId'\n ? 'let newRefreshId=oldValue?.queryConfig?.refreshId||0;newRefreshId++;'\n : ''\n }\n setDeepProp(${stringify(property.split('.'))},oldValue,${\n property === 'vcontrol'\n ? stringify(\n `const {get}=props;return ${\n effect.value ? condintionStr : `!(${condintionStr})`\n }`\n )\n : property == 'queryConfig.refreshId'\n ? 'newRefreshId'\n : stringify(effect.value)\n })\n }`\n : stringify(effect.value)\n }` + ');'\n }\n })\n\n if (condintionStr) {\n flowStr += `if(${condintionStr}){${effectStr}};`\n }\n return flowStr\n}\n\nexport const parseFlow = (flow: Flow): string => {\n let flowStr = ''\n //TODO trigger.event支持其他类型后,需对一期默认的globalChange兼容\n // 解析flow.actions\n flow.actions.map((action) => {\n switch (action.type) {\n case 'controlFlow':\n flowStr += parseControlFlow(action, flowStr)\n break\n default:\n break\n }\n })\n return commonStr + flowStr\n}\n","import { FetchApi, GetApi, PostApi } from './type'\nimport { message } from 'antd'\n\nconst request = async (url: string, config: RequestInit) => {\n if (!window.fetch) {\n throw '浏览器版本过低'\n }\n try {\n const res = await fetch(url, config)\n if (res.ok) {\n const data = await res.json()\n return data\n } else {\n console.error('请求失败')\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nconst get: GetApi<unknown> = ({ params, url }) => {\n const { search, origin, hash, pathname } = new URL(url)\n const searchParams = new URLSearchParams(search)\n Object.entries(params).map(([key, value]) => {\n searchParams.set(key, value)\n })\n const newSearchParams = searchParams.toString()\n return request(\n `${origin}${pathname}${\n newSearchParams ? `?${newSearchParams}` : ''\n }${hash}`,\n {\n method: 'GET',\n }\n )\n}\n\nconst post: PostApi<unknown> = ({ params, url }) => {\n return request(url, {\n method: 'POST',\n body: JSON.stringify(params),\n })\n}\n\nexport const fetchFn: FetchApi = ({ params: oldParams, url, method }) => {\n const params: Record<string, unknown> = {}\n oldParams.map(({ key, value }) => {\n params[key] = value\n })\n switch (method.toUpperCase()) {\n case 'GET':\n return get({ params, url })\n case 'POST':\n return post({ params, url })\n default:\n throw new Error('不支持改请求类型')\n }\n}\n\nexport const fetchFnJsonKey = async ({\n config,\n dataHandler = null,\n dataSetter = null,\n doFinally = null,\n}: {\n config: any\n dataHandler?: Function | null | undefined\n dataSetter?: Function | null | undefined\n doFinally?: Function | null | undefined\n}) => {\n let auth = config?.headers?.Authorization || ''\n if (localStorage.getItem('jwtToken')) {\n auth = `Bearer ${localStorage.getItem('jwtToken')}`\n }\n if (config?.token) {\n auth = `Bearer ${config?.token}`\n }\n const fetchConfig: RequestInit = {\n method: config.method,\n headers: {\n ...config?.headers,\n Authorization: auth,\n },\n }\n if (config?.body) {\n fetchConfig.body = config.body\n }\n await request(config.url, fetchConfig)\n .then((res: any) => {\n let data\n if (config.jsonkey) {\n const jsonKeyVals = config.jsonkey.split('.')\n if (jsonKeyVals.length === 1) {\n data = res?.[jsonKeyVals[0]]\n } else if (jsonKeyVals.length === 2) {\n data = res?.[jsonKeyVals[0]]?.[jsonKeyVals[1]]\n }\n } else {\n data = res\n }\n if (dataHandler) {\n dataHandler(\n (data || []).map((item: any) => ({\n label: item[config.labelKey],\n value: item[config.valueKey],\n }))\n )\n }\n if (dataSetter) {\n dataSetter(data)\n }\n })\n .catch((error) => {\n console.error('Error:', error)\n })\n .finally(() => {\n if (doFinally) {\n doFinally()\n }\n })\n}\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:24\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-24 16:33:13\n */\nimport _ from 'lodash'\nexport const isEqual = _.isEqual\nexport const get = _.get\nexport * from './common'\nexport * from './common/type'\nexport * from './image'\nexport * from './schemaHandle/parse'\nexport * from './schemaHandle/combine'\nexport * from './schemaHandle/types'\nexport * from './type'\nexport * from './flowHandle'\nexport * from './flowHandle/type'\nexport * from './fetch'\nexport * from './fetch/type'\n"],"names":["get"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/common/index.ts","../../src/image.ts","../../src/schemaHandle/parse.ts","../../src/schemaHandle/combine.ts","../../src/flowHandle/index.ts","../../src/fetch/index.ts","../../src/index.ts"],"sourcesContent":["/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:13\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-07-22 13:46:08\n */\nimport { CSSProperties } from 'react'\nimport type { Map } from './type'\n\n/**\n * 生成fieldkey的正则\n * 根据a.0.b 返回/a.(\\d+|$container).b/正则\n * @param arr <Array> 需要生成正则的数组\n * @returns 返回正则\n */\nexport const generateReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index, arr) => {\n if (Number.isNaN(parseInt(cur))) {\n return `${prev}${index !== 0 ? '\\\\.' : ''}${arr[index].replace(\n /\\$/g,\n '\\\\$'\n )}`\n } else {\n return `${index !== 0 ? `${prev}\\\\.` : ''}(${cur}|\\\\$container)`\n }\n }, '')\n return new RegExp(`^${regStr}$`, 'ig')\n}\n\n/**\n * 用于删除、切换数组排序的arraykey\n * @param arr\n * @returns\n */\nexport const generateArrayKeyReg = (arr: Array<string>): RegExp => {\n const regStr = arr.reduce((prev: string, cur: string, index) => {\n if (index === arr.length - 1) {\n return `${prev})\\\\.(\\\\d)+`\n }\n return `${index !== 0 ? `${prev}\\\\.` : ''}${cur}`\n })\n return new RegExp(`^(${regStr}(\\\\..+)+`, 'ig')\n}\n\n/**\n * 基本数据类型检测\n * @param {unknown} checkVar 待检测的变量\n * @returns {string} 基本数据类型:Object | Array | String | Number | Boolean | Null | Undefined\n */\nexport function typeCheck(checkVar: any): string {\n const typeClass = Object.prototype.toString.call(checkVar)\n\n return typeClass.split(' ')[1].split(']')[0]\n}\n\n/**\n * 判断变量是否为空\n * @param checkVar\n */\nexport function isEmpty(checkVar: any): boolean {\n let empty = false\n const varType: string = typeCheck(checkVar)\n\n switch (varType) {\n case 'Number':\n case 'Boolean':\n empty = false\n break\n case 'Null':\n case 'Undefined':\n empty = true\n break\n case 'Array':\n case 'String':\n empty = checkVar.length === 0\n break\n default: {\n const keys = Object.keys(checkVar)\n empty = keys.length === 0\n }\n }\n\n return empty\n}\n\n/**\n * 设置data.a.b.c = value\n * 若data没有a.b 则依次赋值空对象,最后再将a.b.c设为value\n * @param {string} keys a.b.c\n * @param {object} data data.a.b.c\n * @param {unknown} value data.a.b.c = value\n * @param {object} typeMap 确定a.0.b.1中的0和1的父级应该是对象还是数组形式\n * @param parentKey\n */\nexport const setDeepProp = (\n keys: string[],\n data: Map,\n value: unknown,\n typeMap?: Map,\n parentKey?: Array<string>\n): void => {\n if (keys.length === 0) {\n return\n }\n // 取出keys的第一个元素作为当前待填充的key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n if (keys.length > 0) {\n const hasKey = Object.keys(data).includes(curKey)\n if (!hasKey) {\n if (typeMap) {\n const typeKey = Object.keys(typeMap).find((item) => {\n return generateReg(\n parentKey ? parentKey.concat(curKey) : [curKey]\n ).test(item)\n })\n // 根据typeMap判断当前是数组还是对象,兜底逻辑为对象\n if (typeKey) {\n switch (typeMap[typeKey].type) {\n case 'array':\n data[curKey] = []\n break\n case 'object':\n data[curKey] = {}\n break\n }\n } else {\n // TODO @jiangxiaowei 开启需要render函数支持 暂时不支持fieldkey包含.\n // data[curKey] = {}\n }\n } else {\n // typeMap未定义当前curKey时,默认认为是对象\n data[curKey] = {}\n }\n }\n setDeepProp(\n keys,\n data[curKey],\n value,\n typeMap,\n (parentKey || []).concat(curKey)\n )\n } else {\n data[curKey] = value\n }\n}\n\n/**\n * 删除data.a.b.c\n * 若data没有a.b.c,则不进行任何操作\n * @param {string} keys [a,b,c]\n * @param {object} data 需要删除的对象\n */\nexport const deleteDeepProp = (keys: string[], data: Map): void => {\n if (keys.length === 0) return\n // 当前key\n const curKey: string = keys.shift() as string\n // data是否有当前key\n const hasKey = Object.keys(data).includes(curKey)\n if (keys.length > 0) {\n if (!hasKey) {\n return\n }\n deleteDeepProp(keys, data[curKey])\n } else {\n if (Array.isArray(data) && !Number.isNaN(parseInt(curKey))) {\n data.splice(parseInt(curKey), 1)\n } else {\n delete data[curKey]\n }\n }\n}\n\n/**\n * 判断对象是否有某一属性,如没有,则根据valueType为其创建\n * 并返回最后一个key的校验生成后的value\n * @param {Map} source 源对象\n * @param {'array' | 'object'} valueType 创建的类型\n * @param {array} keys 对象的key值,支持...以拓展深层对象的创建\n */\nexport const judgeAndRegister = (\n source: Map,\n valueType: 'array' | 'object',\n ...keys: any[]\n): Map => {\n let currSource = source\n for (const key of keys) {\n if (!Object.hasOwnProperty.call(currSource, key)) {\n currSource[key] = valueType === 'array' ? [] : {}\n }\n currSource = currSource[key]\n }\n return currSource\n}\n\n/**\n * 允许循环引用的深拷贝\n * @param target\n * @param map\n */\nexport function deepClone(target: any, map = new WeakMap()): any {\n if (map.get(target) || target === null || target === undefined) return target\n\n // 针对Date和RegExp等特殊引用类型,直接执行构造函数进行克隆\n const constructor = target.constructor\n if (/^(Date|RegExp)/.test(constructor.name)) {\n return new constructor(target)\n }\n\n if (typeof target === 'object') {\n // 标记当前target已被处理过,避免递归过程中出现循环引用导致栈溢出的文日\n map.set(target, true)\n const res: any = Array.isArray(target) ? [] : {}\n for (const i in target) {\n if (Object.hasOwnProperty.call(target, i)) {\n res[i] = deepClone(target[i], map)\n }\n }\n return res\n } else {\n return target\n }\n}\n\n/**\n * 该方法用于快速向check的shcmea中注入vcontol。方便过滤已经设置的表单\n * @param obj 待注入vontrol的uiSchema对象\n */\nexport function injectVcontrol(obj: Record<string, unknown>): void {\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n switch (typeCheck(i)) {\n case 'Array':\n // 数组的vcontrol统一设置在顶层\n break\n case 'Object':\n injectVcontrol(obj[i] as Record<string, unknown>)\n break\n default: {\n // 只有设置了fieldKey的才需要设置vcontrol和vcontrolDefault\n const fieldKey = obj.fieldKey\n if (fieldKey) {\n setDeepProp(\n ['ui', 'vcontrol'],\n obj,\n 'const {fieldKey,formData,get}=props;return formData.viewMode===\"configured\"?typeof get(fieldKey).data!==\\'number\\'? get(fieldKey).data:true:true'\n )\n }\n break\n }\n }\n }\n }\n}\n\n/**\n * 解析url中?后的参数,返回参数Map\n * @param url\n */\nexport function parseHrefParam(url: string | undefined): Map {\n url = url || window.location.href\n const parseUrl: string[] | null = /(.*)\\?(.*)/.exec(url)\n const res: Map = {}\n\n if (parseUrl && parseUrl[2]) {\n const paramsList = parseUrl[2].split('&')\n for (const str of paramsList) {\n const split = str.split('=')\n\n res[split[0]] = split[1] !== undefined ? split[1] : true\n }\n }\n\n return res\n}\n\nexport function randomString(length: number): string {\n const str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n let result = ''\n for (let i = length; i > 0; --i)\n result += str[Math.floor(Math.random() * str.length)]\n return result\n}\n\n/**\n * 将大于等于零的整数number转成中文汉字\n */\nconst numChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']\nconst unitChar = ['', '十', '百', '千']\nconst millionUnitChar = ['', '万', '亿', '万亿', '亿亿']\n// 已万为处理段,该方法处理万以内的数字转成中文\nfunction range2Chinese(range: number): string {\n let numUnitChar = ''\n let tempStr = ''\n let unit = 0\n let isNeedZero = true\n while (range > 0) {\n const currentNum = range % 10\n if (currentNum === 0) {\n if (!isNeedZero) {\n isNeedZero = true\n tempStr = numChar[currentNum] + tempStr\n }\n } else {\n isNeedZero = false\n numUnitChar = numChar[currentNum]\n numUnitChar += unitChar[unit]\n tempStr = numUnitChar + tempStr\n }\n unit++\n range = Math.floor(range / 10)\n }\n return tempStr\n}\nexport function number2Chinese(num: number): string {\n let millionUnit = 0\n let tempStr = ''\n let resStr = ''\n let isNeedZero = false\n if (num === 0) {\n return numChar[0]\n }\n while (num > 0) {\n const range = num % 10000\n if (isNeedZero) {\n resStr = numChar[0] + resStr\n }\n tempStr = range2Chinese(range)\n tempStr += range !== 0 ? millionUnitChar[millionUnit] : millionUnitChar[0]\n resStr = tempStr + resStr\n isNeedZero = range < 1000 && range > 0\n num = Math.floor(num / 10000)\n millionUnit++\n }\n return resStr\n}\n\n// TODO 更新Read more文档\nexport function upgradeTips(oldApiName: string, newApiName: string): void {\n console.warn(\n `${oldApiName}: The current usage is about to discard after the next main version is upgraded, please use ${newApiName}! `\n )\n}\n\n// 转换数组\nexport function toArray(param: string | Array<string>): Array<string> {\n return Array.isArray(param) ? param : [param]\n}\n\n// 处理容器宽度\nexport const handleMargin = (\n style: CSSProperties,\n breakPoint: number,\n screenSize: number\n): void => {\n const { margin, width } = style\n let marginRight = style.marginRight || '0px'\n let marginLeft = style.marginLeft || '0px'\n if (width) {\n if (margin) {\n if (typeof margin === 'string') {\n const marginArr = margin.trim().split(' ')\n if (marginArr.length === 1) {\n marginRight = margin\n marginLeft = margin\n }\n if (marginArr.length === 2 || marginArr.length === 3) {\n marginRight = marginArr[1]\n marginLeft = marginArr[1]\n }\n if (marginArr.length === 4) {\n marginRight = marginArr[1]\n marginLeft = marginArr[3]\n }\n }\n }\n marginRight = marginRight === '0' ? '0px' : marginRight\n marginLeft = marginLeft === '0' ? '0px' : marginLeft\n if (screenSize < breakPoint) {\n style.width = `calc(100% - ${marginRight} - ${marginLeft})`\n } else {\n style.width = `calc(${style.width} - ${marginRight} - ${marginLeft})`\n }\n }\n}\n\n/**\n * 根据uiSchema,获取当前schem相对的主题和组件类型\n * @param uiSchema\n * @returns\n */\nexport const getThemeAndType = (\n uiSchema: {\n type: string\n theme?: string\n } & Map\n): string => {\n const { type, theme } = uiSchema\n const [, newType] = type.split('::')\n // v0未区分容器和组件概念,需要做判断\n if (['root', 'object', 'array'].includes(newType || type)) {\n return newType || type\n } else {\n return newType ? type : `${theme}::${type}`\n }\n}\n\nexport function isValidHttpUrl(string: string) {\n let url\n\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\nexport function removeSpaceAndmakeStringCamelCase(string: string) {\n const regex = /\\s+(\\w)?/gi\n const output = string.toLowerCase().replace(regex, function (match, letter) {\n return letter ? letter.toUpperCase() : ''\n })\n return output\n}\n","/**\n * 将二进制流数据转成base64格式的数据\n *\n * @param file\n */\nexport function binaryData2Blob(\n file: File\n): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.readAsDataURL(file)\n reader.onload = function () {\n resolve(this.result)\n }\n reader.onerror = function (err) {\n reject(err)\n }\n })\n}\n\n/**\n * 将base64g格式的图片地址转成img图片对象\n *\n * @param {string} imgBase64Url\n */\nexport function getImgEl(imgBase64Url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n resolve(img)\n }\n img.onerror = function (err) {\n reject(err)\n }\n img.src = imgBase64Url\n })\n}\n\n// 尺寸限制\nexport type ImgDimension = Partial<{\n width: number\n height: number\n minWidth: number\n minHeight: number\n maxWidth: number\n maxHeight: number\n widthDivisor: number\n heightDivisor: number\n widthHeightEqual: boolean\n}>\n// 大小限制\nexport type ImgSize = Partial<{\n max: number\n min: number\n}>\n\nconst isValidFileUploaded = (file: File, accept: string = '') => {\n if (accept) {\n const validExtensions = accept.split(',')\n const fileExtension = file.type.split('/')[1]\n const fileName = file.name.split('.')\n let fileNameExtension = ''\n if (fileName.length) {\n fileNameExtension = fileName[fileName.length - 1]\n }\n return (\n validExtensions.includes(`.${fileExtension}`) ||\n validExtensions.includes(`.${fileNameExtension}`)\n )\n }\n return true\n}\n\nexport async function checkImg({\n file,\n dimension,\n size,\n accept,\n errMsg,\n}: {\n file: File\n dimension?: ImgDimension\n size?: ImgSize\n accept?: string\n errMsg?: Partial<{\n dimension: string\n size: string\n type: string\n }>\n}): Promise<{ isOk: boolean; errors: Array<string> }> {\n let isOk: string | boolean = true\n const errors: Array<string> = []\n const {\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n widthDivisor,\n heightDivisor,\n widthHeightEqual,\n } = dimension || {}\n const { max, min } = size || {}\n // 尺寸校验\n try {\n const imgBase64Url = await binaryData2Blob(file)\n if (imgBase64Url) {\n const { naturalHeight, naturalWidth } = await getImgEl(\n imgBase64Url as string\n )\n\n let count = 0\n\n width && count++\n minWidth && count++\n maxWidth && count++\n widthDivisor && count++\n height && count++\n minHeight && count++\n maxHeight && count++\n heightDivisor && count++\n widthHeightEqual && count++\n\n if (width && width === naturalWidth) count--\n if (minWidth && minWidth <= naturalWidth) count--\n if (maxWidth && maxWidth >= naturalWidth) count--\n if (widthDivisor && naturalWidth % widthDivisor === 0) count--\n\n if (height && height === naturalHeight) count--\n if (minHeight && minHeight <= naturalHeight) count--\n if (maxHeight && maxHeight >= naturalHeight) count--\n if (heightDivisor && naturalHeight % heightDivisor === 0) count--\n\n if (widthHeightEqual === true && naturalHeight === naturalWidth) count--\n\n if (count !== 0) {\n errors.push(errMsg?.dimension || '图片尺寸校验未通过')\n isOk = false\n }\n }\n } catch (error) {\n console.error(error)\n }\n // 大小校验\n if (min && min >= file.size) {\n errors.push(errMsg?.size || '图片大小校验未通过')\n isOk = false\n } else if (max && max * 1024 <= file.size) {\n let size = file.size\n let message = ''\n if (max > 1024) {\n size = max / 1024\n message = `${size.toFixed(1)} mb`\n } else {\n message = `${max} kb`\n }\n errors.push(\n errMsg?.size ||\n `File size exceeds limit, the file must be smaller than ${message}`\n )\n isOk = false\n }\n if (!isValidFileUploaded(file, accept || '')) {\n errors.push(errMsg?.type || 'File type is not supported')\n isOk = false\n }\n return { isOk, errors }\n}\n","/**\n * 联合Schema解析函数\n */\nimport { typeCheck, setDeepProp } from '../common'\nimport { UiSchema, UnitedSchema, DataSchema, TypePath } from './types'\nimport _ from 'lodash'\nimport type { Map } from '../common/type'\n\n/**\n * 递归解析\n */\nfunction initParse({\n unitedSchema,\n parentType,\n idx,\n // 父级uiSchema\n parentUiSchema,\n // 父级dataSchema\n parentDataSchema,\n customProps,\n typePath,\n parentTypePath = '',\n index,\n}: {\n unitedSchema: UnitedSchema\n parentType?: 'array' | 'tuple' | 'object'\n idx?: string\n parentUiSchema: UiSchema\n parentDataSchema: DataSchema\n customProps: string[]\n typePath: Map\n parentTypePath?: string\n index?: string | number\n}) {\n // 当前uiSchema\n let curUiSchema = parentUiSchema\n // 当前dataSchema\n let curDataSchema = parentDataSchema\n // 当前的typePath的key\n let curTypePath = parentTypePath\n // 非第一次调用initParse\n if (idx) {\n // 设置typePath\n curTypePath = parentTypePath ? `${parentTypePath}.${idx}` : idx\n typePath[curTypePath] = {\n fatherKey: parentTypePath,\n title: unitedSchema.title || '',\n type: unitedSchema.type,\n unitedSchemaKey: `${\n typePath[parentTypePath]?.unitedSchemaKey\n ? `${typePath[parentTypePath]?.unitedSchemaKey}.`\n : ''\n }${parentType == 'object' ? 'schema' : 'items'}${\n index !== '$container' ? `.${index}` : ''\n }`,\n }\n } else {\n // 设置根元素的typePath\n if (unitedSchema.fieldKey) {\n typePath[unitedSchema.fieldKey] = {\n type: unitedSchema.type,\n unitedSchemaKey: '',\n fatherKey: '',\n }\n }\n // 根元素type默认为object\n curDataSchema.type = 'object'\n }\n // ui:开头的\n const uiReg = /^ui:/\n // 是否是uiSchema中的属性\n const isUiProp = (key: string): boolean => {\n // 需要丢到uiSchema中的属性\n const uiSchemaKeys = [\n 'footer',\n 'theme',\n 'containerStyle',\n 'formMode',\n 'ui',\n 'token',\n 'themeColor',\n ]\n return uiSchemaKeys.includes(key) || uiReg.test(key)\n }\n Object.entries(unitedSchema).map(([key, value]) => {\n // 设置uiSchema\n if (isUiProp(key)) {\n // 非第一次调用initParse\n if (idx) {\n const path = ['properties', idx]\n setDeepProp(path, parentUiSchema, {})\n curUiSchema = parentUiSchema.properties[idx] as UiSchema\n // 设置order\n const order = _.get(parentUiSchema, 'order', [] as string[])\n // 避免重复fieldKey\n if (!order.includes(idx)) {\n order.push(idx)\n }\n parentUiSchema.order = order\n }\n // 设置ui:开头的ui属性,ui:{}优先级更高\n if (uiReg.test(key)) {\n curUiSchema[key.slice(3)] =\n ((unitedSchema?.ui || {}) as Map)[key.slice(3)] || value\n } else if (key === 'ui') {\n // 设置ui:{}中的属性\n Object.entries(value).map(([key, value]) => {\n curUiSchema[key] = value\n })\n } else {\n curUiSchema[key] = value\n }\n } else {\n // 设置dataSchema\n // 非第一次调用initParse\n if (idx) {\n switch (parentType) {\n case 'object': {\n const path = ['properties', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = (\n parentDataSchema.properties as Record<string, DataSchema>\n )[idx]\n break\n }\n case 'array': {\n const path = ['items']\n setDeepProp(\n ['items'],\n parentDataSchema,\n _.get(parentDataSchema, path, {})\n )\n curDataSchema = parentDataSchema.items as DataSchema\n break\n }\n case 'tuple': {\n const path = ['items', idx]\n setDeepProp(\n path,\n parentDataSchema,\n _.get(parentDataSchema, path, {}),\n { items: { type: 'array' } }\n )\n curDataSchema = (parentDataSchema.items as DataSchema[])[\n Number(idx)\n ]\n break\n }\n default:\n break\n }\n }\n switch (key) {\n case 'requiredMsg':\n // 设置父级,只有对象才有\n if (parentType === 'object' && idx) {\n // 设置order\n const required = _.get(parentDataSchema, 'required', [] as string[])\n // 避免重复fieldKey\n if (!required.includes(idx)) {\n required.push(idx)\n }\n parentDataSchema.required = required\n setDeepProp(\n ['errorMessage', 'required', idx],\n parentDataSchema,\n value\n )\n }\n break\n // 错误信息配置\n case 'errMsg':\n curDataSchema.errorMessage = value\n break\n // 以下字段 items、 schema、fieldKey 不设置到dataSchema中\n case 'items':\n case 'schema':\n case 'fieldKey':\n break\n default:\n // 设置customProps\n if (/^\\$:/.test(key)) {\n customProps.push(key)\n }\n curDataSchema[key] = value\n break\n }\n }\n })\n\n // 当前表单嵌套类型 'schema'为object|'items'为array\n let type = 'object'\n if (unitedSchema.items) {\n type = 'array'\n }\n switch (type) {\n case 'object': {\n // 处理通用逻辑\n // 对schema处理(子表单处理,递归)\n unitedSchema.schema?.map((childUnitedSchema, i) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: childUnitedSchema.fieldKey,\n parentType: 'object',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n parentTypePath: curTypePath,\n customProps,\n typePath,\n index: i,\n })\n })\n break\n }\n case 'array': {\n // 处理通用逻辑\n // 对items处理(子表单处理,递归)\n const item = unitedSchema.items\n const type = typeCheck(item)\n // 普通数组\n if (type === 'Object') {\n initParse({\n unitedSchema: item as UnitedSchema,\n idx: '$container',\n parentType: 'array',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: '$container',\n })\n } else if (type === 'Array') {\n // 元祖\n item?.map((childUnitedSchema: UnitedSchema, i: number) => {\n initParse({\n unitedSchema: childUnitedSchema,\n idx: String(i),\n parentType: 'tuple',\n parentUiSchema: curUiSchema,\n parentDataSchema: curDataSchema,\n customProps,\n typePath,\n parentTypePath: curTypePath,\n index: i,\n })\n })\n }\n break\n }\n default:\n break\n }\n}\n\n/**\n * 解析联合Schema\n * @param unitedSchema\n */\nconst parseUnitedSchema = (\n unitedSchema: UnitedSchema\n): {\n uiSchema: UiSchema\n dataSchema: DataSchema\n typePath: TypePath\n customProps: string[]\n} => {\n const dataSchema = {} as DataSchema\n const uiSchema = {} as UiSchema\n // 用来存储每个表单项对应的type值,如果是嵌套格式,则解析为 { a: 'object', 'a.b': 'object', 'a.b.c': 'array' }\n const typePath = {}\n // $:的自定义属性,仅统计dataSchema的\n const customProps: string[] = []\n\n initParse({\n unitedSchema,\n parentUiSchema: uiSchema,\n parentDataSchema: dataSchema,\n customProps,\n typePath,\n })\n\n return {\n dataSchema,\n uiSchema,\n typePath,\n customProps: [...new Set(customProps)],\n }\n}\n\nexport { parseUnitedSchema }\n","import { UiSchema, DataSchema, UnitedSchema } from './types'\nimport { deepClone, isEmpty } from '../common'\nimport type { Map } from '../common/type'\n\ntype Options = Partial<{\n // 是否开启$fieldKey值转换为fieldKey(默认不开启,generator中viewport区域需要开启)\n $fieldKey: boolean\n}>\n\nconst needToHandledKeywords = [\n 'required',\n 'errorMessage',\n 'items',\n 'schema',\n 'properties',\n 'order',\n]\n\nconst needToSetToRootUi = ['theme']\n\n/**\n * 值拷贝\n * @param targetObj\n * @param rawObj\n * @param dataType\n */\nfunction valueClone({\n targetObj,\n rawObj,\n dataType,\n fromRoot,\n}: {\n targetObj: Map\n rawObj: Map\n dataType?: string\n fromRoot?: boolean\n}): void {\n for (const key in rawObj) {\n if (rawObj[key] === null || typeof rawObj[key] !== 'object') {\n if (fromRoot && key === 'theme') {\n //\n } else {\n targetObj[key] = rawObj[key]\n }\n } else if (\n !needToHandledKeywords.includes(key) &&\n !needToSetToRootUi.includes(key)\n ) {\n // 非特殊字段可使用深拷贝,比如title, containerStyle\n targetObj[key] = deepClone(rawObj[key])\n }\n }\n\n if (dataType && Object.hasOwnProperty.call(rawObj, 'errorMessage')) {\n targetObj.errMsg = deepClone(rawObj.errorMessage)\n if (targetObj.errMsg.required) {\n delete targetObj.errMsg.required\n if (Object.keys(targetObj.errMsg).length === 0) {\n delete targetObj.errMsg\n }\n }\n }\n}\n\n/**\n * 递归合并\n * @param dataSchema\n * @param uiSchema\n * @param schema\n * @param fromRoot\n */\nfunction recursionCombine({\n dataSchema,\n uiSchema,\n schema,\n fromRoot,\n options,\n}: {\n dataSchema: DataSchema\n uiSchema: UiSchema\n schema: Map\n fromRoot?: boolean\n options?: Options\n}) {\n // 先拷贝ui和data的值类型属性或非特殊对象类型属性,比如title, containerStyle\n valueClone({\n targetObj: schema,\n rawObj: dataSchema,\n dataType: dataSchema.type,\n })\n // uiSchema非空时进行拷贝\n if (!isEmpty(uiSchema)) {\n // 填充ui属性,用于存放uiSchema\n if (!Object.hasOwnProperty.call(schema, 'ui')) {\n schema.ui = {}\n }\n\n // 如果是根路径的,需要处理特殊字段\n if (fromRoot) {\n needToSetToRootUi.forEach((key) => {\n if (Object.hasOwnProperty.call(uiSchema, key)) {\n schema[key] = uiSchema[key]\n }\n })\n }\n\n valueClone({ targetObj: schema.ui, rawObj: uiSchema, fromRoot })\n\n if (isEmpty(schema.ui)) {\n delete schema.ui\n }\n }\n\n // 如果有order,则根据order填充联合schema\n if (Object.hasOwnProperty.call(uiSchema, 'order')) {\n // 子项需要填充到联合schema的哪个prop下\n // 当父节点类型为array时应为items,否则为schema\n const toSchemaProp = dataSchema.type === 'array' ? 'items' : 'schema'\n\n // 因为子项的错误信息在dataSchema中,此处需要进行处理\n const required = dataSchema.required,\n errorMessage = dataSchema.errorMessage,\n msgMap = {} as Map\n\n if (typeof errorMessage === 'object') {\n const requireMsg = errorMessage.required\n const errMsg =\n errorMessage[toSchemaProp === 'items' ? 'items' : 'properties']\n\n // 收集必填的错误提示\n if (required) {\n for (const fk of required) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n requiredMsg: requireMsg[fk],\n }\n }\n }\n\n // 收集校验的错误提示\n if (errMsg) {\n for (const fk in errMsg) {\n if (Object.hasOwnProperty.call(errMsg, fk)) {\n if (!msgMap[fk]) msgMap[fk] = {}\n\n msgMap[fk] = {\n // 注意errMsg[fk]可能为string或对象,因此需要深拷贝\n errMsg: deepClone(errMsg[fk]),\n }\n }\n }\n }\n }\n\n // 遍历order的fieldKey\n for (let fieldKey of uiSchema.order) {\n // 根据fieldKey获取子项的schema\n const subUiSchema = uiSchema.properties[fieldKey]\n // 初始化子项的dataSchema\n let subDataSchema: Array<Map> | Map = dataSchema\n\n // 根据dataSchema(父节点)中的type字段判断在联合schema中,子项以什么形式存在\n // array需读取dataSchema的items,object需读取properties\n if (fieldKey === '$container') {\n subDataSchema = subDataSchema.items\n } else if (dataSchema.type === 'array') {\n subDataSchema = subDataSchema.items[fieldKey]\n } else {\n subDataSchema = subDataSchema.properties[fieldKey]\n }\n\n // 初始化待填充的表单项\n const fieldItem = {} as Map\n // 开始递归\n recursionCombine({\n dataSchema: subDataSchema as DataSchema,\n uiSchema: subUiSchema as UiSchema,\n schema: fieldItem,\n options,\n })\n\n if (msgMap[fieldKey]) {\n Object.assign(fieldItem, msgMap[fieldKey])\n }\n\n // 将递归完成的fieldItem填充到父组件的prop中\n if (toSchemaProp === 'items' && !Array.isArray(dataSchema?.items)) {\n // 对于元组类型,items应为 {}\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = {}\n }\n\n schema[toSchemaProp] = fieldItem\n } else {\n // 其余类型应为数组\n if (!Object.hasOwnProperty.call(schema, toSchemaProp)) {\n schema[toSchemaProp] = []\n }\n\n if (toSchemaProp === 'schema') {\n // 对于容器类型的子项,需要填充fieldKey\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (\n Object.prototype.hasOwnProperty.call(subDataSchema, '$fieldKey') &&\n options &&\n options['$fieldKey']\n ) {\n fieldKey = (subDataSchema as Map)['$fieldKey']\n delete fieldItem['$fieldKey']\n }\n fieldItem.fieldKey = fieldKey\n }\n\n schema[toSchemaProp].push(fieldItem)\n }\n }\n } else {\n // 如果没有order,但数据类型为array且dataSchema中有配置items的,将items拷贝至联合schema\n // fix: 时间选择器combine后属性丢失的问题\n if (dataSchema.type === 'array' && !isEmpty(dataSchema.items)) {\n schema.items = dataSchema.items\n }\n }\n}\n\n/**\n * 融合dataSchema和uiSchema为联合Schema\n */\nfunction combine(\n dataSchema: DataSchema,\n uiSchema: UiSchema,\n options?: Options\n): UnitedSchema {\n const unitedSchema = {}\n\n recursionCombine({\n dataSchema,\n uiSchema,\n schema: unitedSchema,\n fromRoot: true,\n options,\n })\n\n return unitedSchema\n}\n\nexport { combine }\n","/*\n * schema.flow 字段处理成联动语法\n * @Author: jiangxiaowei\n * @Date: 2022-07-12 15:13:44\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-23 23:49:26\n */\nimport stringify from 'js-stringify'\nimport type { Flow, ControlFlowAction } from './type'\n\nconst commonStr = 'const {get,set,merge,setDeepProp,changeKey}=props;'\n\nconst getFileKeyToString = (fieldKey: string) => {\n const [newFieldKey, type, property] = fieldKey.trim().split(' ')\n return property\n ? `get('${newFieldKey}').${type}?.${property}`\n : `get('${newFieldKey}').${type}`\n}\n\n// TODO else实现\n// TODO effect subAction实现\nconst parseControlFlow = (\n action: ControlFlowAction,\n flowStr: string\n): string => {\n // if的条件语句\n let condintionStr = ''\n // if判断成功,执行的语句\n let effectStr = ''\n action.condintion.map((condintion, index, condintions) => {\n if (!condintion.fieldKey1) return\n // 是否取反\n const non = condintion.operator.startsWith('-')\n // 去掉 - 之后的字符(例子:前 -includes 后:includes)\n let operator = non ? condintion.operator.slice(1) : condintion.operator\n if (['true', 'false'].includes(operator)) {\n operator = '==='\n }\n\n // 需要前面加.的操作符\n const isdotOperator = ['includes', 'in'].includes(operator)\n // change是特殊的判断\n const operatorStr =\n operator === 'change'\n ? `('${condintion.fieldKey1.trim().split(' ').shift()}'===changeKey)`\n : `(${getFileKeyToString(condintion.fieldKey1)}${\n isdotOperator ? '?.' : ''\n }${operator}${\n ['true', 'false'].includes(condintion.operator)\n ? condintion.operator\n : `${stringify(condintion.value2)}`\n })`\n condintionStr += `${operatorStr}${\n condintion.logicOperator && index != condintions.length - 1\n ? condintion.logicOperator\n : ''\n }`\n })\n action.effect.map((effect) => {\n // 转换set类型并过滤空的fieldKey\n if (effect.type === 'set' && effect.fieldKey) {\n const [fieldKey, subType, property] = effect.fieldKey.trim().split(' ')\n effectStr +=\n `set('${fieldKey}','${subType}',${\n property\n ? `(oldValue)=>{\n ${\n property == 'queryConfig.refreshId'\n ? 'let newRefreshId=oldValue?.queryConfig?.refreshId||0;newRefreshId++;'\n : ''\n }\n setDeepProp(${stringify(property.split('.'))},oldValue,${\n property === 'vcontrol'\n ? stringify(\n `const {get}=props;return ${\n effect.value ? condintionStr : `!(${condintionStr})`\n }`\n )\n : property == 'queryConfig.refreshId'\n ? 'newRefreshId'\n : stringify(effect.value)\n })\n }`\n : stringify(effect.value)\n }` + ');'\n }\n })\n\n if (condintionStr) {\n flowStr += `if(${condintionStr}){${effectStr}};`\n }\n return flowStr\n}\n\nexport const parseFlow = (flow: Flow): string => {\n let flowStr = ''\n //TODO trigger.event支持其他类型后,需对一期默认的globalChange兼容\n // 解析flow.actions\n flow.actions.map((action) => {\n switch (action.type) {\n case 'controlFlow':\n flowStr += parseControlFlow(action, flowStr)\n break\n default:\n break\n }\n })\n return commonStr + flowStr\n}\n","import {\n FetchApi,\n GetApi,\n PostApi,\n formValuePayloadType,\n getFormValueByType,\n} from './type'\n\nconst request = async (url: string, config: RequestInit) => {\n if (!window.fetch) {\n throw '浏览器版本过低'\n }\n try {\n const res = await fetch(url, config)\n if (res.ok) {\n const data = await res.json()\n return data\n } else {\n console.error('请求失败')\n }\n } catch (error) {\n console.error(error)\n }\n}\n\nconst get: GetApi<unknown> = ({ params, url, headers }) => {\n const { search, origin, hash, pathname } = new URL(url)\n const searchParams = new URLSearchParams(search)\n Object.entries(params).map(([key, value]) => {\n searchParams.set(key, value)\n })\n const newSearchParams = searchParams.toString()\n return request(\n `${origin}${pathname}${\n newSearchParams ? `?${newSearchParams}` : ''\n }${hash}`,\n {\n method: 'GET',\n ...(headers ? { headers } : {}),\n }\n )\n}\n\nconst post: PostApi<unknown> = ({ params, url, headers }) => {\n return request(url, {\n method: 'POST',\n body: JSON.stringify(params),\n ...(headers ? { headers } : {}),\n })\n}\n\nexport const fetchFn: FetchApi = ({\n params: oldParams,\n url,\n method,\n headers,\n}) => {\n const params: Record<string, unknown> = {}\n oldParams.map(({ key, value }) => {\n params[key] = value\n })\n switch (method.toUpperCase()) {\n case 'GET':\n return get({ params, url, headers })\n case 'POST':\n return post({ params, url, headers })\n default:\n throw new Error('不支持改请求类型')\n }\n}\n\nexport const fetchFnJsonKey = async ({\n config,\n dataHandler = null,\n dataSetter = null,\n doFinally = null,\n}: {\n config: any\n dataHandler?: Function | null | undefined\n dataSetter?: Function | null | undefined\n doFinally?: Function | null | undefined\n}) => {\n let auth = config?.headers?.Authorization || ''\n if (localStorage.getItem('jwtToken')) {\n auth = `Bearer ${localStorage.getItem('jwtToken')}`\n }\n if (config?.token) {\n auth = `Bearer ${config?.token}`\n }\n const fetchConfig: RequestInit = {\n method: config.method,\n headers: {\n ...config?.headers,\n Authorization: auth,\n },\n }\n if (config?.body) {\n fetchConfig.body = config.body\n }\n await request(config.url, fetchConfig)\n .then((res: any) => {\n let data\n if (config.jsonkey) {\n const jsonKeyVals = config.jsonkey.split('.')\n if (jsonKeyVals.length === 1) {\n data = res?.[jsonKeyVals[0]]\n } else if (jsonKeyVals.length === 2) {\n data = res?.[jsonKeyVals[0]]?.[jsonKeyVals[1]]\n }\n } else {\n data = res\n }\n if (dataHandler) {\n dataHandler(\n (data || []).map((item: any) => ({\n label: item[config.labelKey],\n value: item[config.valueKey],\n }))\n )\n }\n if (dataSetter) {\n dataSetter(data)\n }\n })\n .catch((error) => {\n console.error('Error:', error)\n })\n .finally(() => {\n if (doFinally) {\n doFinally()\n }\n })\n}\nexport const fetchFormValue = async (config: {\n url: string\n token: string\n getFormValueBy: getFormValueByType\n}): Promise<any> => {\n let param = ''\n const externalParam = config.getFormValueBy\n if (externalParam && typeof externalParam === 'object') {\n if (externalParam.id) {\n param = `?id=${externalParam.id}`\n } else {\n param = `?where=${encodeURIComponent(JSON.stringify(externalParam))}`\n }\n }\n return request(`${config.url}${param}`, {\n method: 'GET',\n headers: { Authorization: `Bearer ${config?.token}` },\n })\n}\nexport const addFormValue = (config: {\n url: string\n token: string\n formValuePayload: formValuePayloadType\n}): Promise<any> => {\n const payload = new FormData()\n return request(config.url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${config?.token}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config.formValuePayload),\n })\n}\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-30 15:05:24\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-11-24 16:33:13\n */\nimport _ from 'lodash'\nexport const isEqual = _.isEqual\nexport const get = _.get\nexport * from './common'\nexport * from './common/type'\nexport * from './image'\nexport * from './schemaHandle/parse'\nexport * from './schemaHandle/combine'\nexport * from './schemaHandle/types'\nexport * from './type'\nexport * from './flowHandle'\nexport * from './flowHandle/type'\nexport * from './fetch'\nexport * from './fetch/type'\n"],"names":["get"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innoways/utils",
3
- "version": "8.0.16",
3
+ "version": "8.0.18",
4
4
  "description": "drip-form通用方法",
5
5
  "keywords": [
6
6
  "utils",