@innoways/hooks 8.0.17 → 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,15 @@
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
+ - Updated dependencies [39c994c]
10
+ - Updated dependencies
11
+ - @innoways/utils@8.0.18
12
+
3
13
  ## 8.0.17
4
14
 
5
15
  ### Patch Changes
@@ -0,0 +1,272 @@
1
+ /// <reference types="react" />
2
+ import { Dispatch } from "react";
3
+ import { Action, Map, Get, ClosestEdge, UiSchema, DataSchema, GetKey, TitleUi, OnChange, GetTypeKey } from "@innoways/utils";
4
+ import Ajv from "ajv/dist/2019";
5
+ import { ErrorObject } from "ajv/dist/2019";
6
+ /*
7
+ * Field表单onChange生成 hooks
8
+ * 该hooks会自动根据
9
+ * @Author: jiangxiaowei
10
+ * @Date: 2020-05-20 20:31:51
11
+ * @Last Modified by: jiangxiaowei
12
+ * @Last Modified time: yyyy-05-dd 15:10:43
13
+ */
14
+ import { Moment } from "moment";
15
+ type SetType = "data" | "uiSchema" | "dataSchema";
16
+ type SetFn = (value: unknown) => void;
17
+ type StaticValue = undefined | null | string | number | boolean | Record<string, unknown> | Array<unknown>;
18
+ type Set = (fieldKey: string, type: SetType, value: SetFn | StaticValue) => void;
19
+ type DeleteField = (fieldKey: string, cb?: () => void) => void;
20
+ type AddField = (params: {
21
+ fieldKey: string;
22
+ closestEdge: ClosestEdge;
23
+ unitedSchema: Map;
24
+ overFieldKey: string;
25
+ shouldDelete: boolean;
26
+ cb: () => void;
27
+ }) => void;
28
+ type Merge = (fieldKey: string, type: SetType, value: StaticValue) => void;
29
+ declare const useSchema: ({ uiSchema, dataSchema, typeMap, formData, dispatch, prevFormData, prevUiSchema, prevDataSchema, prevTypeMap }: {
30
+ dispatch: Dispatch<Action>;
31
+ uiSchema: UiSchema;
32
+ dataSchema: DataSchema;
33
+ typeMap: Map;
34
+ formData: Map;
35
+ prevFormData: Map;
36
+ prevUiSchema: UiSchema;
37
+ prevDataSchema: DataSchema;
38
+ prevTypeMap: Map;
39
+ }) => {
40
+ get: Get;
41
+ set: Set;
42
+ deleteField: DeleteField;
43
+ addField: AddField;
44
+ merge: Merge;
45
+ };
46
+ type Errors = ErrorObject[];
47
+ type ErrorsMap = Record<string, string>;
48
+ type ValidateReturn = {
49
+ pass: boolean;
50
+ errors: Errors;
51
+ errorsMap: ErrorsMap;
52
+ formData: Record<string, unknown>;
53
+ };
54
+ type Validate = (param: {
55
+ schema: Record<string, unknown> | any;
56
+ formData: Record<string, unknown>;
57
+ ajv: Ajv;
58
+ visibleFieldKey?: string[];
59
+ customProps?: string[];
60
+ }) => ValidateReturn;
61
+ type Params = {
62
+ dataSchema: {
63
+ [propName: string]: any;
64
+ };
65
+ formData: {
66
+ [propName: string]: any;
67
+ };
68
+ ajv: any;
69
+ dispatch: Dispatch<Action>;
70
+ visibleFieldKey: string[];
71
+ };
72
+ /**
73
+ *
74
+ * @param {json} schema 校验数据的json schema
75
+ * @param {object} formData 校验数据
76
+ * @param {Ajv} ajv 校验器
77
+ * @param visibleFieldKey
78
+ * return {
79
+ * pass {bol} 是否校验通过
80
+ * error {} 校验错误信息
81
+ * }
82
+ */
83
+ declare const validate: Validate;
84
+ /**
85
+ *
86
+ * @param delay 校验防抖,延迟多少ms校验
87
+ * @returns
88
+ */
89
+ declare const useValidate: (delay?: number) => (arg0: Params) => void;
90
+ interface MarginType {
91
+ style: string;
92
+ stringArr: string[];
93
+ }
94
+ type TitleWidth = string | number;
95
+ /**
96
+ *
97
+ * @param titleUi ui中的title字段
98
+ * @param type ui的type类型
99
+ * @returns
100
+ */
101
+ declare const useTitle: (titleUi: TitleUi, type?: string | undefined) => TitleUi;
102
+ type UndefinedComponentFn = (param: {
103
+ theme?: string;
104
+ type?: string;
105
+ fieldKey: string;
106
+ }) => string;
107
+ type GlobalOptions = Partial<{
108
+ // (一般情况无需设置)true: formData、unitedSchema变化会触发reducer的reload false:formData和unitedSchema变化不会触发重新渲染
109
+ reload: boolean;
110
+ // 使用未定义的组件(主题中查找不到该组件) tip:提示无法找到主题xxx中的xx组件,请确认是否倒入 hidden:直接隐藏该组件,控制台提示
111
+ undefinedComponent: {
112
+ type: "tips";
113
+ value: string | UndefinedComponentFn;
114
+ } | {
115
+ type: "console";
116
+ consoleType: "log" | "warn" | "error";
117
+ value: string | UndefinedComponentFn;
118
+ };
119
+ // ajv校验防抖延迟时间 单位:ms(避免数据频繁变化多次调用ajv校验函数) 默认不延迟 注意:大部分情况无需设置延迟
120
+ ajvValidateDelay: number;
121
+ fieldTitleEditable: boolean | undefined;
122
+ selectedFieldKey: string | null | undefined;
123
+ setFieldTitleChange: (title: string, fieldKey: string) => void | undefined;
124
+ showTitleWithIcon: Function | undefined | null;
125
+ getDeletedColumnsIndex?: Function | undefined | null;
126
+ }>;
127
+ // 默认全局配置
128
+ declare const defaultGlobalOptions: GlobalOptions;
129
+ declare const globalOptionsContext: import("react").Context<Partial<{
130
+ reload: boolean;
131
+ undefinedComponent: {
132
+ type: "tips";
133
+ value: string | UndefinedComponentFn;
134
+ } | {
135
+ type: "console";
136
+ consoleType: "log" | "warn" | "error";
137
+ value: string | UndefinedComponentFn;
138
+ };
139
+ ajvValidateDelay: number;
140
+ fieldTitleEditable: boolean | undefined;
141
+ selectedFieldKey: string | null | undefined;
142
+ setFieldTitleChange: (title: string, fieldKey: string) => void | undefined;
143
+ showTitleWithIcon: Function | undefined | null;
144
+ getDeletedColumnsIndex?: Function | undefined | null;
145
+ }>>;
146
+ // 返回上一次的value值
147
+ declare const useGlobalOptions: () => GlobalOptions;
148
+ type TGlobalState = Partial<{
149
+ // 暂存的错误信息
150
+ stageErrors: Record<string, string>;
151
+ apiJson: Record<string, any>;
152
+ webModalForPlaceAutoCompleteField: string | null;
153
+ setGlobalState: (state: TGlobalState) => void;
154
+ }>;
155
+ // 默认全局状态
156
+ declare const defaultGlobalState: TGlobalState;
157
+ declare const globalStateContext: import("react").Context<Partial<{
158
+ stageErrors: Record<string, string>;
159
+ apiJson: Record<string, any>;
160
+ webModalForPlaceAutoCompleteField: string | null;
161
+ setGlobalState: (state: TGlobalState) => void;
162
+ }>>;
163
+ // 返回上一次的value值
164
+ declare const useGlobalState: () => TGlobalState;
165
+ type FormatMomentDataProps = {
166
+ value: string | [
167
+ Moment,
168
+ Moment
169
+ ];
170
+ format: string;
171
+ };
172
+ declare const formatMap: {
173
+ [propName: string]: (...args: any[]) => any;
174
+ };
175
+ /* 例子
176
+ import { useField } from 'hooks'
177
+ const myComponent = ({fieldKey,onChange})=>{
178
+ const onchange = useField(fieldKey,onChange)
179
+ <Input
180
+ onChange={_onChange}
181
+ />
182
+ }
183
+ */
184
+ type SpecialFormatKeys = keyof typeof formatMap | "isDelete";
185
+ type UseFieldR = (...args: any[]) => void;
186
+ declare const useField: ({ fieldKey, onChange, options, asyncValidate, prevFieldData, fieldData, getKey }: {
187
+ fieldKey: string;
188
+ getKey: GetKey;
189
+ onChange?: OnChange | undefined;
190
+ options?: Partial<Record<SpecialFormatKeys, boolean> & {
191
+ [index: number]: any;
192
+ [propName: string]: any;
193
+ format: FormatMomentDataProps["format"];
194
+ }> | undefined;
195
+ asyncValidate?: {
196
+ type: "change" | "click";
197
+ fn: (arg0: any) => any;
198
+ } | undefined;
199
+ prevFieldData?: any;
200
+ fieldData?: any;
201
+ }, dispatch: Dispatch<Action>) => UseFieldR;
202
+ declare const useModal: (defaultStatus: boolean) => [
203
+ boolean,
204
+ () => void,
205
+ () => void
206
+ ];
207
+ declare const useRefProp: (props: any[]) => {
208
+ current: null | any[];
209
+ };
210
+ // 返回上一次的value值
211
+ declare const usePrevious: (value: any) => any;
212
+ /**
213
+ * 重写useCallback(保证函数即使dependencies依赖改变。也不会重新生成)
214
+ * 解决因为useCallback的依赖频繁变化导致useCallback缓存效果很差甚至影响性能的问题
215
+ * fn 函数
216
+ * dependencies 依赖数组
217
+ */
218
+ declare const useEventCallback: (fn: (...args: any[]) => void, dependencies: any[]) => (...args: any[]) => void;
219
+ type ClickFuc = () => void;
220
+ type ReturnType<T> = [
221
+ boolean,
222
+ T,
223
+ T
224
+ ];
225
+ declare const useClickOne: () => ReturnType<ClickFuc>;
226
+ // import useCusDispatch from './useCusDispatch'
227
+ /**
228
+ * 查询表单数据的hook
229
+ * @param {object} param {
230
+ * options 表单数据
231
+ * queryFunc 表单query函数
232
+ * requestCache 是否每次都调查询接口
233
+ * fieldKey 表单的key
234
+ * }
235
+ */
236
+ type Arg0 = {
237
+ options: any[];
238
+ queryFunc?: (...args: any[]) => any;
239
+ requestCache?: boolean;
240
+ fieldKey: string;
241
+ getKey: GetKey;
242
+ };
243
+ declare const useQuery: ({ options, queryFunc, requestCache, fieldKey, getKey }: Arg0, dispatch: Dispatch<Action>) => (...args: any[]) => void;
244
+ type AddItem = (order: number, item: unknown) => void;
245
+ type DeltItem = (order: number) => void;
246
+ type ArrayMove = (oldIndex: number, newIndex: number) => void;
247
+ declare const useArray: ({ fieldKey, dispatch, fieldData }: {
248
+ fieldKey: string;
249
+ dispatch: Dispatch<Action>;
250
+ fieldData: Array<unknown>;
251
+ }) => {
252
+ addItem: AddItem;
253
+ deltItem: DeltItem;
254
+ arrayMove: ArrayMove;
255
+ };
256
+ declare const useContainer: ({ fieldKey, dispatch }: {
257
+ fieldKey: string;
258
+ dispatch: Dispatch<Action>;
259
+ }) => void;
260
+ declare const useGetKey: (typeMap: Map) => {
261
+ getTypeKey: GetTypeKey;
262
+ getKey: GetKey;
263
+ };
264
+ // 必填校验模式 default:必填同JSON schema reuqired关键字校验模式(会清空当前表单项) empty: 使用@jdfed/utils isEmpty判断(不会清空当前表单项)
265
+ type RequiredMode = "default" | "empty";
266
+ declare const RequiredModeContext: import("react").Context<RequiredMode>;
267
+ // 返回上一次的value值
268
+ declare const useRequiredModeContext: () => RequiredMode;
269
+ declare const useCountryStateCityOptions: any;
270
+ declare const useScreenSize: () => number;
271
+ export { useModal, useRefProp, usePrevious, useEventCallback, useClickOne, useValidate, validate, useField, useQuery, useArray, useContainer, useSchema, useGetKey, useTitle, useRequiredModeContext, RequiredModeContext, useGlobalOptions, globalOptionsContext, defaultGlobalOptions, useGlobalState, globalStateContext, defaultGlobalState, useCountryStateCityOptions, useScreenSize };
272
+ export type { Get, Set, Merge, DeleteField, AddField, GetKey, SetType, Validate, ErrorsMap, MarginType, TitleWidth, GlobalOptions, UndefinedComponentFn, TGlobalState, UseFieldR };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/useModal.ts","../src/useRefProp.ts","../src/usePrevious.ts","../src/useEventCallback.ts","../src/useClickOne.ts","../src/useValidate.ts","../src/useRequiredModeContext.ts","../src/useField.ts","../src/useQuery.ts","../src/useArray.ts","../src/useContainer.ts","../src/useGetKey.ts","../src/useSchema.ts","../src/useTitle.ts","../src/useGlobalOption.ts","../src/useGlobalState.ts","../src/useCountryStateCityOptions.ts","../src/useScreenSize.ts"],"sourcesContent":["/* 设置modal的展示隐藏\n * @Author: jiangxiaowei\n * @Date: 2020-05-14 11:09:04\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2020-06-14 20:58:02\n */\n\nimport { useState, useCallback } from 'react'\n\nconst useModal = (\n defaultStatus: boolean\n): [boolean, () => void, () => void] => {\n const [visible, setVisible] = useState(defaultStatus)\n const showModal = useCallback(() => {\n setVisible(true)\n }, [])\n const hideModal = useCallback(() => {\n setVisible(false)\n }, [])\n\n return [visible, showModal, hideModal]\n}\n\nexport default useModal\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-14 11:08:36\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2020-06-23 16:25:02\n */\n\n/* 例子\nimport {useRefProp} from 'hooks'\n\nComponent = (props)=>{\n const ref = useRefProp(依赖的值)\n // callback避免依赖过多,导致onClick多次重新生成问题。使用useRefProp可以保证onClick不变\n const onClick = useCallback(()=>{\n const {xxx} = ref.current\n },[])\n} */\n\nimport { useRef, useEffect } from 'react'\n\nconst useRefProp = (\n props: any[]\n): {\n current: null | any[]\n} => {\n const ref = useRef<any[] | null>(null)\n useEffect(() => {\n ref.current = props\n })\n return ref\n}\n\nexport default useRefProp\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-14 11:08:53\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2020-06-23 16:24:55\n */\nimport { useRef, useEffect } from 'react'\n\n// 返回上一次的value值\nconst usePrevious = (value: any): any => {\n const ref = useRef<any>()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n\nexport default usePrevious\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-14 11:09:25\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2020-06-23 16:24:38\n */\n\nimport { useCallback, useRef, useEffect } from 'react'\n\n/**\n * 重写useCallback(保证函数即使dependencies依赖改变。也不会重新生成)\n * 解决因为useCallback的依赖频繁变化导致useCallback缓存效果很差甚至影响性能的问题\n * fn 函数\n * dependencies 依赖数组\n */\nconst useEventCallback = (\n fn: (...args: any[]) => void,\n dependencies: any[]\n): ((...args: any[]) => void) => {\n const ref = useRef<(...args: any[]) => void>(() => {\n throw new Error('Cannot call an event handler while rendering.')\n })\n\n useEffect(() => {\n ref.current = fn\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fn, ...dependencies])\n\n return useCallback(\n (...restProps) => {\n const fn = ref.current\n return fn(...restProps)\n },\n [ref]\n )\n}\n\nexport default useEventCallback\n","/*\n * 按钮只可以点击一次\n * @Author: jiangxiaowei\n * @Date: 2020-05-14 16:54:56\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2020-06-21 18:40:08\n */\nimport { useRef, useCallback } from 'react'\n\ntype ClickFuc = () => void\ntype ReturnType<T> = [boolean, T, T]\n\nconst useClickOne = (): ReturnType<ClickFuc> => {\n const ref = useRef(true)\n const startClick = useCallback(() => {\n ref.current = false\n }, [])\n const stopClick = useCallback(() => {\n ref.current = true\n }, [])\n return [ref.current, startClick, stopClick]\n}\n\nexport default useClickOne\n","/*\n * 表单校验\n * @Author: jiangxiaowei\n * @Date: 2020-05-19 13:40:24\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: yyyy-05-dd 15:30:48\n */\nimport produce from 'immer'\nimport { useDebounceFn } from 'ahooks'\nimport type Ajv from 'ajv/dist/2019'\nimport type { ErrorObject } from 'ajv/dist/2019'\nimport _ from 'lodash'\n\nimport type { Dispatch } from 'react'\nimport type { Action } from '@innoways/utils'\ntype Errors = ErrorObject[]\nexport type ErrorsMap = Record<string, string>\ntype ValidateReturn = {\n pass: boolean\n errors: Errors\n errorsMap: ErrorsMap\n formData: Record<string, unknown>\n}\n\nexport type Validate = (param: {\n schema: Record<string, unknown> | any\n formData: Record<string, unknown>\n ajv: Ajv\n visibleFieldKey?: string[]\n customProps?: string[]\n}) => ValidateReturn\n\ntype Params = {\n dataSchema: {\n [propName: string]: any\n }\n formData: {\n [propName: string]: any\n }\n ajv: any\n dispatch: Dispatch<Action>\n visibleFieldKey: string[]\n}\n\n/**\n *\n * @param {json} schema 校验数据的json schema\n * @param {object} formData 校验数据\n * @param {Ajv} ajv 校验器\n * @param visibleFieldKey\n * return {\n * pass {bol} 是否校验通过\n * error {} 校验错误信息\n * }\n */\nexport const validate: Validate = ({\n schema,\n formData,\n ajv,\n visibleFieldKey,\n customProps,\n}) => {\n try {\n const ignoreKeywords =\n customProps?.filter((item) => !ajv.RULES.keywords[item]) || []\n if (ignoreKeywords?.length > 0) {\n ajv.addVocabulary(ignoreKeywords)\n }\n // 编译ajv\n const validateFuc = ajv.compile(schema)\n // 校验是否通过\n let pass = false\n // 因为ajv会改动formData数据。而formData是不可变的,我们通过immer生成新的数据\n const newFormData = produce(formData, (draft) => {\n if (\n schema &&\n schema.properties &&\n schema.properties &&\n Object.keys(schema.properties).length\n ) {\n for (let i in schema.properties) {\n if (\n schema.properties[i].dateChecking &&\n schema.properties[i].dateChecking.earlierDateChecking &&\n schema.properties[i].dateChecking.authModeDateChecking\n ) {\n draft = {\n ...draft,\n [i]: {\n self: formData[i],\n [schema.properties[i].dateChecking.earlierDateChecking]:\n formData[\n schema.properties[i].dateChecking.earlierDateChecking\n ],\n },\n }\n }\n }\n }\n pass = validateFuc(draft)\n })\n\n // 未通过校验的数据,结构如下\n // [{\n // instancePath: '/e/0/1', // 这是一个嵌套表单,数据结构为 { e: [[]] }\n // schemaPath: '#/properties/e/items/items/1/errorMessage',\n // keyword: 'errorMessage',\n // params: { errors: [Array] },\n // message: '类型错误!应为number',\n // schema: { type: '类型错误!应为number' },\n // parentSchema: { type: 'number', title: '手机', minimum: 1, errorMessage: [Object] },\n // data: '231'\n // }, ...]\n let errors = validateFuc?.errors || []\n // 当前数据错误映射\n const errorsMap: {\n [propName: string]: string\n } = {}\n // 只处理 dataSchema 中 errorMessage 给出具体错误内容的错误\n errors = errors.filter(\n (err: { keyword: string }) => err.keyword === 'errorMessage'\n )\n // 解析错误信息\n errors.forEach((error: ErrorObject) => {\n // 由于获取的instancePath前面会带有/,此处移除首项的\n const key: string | number = error?.instancePath\n .replace(/^\\//, '')\n .replace(/\\//g, '.')\n // TODO 错误兜底逻辑优化,过滤error.message上不存在的错误\n if (key) {\n // 数组嵌套对象必填校验 只区instacePath不行,还需加上 error.params.errors[0].params.missingProperty\n errorsMap[\n `${String(key)}${\n error.params.errors[0].params.missingProperty\n ? '.' + error.params.errors[0].params.missingProperty\n : ''\n }`\n ] = error.message || '未知错误'\n } else {\n // 根目录required错误\n errorsMap[error.params.errors[0].params.missingProperty] =\n error.message || '未知错误'\n }\n })\n\n // 如果该字段不展示在界面上,比如通过开关控制显隐的一些必填项\n // 则从校验中移除这些错误\n Object.keys(errorsMap).map((key) => {\n if (visibleFieldKey && !visibleFieldKey?.includes(key)) {\n delete errorsMap[key]\n }\n })\n return {\n pass,\n errors,\n errorsMap,\n formData: newFormData,\n }\n } catch (error) {\n console.error(error)\n return {\n pass: false,\n errors: [],\n formData,\n errorsMap: {},\n }\n }\n}\n\n/**\n *\n * @param delay 校验防抖,延迟多少ms校验\n * @returns\n */\nconst useValidate = (delay = 0): ((arg0: Params) => void) => {\n const { run } = useDebounceFn<(arg0: Params) => void>(\n ({ dataSchema, formData, dispatch, visibleFieldKey, ajv }) => {\n /*\n 因为ajv中有option配置可以改变formData(useDefaults:true)修改默认值\n 或者类似ajv-keywords的自定义关键字transform等情况会修改formData。\n 所以需要在在validate中使用immer,并重新返回新的formData。在此需要对formData重新dispatch设置\n */\n const { errorsMap, formData: newFormData } = validate({\n schema: dataSchema,\n formData,\n ajv,\n visibleFieldKey,\n })\n dispatch({\n type: 'setAjvErr',\n action: {\n errors: errorsMap,\n },\n })\n dispatch({\n type: 'setData',\n action: {\n formData: newFormData,\n },\n })\n dispatch({\n type: 'setChecking',\n checking: false,\n })\n },\n { wait: delay }\n )\n return run\n}\n\nexport default useValidate\n","/*\n * @Author: jiangxiaowei\n * @Date: 2022-03-08 17:48:49\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-03-09 17:10:13\n */\n\nimport { createContext, useContext } from 'react'\n\n// 必填校验模式 default:必填同JSON schema reuqired关键字校验模式(会清空当前表单项) empty: 使用@jdfed/utils isEmpty判断(不会清空当前表单项)\ntype RequiredMode = 'default' | 'empty'\nexport const RequiredModeContext = createContext<RequiredMode>('default')\n\n// 返回上一次的value值\nconst useRequiredModeContext = (): RequiredMode => {\n const requiredMode = useContext(RequiredModeContext)\n return requiredMode\n}\n\nexport default useRequiredModeContext\n","/*\n * Field表单onChange生成 hooks\n * 该hooks会自动根据\n * @Author: jiangxiaowei\n * @Date: 2020-05-20 20:31:51\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: yyyy-05-dd 15:10:43\n */\nimport moment, { Moment } from 'moment'\nimport { produce } from 'immer'\nimport useEventCallback from './useEventCallback'\nimport useRequiredModeContext from './useRequiredModeContext'\nimport { useDebounceFn } from 'ahooks'\nimport { isEmpty, typeCheck } from '@innoways/utils'\nimport type { GetKey, Action, OnChange } from '@innoways/utils'\nimport type { Dispatch } from 'react'\ntype FormatMomentDataProps = {\n value: string | [Moment, Moment]\n format: string\n}\n\ntype HSLColor = {\n a?: number\n h: number\n l: number\n s: number\n}\n\ntype RGBColor = {\n a?: number\n b: number\n g: number\n r: number\n}\n\ntype Color = {\n value:\n | {\n source?: string\n hex: string\n hsl: HSLColor\n rgb: RGBColor\n }\n | string\n}\n\n/**\n * 格式化Moment类型数据\n * @param {array|string} value\n * @param {string} format 格式化模板\n * @returns {string|array}\n */\nfunction formatMomentData({\n value,\n format,\n}: FormatMomentDataProps): string | [string, string] {\n if (value) {\n if (Array.isArray(value)) {\n return [value[0].format(format), value[1].format(format)]\n } else {\n return moment(value).format(format)\n }\n }\n return value\n}\n\n/**\n * 格式化颜色选择器数据\n * @param {object|string} value 颜色选择器表单值\n */\nfunction formatColor({ value }: Color): string {\n if (typeof value === 'object') {\n switch (value.source) {\n case 'rgb':\n return `rgba(${value?.rgb?.r || 0},${value?.rgb?.g || 0},${\n value?.rgb?.b || 0\n },${value?.rgb?.a || 1})`\n default:\n return value?.hex || '#ffffff'\n }\n }\n return value\n}\n\n/**\n * 格式化uploader数据\n */\n// function formatUploader({ value }: { value: { fileList?: any } }) {\n// if (typeCheck(value) === 'Object') {\n// return value?.fileList || value\n// }\n// return value\n// }\n\n/**\n * 扁平化treeselect结构\n * @param options treeselect的options 非treeDataSimpleMode(简单)模式\n */\nfunction loop(options: any[]): any[] {\n return options.reduce((prev: any[], cur: { children?: any[] }) => {\n if (cur.children) {\n const childrenArr = loop(cur.children)\n return prev.concat(childrenArr).concat(cur)\n }\n return prev.concat(cur)\n }, [])\n}\n\n/**\n * treeselect默认只保存当前选中的id。使用此方法将treeselect改成使用withPidDelimiter分隔符拼接的包括父级id的格式 类似 ‘0#1#2’\n * @param param0 {\n * value 需要更改的初始值\n * options treeselect非treeDataSimpleMode格式的数据\n * withPidDelimiter 分隔符\n * }\n */\nfunction formatWithPid({\n value,\n options,\n withPidDelimiter,\n}: {\n value: any\n options: any[]\n withPidDelimiter: string\n}) {\n const newOptions = loop(options)\n /**\n * 循环获取父元素id并合并当前id值\n * @param val 当前选择的id值\n * @param withPidValue 带父元素id的值 默认为空\n */\n\n const newValue = value.map((curVal: any) => {\n const loops = (val: any, withPidValue?: any): any => {\n const index = newOptions.findIndex((item: any) => item.value === val)\n if (index != -1) {\n const parentValue = newOptions[index].parentValue\n withPidValue = `${parentValue}${withPidDelimiter}${withPidValue || val}`\n return loops(parentValue, withPidValue)\n } else {\n return withPidValue\n }\n }\n const withPidValue = loops(curVal)\n return withPidValue\n })\n return newValue\n}\n\n/**\n * value格式化\n * @param param0 {\n * value 表单值\n * disabled_input 禁止输入的值\n * }\n */\nfunction formatValue({\n value,\n disabled_input,\n}: {\n value: any\n disabled_input?: string[]\n}) {\n if (disabled_input) {\n const regStr = disabled_input.join('|')\n const regExp = new RegExp(regStr, 'g')\n if (regExp.test(value)) {\n return value.replace(regExp, '')\n }\n }\n return value\n}\n\n/**\n * 针对select+text表单项的format\n * @param value\n * @param subFieldKey\n * @param prevFieldData\n */\nfunction formatSelectText({\n value,\n subFieldKey,\n prevFieldData,\n}: {\n value: string | []\n subFieldKey: string\n prevFieldData: { [propName: string]: any }\n}) {\n return Object.assign(\n { select: [], text: '' },\n typeCheck(prevFieldData) === 'Object' ? prevFieldData : {},\n { [subFieldKey]: value }\n )\n}\n\nconst formatMap: {\n [propName: string]: (...args: any[]) => any\n} = {\n isMoment: formatMomentData,\n isColor: formatColor,\n // 移除uploader组件的格式化处理,因为入参需要为 {file, fileList} 格式\n // isUploader: formatUploader,\n isWithPid: formatWithPid,\n isFormat: formatValue,\n isSelectText: formatSelectText,\n}\n\n/* 例子\nimport { useField } from 'hooks'\nconst myComponent = ({fieldKey,onChange})=>{\n const onchange = useField(fieldKey,onChange)\n <Input\n onChange={_onChange}\n />\n}\n*/\n\ntype SpecialFormatKeys = keyof typeof formatMap | 'isDelete'\nexport type UseFieldR = (...args: any[]) => void\ntype Options = Partial<\n Record<SpecialFormatKeys, boolean> & {\n format: FormatMomentDataProps['format']\n [index: number]: any\n [propName: string]: any\n }\n>\nconst useField = (\n {\n fieldKey,\n onChange,\n options = {},\n asyncValidate,\n prevFieldData,\n fieldData,\n getKey,\n }: {\n fieldKey: string\n getKey: GetKey\n onChange?: OnChange\n options?: Options\n asyncValidate?: {\n type: 'change' | 'click'\n fn: (arg0: any) => any\n }\n prevFieldData?: any\n fieldData?: any\n },\n dispatch: Dispatch<Action>\n): UseFieldR => {\n const requiredMode = useRequiredModeContext()\n // onChange 回调 debounce\n const { run } = useDebounceFn(\n (val, dispatch) => {\n if (onChange) {\n try {\n // 如果为函数,则直接执行\n if (typeof onChange === 'function') {\n onChange({\n val,\n dispatch,\n fieldKey,\n prevFieldData,\n fieldData,\n getKey,\n })\n } else {\n const onChangeFuc = new Function('props', onChange)\n onChangeFuc &&\n onChangeFuc({\n val,\n dispatch,\n fieldKey,\n prevFieldData,\n fieldData,\n getKey,\n })\n }\n } catch (error) {\n console.error('onChange函数体错误')\n console.error(error)\n }\n }\n\n if (asyncValidate && asyncValidate.type === 'change') {\n const asyncValidateResult = asyncValidate.fn(val)\n if (asyncValidateResult?.then) {\n asyncValidateResult.then((res: string): void => {\n if (res) {\n dispatch({\n type: 'setErr',\n action: {\n set: {\n [fieldKey]: res,\n },\n },\n })\n } else {\n dispatch({\n type: 'setErr',\n action: {\n deleteKeys: fieldKey,\n },\n })\n }\n })\n } else {\n if (asyncValidateResult) {\n dispatch({\n type: 'setErr',\n action: {\n set: {\n [fieldKey]: asyncValidateResult,\n },\n },\n })\n } else {\n dispatch({\n type: 'setErr',\n action: {\n deleteKeys: fieldKey,\n },\n })\n }\n }\n }\n // onChange && onChange(val,dispatch)\n },\n { wait: 300 }\n )\n return useEventCallback(\n (e) => {\n // 针对 babel-ui中的radio的checkbox模式和所有主题包的switch,由于获取不到正确的e.target,需要通过自身的fieldData进行修改\n // switch返回的e为true、false,因此在传入onChange时直接将fieldData取反\n let value = isEmpty(fieldData)\n ? e?.target\n ? e?.target?.value\n : e\n : fieldData\n //uploader内部修改不可变数据特殊处理\n if (options.draft) {\n value = produce(value, (draft: any) => draft)\n }\n // 判断当前传的options配置项是否需要特殊format处理\n const formatKeys = Object.keys(formatMap)\n const specialFormatKeys = Object.keys(options).filter(\n (item) => options[item] === true && formatKeys.includes(item)\n )\n if (specialFormatKeys.length === 1 && formatMap[specialFormatKeys[0]]) {\n value = formatMap[specialFormatKeys[0]]({\n value,\n ...options,\n })\n }\n /**\n * 数组容器中子项为空不删除\n */\n if (\n (options.isDelete || isEmpty(value)) &&\n getKey(fieldKey, 'dataSchema').split('.').pop() !== 'items'\n ) {\n // 使用JSON Schema规范的required关键字校验必填\n if (requiredMode === 'default') {\n // 删除formData中相应表单字段(fix:表单为空之后必填校验失效)\n dispatch({\n type: 'setData',\n action: {\n deleteKeys: fieldKey,\n },\n })\n } else {\n // 通过minLength、minItems控制必填\n dispatch({\n type: 'setData',\n action: {\n set: {\n [fieldKey]: value,\n },\n },\n })\n }\n\n // 删除dataSchema中相应default(fix: text默认值后续删除不自动添加)\n dispatch({\n type: 'setValidate',\n action: {\n deleteKeys: `${getKey(fieldKey, 'dataSchema')}.default`,\n },\n })\n } else {\n dispatch({\n type: 'setData',\n action: {\n set: {\n [fieldKey]: value,\n },\n },\n })\n }\n dispatch({\n type: 'setChecking',\n checking: true,\n })\n run(value, dispatch)\n },\n [dispatch, onChange, fieldKey]\n )\n}\n\nexport default useField\n","/*\n * @Author: jiangxiaowei\n * @Date: 2020-05-27 21:46:47\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-01-28 14:46:16\n */\nimport { useCallback } from 'react'\nimport type { Dispatch } from 'react'\nimport type { GetKey, Action } from '@innoways/utils'\n// import useCusDispatch from './useCusDispatch'\n\n/**\n * 查询表单数据的hook\n * @param {object} param {\n * options 表单数据\n * queryFunc 表单query函数\n * requestCache 是否每次都调查询接口\n * fieldKey 表单的key\n * }\n */\n\ntype Arg0 = {\n options: any[]\n queryFunc?: (...args: any[]) => any\n requestCache?: boolean\n fieldKey: string\n getKey: GetKey\n}\n\nconst useQuery = (\n { options, queryFunc, requestCache = true, fieldKey, getKey }: Arg0,\n dispatch: Dispatch<Action>\n): ((...args: any[]) => void) => {\n return useCallback(\n async (...args) => {\n // 当options为空||requestCache为false,调用接口查询\n if ((options.length === 0 || !requestCache) && queryFunc) {\n const data = await queryFunc(...args)\n dispatch({\n type: 'setUi',\n action: {\n set: {\n [`${getKey(fieldKey, 'uiSchema')}.options`]: data,\n },\n },\n })\n }\n },\n [dispatch, fieldKey, getKey, options.length, queryFunc, requestCache]\n )\n}\n\nexport default useQuery\n","/*\n * ArrayContainer 逻辑封装\n * @Author: jiangxiaowei\n * @Date: 2021-08-01 16:54:41\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-05-17 18:14:35\n */\nimport { useCallback } from 'react'\nimport produce from 'immer'\nimport type { Dispatch } from 'react'\nimport type { Action } from '@innoways/utils'\ntype AddItem = (order: number, item: unknown) => void\ntype DeltItem = (order: number) => void\ntype ArrayMove = (oldIndex: number, newIndex: number) => void\n\nconst useArray = ({\n fieldKey,\n dispatch,\n fieldData,\n}: {\n fieldKey: string\n dispatch: Dispatch<Action>\n fieldData: Array<unknown>\n}): {\n addItem: AddItem\n deltItem: DeltItem\n arrayMove: ArrayMove\n} => {\n // 新增一项\n const addItem = useCallback<AddItem>(\n (order, item) => {\n dispatch({\n type: 'setArrayKey',\n action: {\n fieldKey,\n order,\n },\n })\n dispatch({\n type: 'setData',\n action: {\n set: {\n [fieldKey]: produce(fieldData || [], (draft) => {\n draft.splice(order, 0, item)\n }),\n },\n },\n })\n },\n [dispatch, fieldData, fieldKey]\n )\n // 删除一项\n const deltItem = useCallback<DeltItem>(\n (order) => {\n dispatch({\n type: 'setArrayKey',\n action: {\n fieldKey,\n order,\n isDelete: true,\n },\n })\n // 删除自定义错误\n dispatch({\n type: 'setErr',\n action: {\n deleteKeys: `${fieldKey}.${order}`,\n },\n })\n dispatch({\n type: 'setData',\n action: {\n deleteKeys: `${fieldKey}.${order}`,\n },\n })\n },\n [dispatch, fieldKey]\n )\n // 切换顺序\n const arrayMove = useCallback<ArrayMove>(\n (oldIndex, newIndex) => {\n dispatch({\n type: 'setData',\n action: {\n set: {\n [fieldKey]: produce(fieldData || [], (draft) => {\n draft.splice(newIndex, 0, draft.splice(oldIndex, 1)[0])\n }),\n },\n },\n })\n dispatch({\n type: 'setArrayKey',\n action: {\n fieldKey,\n move: [oldIndex, newIndex],\n },\n })\n },\n [dispatch, fieldData, fieldKey]\n )\n\n return {\n addItem,\n deltItem,\n arrayMove,\n }\n}\n\nexport default useArray\n","/*\n * container容器通用逻辑\n * @Author: jiangxiaowei\n * @Date: 2021-08-05 11:18:43\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-01-26 17:58:40\n */\n\nimport { useEffect } from 'react'\nimport type { Dispatch } from 'react'\nimport type { Action } from '@innoways/utils'\n\nconst useContainer = ({\n fieldKey,\n dispatch,\n}: {\n fieldKey: string\n dispatch: Dispatch<Action>\n}): void => {\n //container容器加载的时候将当前表单fieldKey加入到visibleFieldKey中\n useEffect(() => {\n dispatch({\n type: 'setVisibleKey',\n action: {\n fieldKey,\n },\n })\n return () => {\n dispatch({\n type: 'setVisibleKey',\n action: {\n deleteKeys: fieldKey,\n },\n })\n }\n }, [dispatch, fieldKey])\n}\n\nexport default useContainer\n","/*\n * 获取fieldKey相对uiSchema、dataSchema、typeMap路径\n * @Author: jiangxiaowei\n * @Date: 2021-08-11 11:39:48\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-08-12 12:46:46\n */\nimport { useCallback } from 'react'\nimport { generateReg } from '@innoways/utils'\nimport type { Map, GetTypeKey, GetKey } from '@innoways/utils'\n\nconst useGetKey = (\n typeMap: Map\n): {\n getTypeKey: GetTypeKey\n getKey: GetKey\n} => {\n // 获取fieldKey相对typeMap的路径\n const getTypeKey = useCallback<GetTypeKey>(\n (fieldKey) => {\n const fieldKeyToTypeMap = Object.keys(typeMap).find((item) => {\n return generateReg(fieldKey.split('.')).test(item)\n })\n if (!fieldKeyToTypeMap) {\n console.error(fieldKey, typeMap)\n throw `无法在typeMap中找到与${fieldKey}对应的key,`\n }\n return fieldKeyToTypeMap\n },\n [typeMap]\n )\n // 获取fieldKey相对uiSchema、dataSchema路径\n const getKey = useCallback<GetKey>(\n (fieldKey, type) => {\n if (type === 'data') return fieldKey\n if (type === 'unitedSchema')\n return typeMap[getTypeKey(fieldKey)].unitedSchemaKey\n return getTypeKey(fieldKey)\n .split('.')\n .reduce((prev, cur, index, arr) => {\n switch (\n index === 0\n ? 'object'\n : (typeMap[arr.slice(0, index).join('.')] as Map).type\n ) {\n case 'array':\n if (cur === '$container') {\n // 普通数组\n return type === 'uiSchema'\n ? `${prev ? `${prev}.` : ''}properties.${cur}`\n : `${prev ? `${prev}.` : ''}items`\n } else {\n // 元祖\n return type === 'uiSchema'\n ? `${prev ? `${prev}.` : ''}properties.${cur}`\n : `${prev ? `${prev}.` : ''}items.${cur}`\n }\n case 'object':\n // 对象\n return `${prev ? `${prev}.` : ''}properties.${cur}`\n\n default:\n return `${prev ? `${prev}.` : ''}properties.${cur}`\n }\n }, '')\n },\n [getTypeKey, typeMap]\n )\n return {\n getTypeKey,\n getKey,\n }\n}\n\nexport default useGetKey\n","/*\n * 获取设置uiSchema、dataSchema、formData的函数\n * @Author: jiangxiaowei\n * @Date: 2021-08-06 15:33:25\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2023-07-20 16:45:31\n */\nimport { typeCheck } from '@innoways/utils'\nimport { useCallback } from 'react'\nimport produce from 'immer'\nimport useGetKey from './useGetKey'\nimport type { Dispatch } from 'react'\nimport type {\n Action,\n Map,\n Get,\n ClosestEdge,\n UiSchema,\n DataSchema,\n} from '@innoways/utils'\n\nexport type SetType = 'data' | 'uiSchema' | 'dataSchema'\ntype SetFn = (value: unknown) => void\ntype StaticValue =\n | undefined\n | null\n | string\n | number\n | boolean\n | Record<string, unknown>\n | Array<unknown>\nexport type Set = (\n fieldKey: string,\n type: SetType,\n value: SetFn | StaticValue\n) => void\nexport type DeleteField = (fieldKey: string, cb?: () => void) => void\nexport type AddField = (params: {\n fieldKey: string\n closestEdge: ClosestEdge\n unitedSchema: Map\n overFieldKey: string\n shouldDelete: boolean\n cb: () => void\n}) => void\nexport type Merge = (\n fieldKey: string,\n type: SetType,\n value: StaticValue\n) => void\ntype HandleFn = (\n fieldKey: string,\n value: SetFn | StaticValue,\n type: SetType,\n mode?: 'set' | 'merge'\n) => void | any\n\nconst useSchema = ({\n uiSchema,\n dataSchema,\n typeMap,\n formData,\n dispatch,\n prevFormData,\n prevUiSchema,\n prevDataSchema,\n prevTypeMap,\n}: {\n dispatch: Dispatch<Action>\n uiSchema: UiSchema\n dataSchema: DataSchema\n typeMap: Map\n formData: Map\n prevFormData: Map\n prevUiSchema: UiSchema\n prevDataSchema: DataSchema\n prevTypeMap: Map\n}): {\n get: Get\n set: Set\n deleteField: DeleteField\n addField: AddField\n merge: Merge\n} => {\n const { getTypeKey, getKey } = useGetKey(typeMap)\n const get = useCallback<\n (\n fieldKey?: string,\n option?: { isPrev: boolean }\n ) => {\n data: Map | undefined\n dataSchema: DataSchema | undefined\n uiSchema: UiSchema | undefined\n }\n >(\n (fieldKey, option = { isPrev: false }) => {\n const isPrev = option?.isPrev\n const newFormData = isPrev ? prevFormData : formData\n const newTypeMap = isPrev ? prevTypeMap : typeMap\n const newUiSchema = isPrev ? prevUiSchema : uiSchema\n const newDataSchema = isPrev ? prevDataSchema : dataSchema\n try {\n // 找不到则获取根目录\n if (!fieldKey) {\n return {\n uiSchema: newUiSchema,\n dataSchema: newDataSchema,\n data: newFormData,\n }\n } else {\n const fieldKeyMap = fieldKey.split('.')\n const arr = getTypeKey(fieldKey).split('.')\n return arr.reduce(\n (prev, cur, index, arr) => {\n if (cur === '') {\n // 返回根目录的dataSchema、uiSchema、formData\n return prev\n } else if (\n index === 0 ||\n (newTypeMap[arr.slice(0, index).join('.')] as Map).type ===\n 'object'\n ) {\n // 对象类型\n return {\n uiSchema: (prev.uiSchema.properties as Map)[cur],\n dataSchema: (prev.dataSchema.properties as Map)[cur],\n data: prev.data ? prev.data[cur] : undefined,\n }\n } else if (\n (newTypeMap[arr.slice(0, index).join('.')] as Map).type ===\n 'array'\n ) {\n // 数组类型\n if (cur === '$container') {\n // 普通数组\n return {\n uiSchema: prev.uiSchema.properties.$container,\n dataSchema:\n prev.dataSchema[index === 0 ? 'properties' : 'items'],\n data: prev.data ? prev.data[fieldKeyMap[index]] : undefined,\n }\n } else {\n // 元祖\n return {\n uiSchema: prev.uiSchema.properties[cur],\n dataSchema: (\n prev.dataSchema[\n index === 0 ? 'properties' : 'items'\n ] as Map\n )[cur],\n data: prev.data ? prev.data[cur] : undefined,\n }\n }\n } else {\n return {\n uiSchema: prev.uiSchema,\n dataSchema: prev.dataSchema,\n data: prev.data,\n }\n }\n },\n {\n data: newFormData,\n uiSchema: newUiSchema,\n dataSchema: newDataSchema,\n }\n )\n }\n } catch (error) {\n return {\n data: undefined,\n uiSchema: undefined,\n dataSchema: undefined,\n }\n }\n },\n [\n dataSchema,\n formData,\n getTypeKey,\n prevDataSchema,\n prevFormData,\n prevTypeMap,\n prevUiSchema,\n typeMap,\n uiSchema,\n ]\n ) as Get\n\n /**\n * 获取当前value值\n * @param fieldKey 表单项路径,a.b.c\n * @param value 待替换值\n * @param type 类型\n */\n const handleFn = useCallback<HandleFn>(\n (fieldKey, value, type, mode = 'set') => {\n const typeMap = {\n data: formData,\n uiSchema: uiSchema,\n dataSchema: dataSchema,\n }\n // 根据FieldKey和type,获取在schema中的真实位置,如在ui中的a.properties.b.properties.c\n // 生成解析映射树 ''在set中代表根路径,所以直接返回\n let oldData\n if (fieldKey === '') {\n oldData = typeMap[type]\n } else {\n const key = getKey(fieldKey, type)\n oldData = key.split('.').reduce((prev, cur) => {\n return prev[cur] as Map\n }, typeMap[type])\n }\n switch (typeCheck(value)) {\n case 'Function':\n return produce(oldData, value as SetFn)\n case 'Object':\n if (mode === 'set') {\n return value\n } else {\n const recursionFn = (oldData: Map, value: Map) => {\n return produce(oldData, (draft) => {\n for (const i in value as Map) {\n if (typeCheck(value[i]) === 'Object') {\n // 如果存在,继续递归遍历设置对象的每个属性类似webpack-merge方式\n if (draft[i]) {\n draft[i] = recursionFn(draft[i] as Map, value[i] as Map)\n } else {\n // 不存在直接设置\n draft[i] = (value as Map)[i]\n }\n } else {\n draft[i] = (value as Map)[i]\n }\n }\n })\n }\n return recursionFn(oldData, value as Map)\n }\n default:\n return value\n }\n },\n [dataSchema, formData, getKey, uiSchema]\n )\n // TODO 多个set合并\n const set = useCallback<Set>(\n (key, type, value) => {\n switch (type) {\n case 'data':\n dispatch({\n type: 'setData',\n action: {\n ...(key === '' && {\n formData: handleFn(key, value, 'data'),\n }),\n ...(key !== '' && {\n set: {\n [key]: handleFn(key, value, 'data'),\n },\n }),\n },\n })\n break\n case 'uiSchema':\n dispatch({\n type: 'setUi',\n action: {\n ...(key === '' && {\n uiSchema: handleFn(key, value, 'uiSchema'),\n }),\n ...(key !== '' && {\n set: {\n [getKey(key, 'uiSchema')]: handleFn(key, value, 'uiSchema'),\n },\n }),\n },\n })\n break\n case 'dataSchema':\n dispatch({\n type: 'setValidate',\n action: {\n ...(key === '' && {\n dataSchema: handleFn(key, value, 'dataSchema'),\n }),\n ...(key !== '' && {\n set: {\n [getKey(key, 'dataSchema')]: handleFn(\n key,\n value,\n 'dataSchema'\n ),\n },\n }),\n },\n })\n break\n default:\n break\n }\n },\n [dispatch, getKey, handleFn]\n )\n\n // 支持深度merge,类似webpack-merge方式\n const merge = useCallback<Merge>(\n (key, type, value) => {\n switch (type) {\n case 'data':\n dispatch({\n type: 'setData',\n action: {\n ...(key === '' && {\n formData: handleFn(key, value, 'data', 'merge'),\n }),\n ...(key !== '' && {\n set: {\n [key]: handleFn(key, value, 'data', 'merge'),\n },\n }),\n },\n })\n break\n case 'uiSchema':\n dispatch({\n type: 'setUi',\n action: {\n ...(key === '' && {\n uiSchema: handleFn(key, value, 'uiSchema', 'merge'),\n }),\n ...(key !== '' && {\n set: {\n [getKey(key, 'uiSchema')]: handleFn(\n key,\n value,\n 'uiSchema',\n 'merge'\n ),\n },\n }),\n },\n })\n break\n case 'dataSchema':\n dispatch({\n type: 'setValidate',\n action: {\n ...(key === '' && {\n dataSchema: handleFn(key, value, 'dataSchema', 'merge'),\n }),\n ...(key !== '' && {\n set: {\n [getKey(key, 'dataSchema')]: handleFn(\n key,\n value,\n 'dataSchema',\n 'merge'\n ),\n },\n }),\n },\n })\n break\n default:\n break\n }\n },\n [dispatch, getKey, handleFn]\n )\n /**\n * 删除一个表单项(同步删除uiSchema、dataSchema中的配置)\n */\n const deleteField = useCallback(\n (key, cb) => {\n dispatch({\n type: 'deleteField',\n action: {\n fieldKey: key,\n get,\n getKey,\n getTypeKey,\n },\n })\n cb && cb()\n },\n [dispatch, get, getKey, getTypeKey]\n )\n /**\n * 添加一个表单项\n */\n const addField = useCallback(\n ({\n fieldKey,\n closestEdge,\n unitedSchema,\n overFieldKey,\n cb,\n shouldDelete,\n }) => {\n dispatch({\n type: 'addField',\n action: {\n fieldKey,\n closestEdge,\n unitedSchema,\n overFieldKey,\n get,\n getKey,\n getTypeKey,\n shouldDelete,\n },\n })\n cb && cb()\n },\n [dispatch, get, getKey, getTypeKey]\n )\n return {\n get,\n set,\n deleteField,\n addField,\n merge,\n }\n}\n\nexport default useSchema\n","/*\n * 计算新的title\n * @Author: jiangxiaowei\n * @Date: 2022-01-18 20:49:16\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-03-11 11:02:32\n */\nimport { useState, useEffect, useMemo } from 'react'\nimport { typeCheck } from '@innoways/utils'\nimport type { TitlePlacement, TitleUi } from '@innoways/utils'\n\n/**\n * title margin的基础数值,分别对应title在不同方位的布局\n */\nconst baseTitleMargin: Record<string, string[]> = {\n top: ['0', '0', '5px', '0'],\n right: ['0', '0', '0', '10px'],\n bottom: ['5px', '0', '0', '0'],\n left: ['0', '10px', '0', '0'],\n}\n\n/**\n * margin中index对应margin方向的映射\n */\nconst indexToMarginP = [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n]\n\nexport interface MarginType {\n style: string\n stringArr: string[]\n}\n\nexport function calcTitleMargin(\n titleUi: TitleUi,\n titlePlacement?: TitlePlacement\n): MarginType {\n // 根据title布局确认基础margin,默认使用\n let marginRes: string[] = baseTitleMargin[titlePlacement || 'left']\n\n if (Object.hasOwnProperty.call(titleUi, 'margin')) {\n // 解析margin,并映射到数组对应字段,数组顺序与margin原书写顺序一致\n let tmpMargin = titleUi?.margin?.split(' ') || []\n tmpMargin = tmpMargin.filter((item: any) => !!item)\n\n if (tmpMargin.length === 1) {\n marginRes = marginRes.map(() => tmpMargin[0])\n } else if (tmpMargin.length === 2) {\n marginRes = marginRes.map((item, idx) => {\n return idx % 2 === 0 ? tmpMargin[0] : tmpMargin[1]\n })\n } else if (tmpMargin.length === 3) {\n marginRes = marginRes.map((item, idx) => {\n return idx === 3 ? tmpMargin[1] : tmpMargin[idx]\n })\n } else {\n marginRes = tmpMargin\n }\n }\n\n // 如果配置了marginRight等字段,则优先级更高,可覆盖base配置\n marginRes = marginRes.map((item, idx) => {\n const part = indexToMarginP[idx] as\n | 'marginTop'\n | 'marginRight'\n | 'marginBottom'\n | 'marginLeft'\n const hasPartMargin = Object.hasOwnProperty.call(titleUi, part)\n const value =\n hasPartMargin && titleUi !== null\n ? Object.hasOwnProperty.call(titleUi, part) &&\n titleUi[part] !== undefined\n ? titleUi[part]\n : item\n : item\n return Number.isNaN(Number(value)) ? `${value}` : `${value}px`\n })\n\n return {\n // 用于覆写style\n style: marginRes.join(' '),\n // 用于计算其他元素的宽度或padding\n stringArr: marginRes,\n }\n}\n\nexport type TitleWidth = string | number\n\n/**\n *\n * @param titleUi ui中的title字段\n * @param type ui的type类型\n * @returns\n */\nconst useTitle = (titleUi: TitleUi, type?: string): TitleUi => {\n // title的margin样式\n const [titleMargin, onChangeTitleMargin] = useState(() => {\n return calcTitleMargin(titleUi, titleUi?.placement)\n })\n useEffect(() => {\n onChangeTitleMargin(calcTitleMargin(titleUi, titleUi?.placement))\n }, [titleUi])\n\n // 标题宽度\n const titleWidth = useMemo(() => {\n if (type === 'object') return '100%'\n return typeCheck(titleUi?.width || 82) === 'Number'\n ? `${titleUi?.width || 82}px`\n : titleUi?.width || '82px'\n }, [titleUi?.width, type])\n return {\n ...titleUi,\n margin: titleMargin.style,\n width: titleWidth,\n marginTop: titleMargin.stringArr[0],\n marginRight: titleMargin.stringArr[1],\n marginBottom: titleMargin.stringArr[2],\n marginLeft: titleMargin.stringArr[3],\n }\n}\n\nexport default useTitle\n","/*\n * drip form全局配置\n * @Author: jiangxiaowei\n * @Date: 2022-09-21 16:41:46\n * @Last Modified by: jiangxiaowei\n * @Last Modified time: 2022-09-29 17:33:39\n */\n\nimport { createContext, useContext } from 'react'\n\nexport type UndefinedComponentFn = (param: {\n theme?: string\n type?: string\n fieldKey: string\n}) => string\n\nexport type GlobalOptions = Partial<{\n // (一般情况无需设置)true: formData、unitedSchema变化会触发reducer的reload false:formData和unitedSchema变化不会触发重新渲染\n reload: boolean\n // 使用未定义的组件(主题中查找不到该组件) tip:提示无法找到主题xxx中的xx组件,请确认是否倒入 hidden:直接隐藏该组件,控制台提示\n undefinedComponent:\n | {\n type: 'tips'\n value: string | UndefinedComponentFn\n }\n | {\n type: 'console'\n consoleType: 'log' | 'warn' | 'error'\n value: string | UndefinedComponentFn\n }\n // ajv校验防抖延迟时间 单位:ms(避免数据频繁变化多次调用ajv校验函数) 默认不延迟 注意:大部分情况无需设置延迟\n ajvValidateDelay: number\n fieldTitleEditable: boolean | undefined\n selectedFieldKey: string | null | undefined\n setFieldTitleChange: (title: string, fieldKey: string) => void | undefined\n showTitleWithIcon: Function | undefined | null\n getDeletedColumnsIndex?: Function | undefined | null\n}>\n\n// 默认全局配置\nexport const defaultGlobalOptions: GlobalOptions = {\n reload: true,\n ajvValidateDelay: 0,\n undefinedComponent: {\n type: 'tips',\n value: ({ theme, type, fieldKey }) => {\n if (theme && type) {\n return `Unable to find ${type} component in theme ${theme}, please confirm whether to import it`\n } else {\n return `Unable to find custom component ${fieldKey}, please confirm whether to import it`\n }\n },\n },\n fieldTitleEditable: false,\n selectedFieldKey: null,\n setFieldTitleChange: () => {},\n showTitleWithIcon: null,\n getDeletedColumnsIndex: null,\n}\n\nexport const globalOptionsContext =\n createContext<GlobalOptions>(defaultGlobalOptions)\n\n// 返回上一次的value值\nconst useGlobalOptions = (): GlobalOptions => useContext(globalOptionsContext)\n\nexport default useGlobalOptions\n","/*\n * 全局状态\n * @Author: linjunchen5\n */\n\nimport { createContext, useContext } from 'react'\n\nexport type TGlobalState = Partial<{\n // 暂存的错误信息\n stageErrors: Record<string, string>\n apiJson: Record<string, any>\n webModalForPlaceAutoCompleteField: string | null\n setGlobalState: (state: TGlobalState) => void\n}>\n\n// 默认全局状态\nexport const defaultGlobalState: TGlobalState = {\n stageErrors: {},\n apiJson: {},\n webModalForPlaceAutoCompleteField: null,\n setGlobalState: () => {},\n}\n\nexport const globalStateContext =\n createContext<TGlobalState>(defaultGlobalState)\n\n// 返回上一次的value值\nconst useGlobalState = (): TGlobalState => useContext(globalStateContext)\n\nexport default useGlobalState\n","import { fetchFnJsonKey } from '@innoways/utils'\nimport { useEffect, useState } from 'react'\n\nconst useCountryStateCityOptions: any = (\n selectedOptions: any,\n countryConfig: any,\n stateConfig: any,\n cityConfig: any\n): any => {\n const [countryOption, setCountryOption] = useState([])\n const [stateOption, setStateOption] = useState([])\n const [cityOption, setCityOption] = useState([])\n\n useEffect(() => {\n if (countryConfig) {\n fetchFnJsonKey({\n config: { ...countryConfig },\n dataHandler: setCountryOption,\n })\n }\n }, [JSON.stringify(countryConfig)])\n\n useEffect(() => {\n if (selectedOptions.country && stateConfig) {\n let temp = { ...stateConfig }\n temp.url = temp.url.replace(':countryCode', selectedOptions.country)\n fetchFnJsonKey({ config: temp, dataHandler: setStateOption })\n }\n }, [selectedOptions.country, JSON.stringify(stateConfig)])\n\n useEffect(() => {\n if (selectedOptions.state && stateConfig && cityConfig) {\n let temp = { ...cityConfig }\n temp.url = temp.url.replace(':stateCode', selectedOptions.state)\n fetchFnJsonKey({ config: temp, dataHandler: setCityOption })\n } else if (\n selectedOptions.country &&\n countryConfig &&\n cityConfig &&\n !stateConfig\n ) {\n let temp = { ...cityConfig }\n temp.url = temp.url.replace(':countryCode', selectedOptions.country)\n fetchFnJsonKey({ config: temp, dataHandler: setCityOption })\n }\n }, [\n selectedOptions.country,\n JSON.stringify(countryConfig),\n selectedOptions.state,\n JSON.stringify(stateConfig),\n JSON.stringify(cityConfig),\n ])\n\n return {\n countryOption,\n stateOption,\n cityOption,\n setCountryOption,\n setStateOption,\n setCityOption,\n }\n}\n\nexport default useCountryStateCityOptions\n","import { useState, useEffect } from 'react'\n\nconst useScreenSize = () => {\n const [screenSize, setScreenSize] = useState(window.innerWidth)\n\n useEffect(() => {\n const handleResize = () => setScreenSize(window.innerWidth)\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return screenSize\n}\nexport default useScreenSize\n"],"names":["produce"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innoways/hooks",
3
- "version": "8.0.17",
3
+ "version": "8.0.18",
4
4
  "description": "drip-form通用hooks",
5
5
  "keywords": [
6
6
  "hooks",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.10.2",
34
- "@innoways/utils": "^8.0.17",
34
+ "@innoways/utils": "^8.0.18",
35
35
  "ahooks": "^2.10.12",
36
36
  "ajv": "^8.6.2",
37
37
  "immer": "^9.0.5",