@schemx/vue 1.0.0 → 1.0.1
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/README.md +161 -141
- package/dist/analyze.html +1 -1
- package/dist/bridge/fieldBridge.d.ts +12 -0
- package/dist/bridge/fieldBridge.d.ts.map +1 -1
- package/dist/bridge/formBridge.d.ts +33 -0
- package/dist/bridge/formBridge.d.ts.map +1 -1
- package/dist/bridge/formInstance.d.ts +20 -1
- package/dist/bridge/formInstance.d.ts.map +1 -1
- package/dist/bridge/helpers.d.ts +8 -0
- package/dist/bridge/helpers.d.ts.map +1 -1
- package/dist/bridge/index.d.ts +1 -1
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/types.d.ts +94 -4
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/bridge/viewSchemaBridge.d.ts +14 -1
- package/dist/bridge/viewSchemaBridge.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.vue.d.ts +12 -0
- package/dist/components/Button/index.vue.d.ts.map +1 -1
- package/dist/components/Button/types.d.ts +15 -5
- package/dist/components/Button/types.d.ts.map +1 -1
- package/dist/components/Col/index.d.ts +4 -5
- package/dist/components/Col/index.d.ts.map +1 -1
- package/dist/components/ConfigProvider/index.d.ts +8 -2
- package/dist/components/ConfigProvider/index.d.ts.map +1 -1
- package/dist/components/Dynamic/index.d.ts +9 -3
- package/dist/components/Dynamic/index.d.ts.map +1 -1
- package/dist/components/Field/index.d.ts +13 -2
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/slot.d.ts +32 -9
- package/dist/components/Field/slot.d.ts.map +1 -1
- package/dist/components/Group/index.d.ts +15 -5
- package/dist/components/Group/index.d.ts.map +1 -1
- package/dist/components/Group/slot.d.ts +36 -9
- package/dist/components/Group/slot.d.ts.map +1 -1
- package/dist/components/SchemaList/index.d.ts +15 -5
- package/dist/components/SchemaList/index.d.ts.map +1 -1
- package/dist/components/Wrapper/index.vue.d.ts +6 -0
- package/dist/components/Wrapper/index.vue.d.ts.map +1 -1
- package/dist/config/appConfig.d.ts +10 -0
- package/dist/config/appConfig.d.ts.map +1 -1
- package/dist/config/defaultVueSchemaConfig.d.ts +40 -0
- package/dist/config/defaultVueSchemaConfig.d.ts.map +1 -0
- package/dist/config/index.d.ts +15 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/vueConfig.d.ts +7 -0
- package/dist/config/vueConfig.d.ts.map +1 -1
- package/dist/context/configProviderContext.d.ts +15 -0
- package/dist/context/configProviderContext.d.ts.map +1 -0
- package/dist/context/fieldContext.d.ts +11 -0
- package/dist/context/fieldContext.d.ts.map +1 -0
- package/dist/context/formContext.d.ts +76 -0
- package/dist/context/formContext.d.ts.map +1 -0
- package/dist/context/index.d.ts +18 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/form.d.ts +8 -0
- package/dist/form.d.ts.map +1 -1
- package/dist/hocs/withRemoteOptions.d.ts +6 -2
- package/dist/hocs/withRemoteOptions.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +24 -14
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useDictionary.d.ts +32 -9
- package/dist/hooks/useDictionary.d.ts.map +1 -1
- package/dist/hooks/useField.d.ts +7 -0
- package/dist/hooks/useField.d.ts.map +1 -1
- package/dist/hooks/useForm.d.ts.map +1 -1
- package/dist/hooks/useFormSelector.d.ts.map +1 -1
- package/dist/hooks/useViewSchemas.d.ts +26 -2
- package/dist/hooks/useViewSchemas.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +33 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +224 -164
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/definition.d.ts +153 -0
- package/dist/types/definition.d.ts.map +1 -0
- package/dist/types/dictionary.d.ts +9 -3
- package/dist/types/dictionary.d.ts.map +1 -1
- package/dist/types/field.d.ts +116 -21
- package/dist/types/field.d.ts.map +1 -1
- package/dist/types/form.d.ts +42 -1
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/layout.d.ts +31 -6
- package/dist/types/layout.d.ts.map +1 -1
- package/dist/utils/colProvider.d.ts +3 -1
- package/dist/utils/colProvider.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +3 -6
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/dynamic.d.ts +6 -2
- package/dist/utils/dynamic.d.ts.map +1 -1
- package/dist/utils/equal.d.ts +2 -2
- package/dist/utils/helpers.d.ts +26 -2
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/index.d.ts +15 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/validation.d.ts +6 -2
- package/dist/utils/validation.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/config/providerConfig.d.ts +0 -22
- package/dist/config/providerConfig.d.ts.map +0 -1
- package/dist/hooks/provideFieldContext.d.ts +0 -40
- package/dist/hooks/provideFieldContext.d.ts.map +0 -1
- package/dist/hooks/provideFormConfigContext.d.ts +0 -71
- package/dist/hooks/provideFormConfigContext.d.ts.map +0 -1
- package/dist/hooks/provideFormContext.d.ts +0 -26
- package/dist/hooks/provideFormContext.d.ts.map +0 -1
package/dist/form.d.ts
CHANGED
|
@@ -26,8 +26,16 @@ export interface SchemxInstallOptions extends SchemxVueConfig {
|
|
|
26
26
|
* @param extra - 要挂载的静态属性
|
|
27
27
|
* @typeParam TComponent - 原始组件类型。
|
|
28
28
|
* @typeParam TExtras - 待挂载的静态属性类型。
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const Plugin = withInstall(Component, { install(app) { app.component("Demo", Component) } })
|
|
33
|
+
* ```
|
|
29
34
|
*/
|
|
30
35
|
export declare function withInstall<TComponent extends object, TExtras extends Record<string, unknown>>(comp: TComponent, extra: TExtras): TComponent & TExtras;
|
|
36
|
+
/**
|
|
37
|
+
* 挂载了 Vue 插件安装方法和 `Field` 子组件的 Form 组件类型。
|
|
38
|
+
*/
|
|
31
39
|
export type SchemxFormPlugin = typeof SchemxForm & {
|
|
32
40
|
install: (app: App, options?: SchemxInstallOptions) => void;
|
|
33
41
|
Field: typeof Field;
|
package/dist/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,MAAM,oBAAoB,CAAA;AAEtC,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,MAAM,oBAAoB,CAAA;AAEtC,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GACK,UAAU,GAAG,OAAO,CAC1D;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,UAAU,GAAG;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,KAAK,EAAE,OAAO,KAAK,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,gBAAgB,EAYL,gBAAgB,CAAA;AAEjC,eAAe,gBAAgB,CAAA"}
|
|
@@ -3,9 +3,13 @@ import { Component } from 'vue';
|
|
|
3
3
|
* WithRemoteOptions 注入给被包装组件的额外 Props
|
|
4
4
|
*/
|
|
5
5
|
export interface RemoteOptionsInjectedProps {
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* 加载的选项列表
|
|
8
|
+
*/
|
|
7
9
|
options: unknown[];
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* 加载状态
|
|
12
|
+
*/
|
|
9
13
|
loading: boolean;
|
|
10
14
|
}
|
|
11
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withRemoteOptions.d.ts","sourceRoot":"","sources":["../../src/hocs/withRemoteOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAwD,MAAM,KAAK,CAAA;AAOrF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC
|
|
1
|
+
{"version":3,"file":"withRemoteOptions.d.ts","sourceRoot":"","sources":["../../src/hocs/withRemoteOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAwD,MAAM,KAAK,CAAA;AAOrF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;CACjB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAiCxE;AAED,eAAe,iBAAiB,CAAA"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -3,26 +3,36 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module hooks
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* useForm - 表单状态管理
|
|
8
|
+
*/
|
|
7
9
|
export { useForm } from './useForm';
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Vue Form Instance - 在 Vue effect 中可追踪的 Form 实例。
|
|
12
|
+
*/
|
|
9
13
|
export type { VueSchemxInstance } from '../bridge';
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* useField - 单字段控制
|
|
16
|
+
*/
|
|
13
17
|
export { useField } from './useField';
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
/**
|
|
19
|
+
* useWatch - 字段变化监听
|
|
20
|
+
*/
|
|
17
21
|
export { useWatch, useWatchField, useWatchFields, useWatchAll } from './useWatch';
|
|
18
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* useDictionary - 字典选项加载
|
|
24
|
+
*/
|
|
19
25
|
export { useDictionary, type UseDictionaryReturn } from './useDictionary';
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
/**
|
|
27
|
+
* useStableRef - 引用稳定化的 shallowRef
|
|
28
|
+
*/
|
|
23
29
|
export { useStableRef } from './useStableRef';
|
|
24
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* useViewSchemas - ViewSchemas Vue 桥接
|
|
32
|
+
*/
|
|
25
33
|
export { useViewSchemas } from './useViewSchemas';
|
|
26
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* useFormSelector - 表单值 Selector Vue 桥接
|
|
36
|
+
*/
|
|
27
37
|
export { useFormSelector, type UseFormSelectorOptions } from './useFormSelector';
|
|
28
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEjF;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAEzE;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -3,26 +3,41 @@ import { SchemxDictionary } from '../types/dictionary';
|
|
|
3
3
|
import { NamePath, Values } from '@schemx/core';
|
|
4
4
|
export type { SchemxDictionary, SchemxWithDictionary } from '../types/dictionary';
|
|
5
5
|
/**
|
|
6
|
-
* useDictionary
|
|
6
|
+
* useDictionary 返回值。
|
|
7
|
+
*
|
|
8
|
+
* @typeParam TOption - 格式化后的字典选项类型。
|
|
7
9
|
*/
|
|
8
10
|
export interface UseDictionaryReturn<TOption = unknown> {
|
|
9
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* 远程加载的字典选项列表(响应式)
|
|
13
|
+
*/
|
|
10
14
|
list: Ref<TOption[]>;
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* 请求加载状态(响应式)
|
|
17
|
+
*/
|
|
12
18
|
loading: Ref<boolean>;
|
|
13
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* 请求错误信息(响应式)
|
|
21
|
+
*/
|
|
14
22
|
error: Ref<Error | undefined>;
|
|
15
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* 触发字典选项加载
|
|
25
|
+
*/
|
|
16
26
|
loadDict: () => Promise<void>;
|
|
17
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* 使用当前配置重新执行 api
|
|
29
|
+
*/
|
|
18
30
|
refresh: () => Promise<void>;
|
|
19
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* 直接修改 list 的值,不触发 api 调用
|
|
33
|
+
*/
|
|
20
34
|
mutate: (data: TOption[]) => void;
|
|
21
35
|
}
|
|
22
36
|
/**
|
|
23
|
-
*
|
|
37
|
+
* useDictionary 返回值的旧类型别名。
|
|
24
38
|
*
|
|
25
|
-
*
|
|
39
|
+
* @deprecated 请使用 `UseDictionaryReturn`。
|
|
40
|
+
* @typeParam TOption - 格式化后的字典选项类型。
|
|
26
41
|
*/
|
|
27
42
|
export type UseDictOptionsReturn<TOption = unknown> = UseDictionaryReturn<TOption>;
|
|
28
43
|
/**
|
|
@@ -30,6 +45,11 @@ export type UseDictOptionsReturn<TOption = unknown> = UseDictionaryReturn<TOptio
|
|
|
30
45
|
*
|
|
31
46
|
* @param err - 捕获的值(可能是任意类型)
|
|
32
47
|
* @returns 包装原始值的 `Error` 对象
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const error = normalizeError("request failed")
|
|
52
|
+
* ```
|
|
33
53
|
*/
|
|
34
54
|
export declare function normalizeError(err: unknown): Error;
|
|
35
55
|
/**
|
|
@@ -40,6 +60,9 @@ export declare function normalizeError(err: unknown): Error;
|
|
|
40
60
|
* 重试、错误处理等能力。
|
|
41
61
|
*
|
|
42
62
|
* @typeParam TValues - 表单值类型
|
|
63
|
+
* @typeParam TName - 当前字段路径类型
|
|
64
|
+
* @typeParam TResponse - api 的原始返回值类型
|
|
65
|
+
* @typeParam TOption - 格式化后的字典选项类型
|
|
43
66
|
* @param options - 字典配置选项
|
|
44
67
|
* @param fieldName - 当前字段名,用于 resetOnDepsChange 时清空字段值
|
|
45
68
|
* @returns `{ list, loading, error, loadDict, refresh, mutate }`:响应式选项、
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDictionary.d.ts","sourceRoot":"","sources":["../../src/hooks/useDictionary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA6B,GAAG,EAAmB,MAAM,KAAK,CAAA;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"useDictionary.d.ts","sourceRoot":"","sources":["../../src/hooks/useDictionary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA6B,GAAG,EAAmB,MAAM,KAAK,CAAA;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAM1D,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,EAAE,MAAM,cAAc,CAAA;AAEpE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEhF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACpB;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAElF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,KAAK,SAAS,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EACnD,SAAS,GAAG,OAAO,EACnB,OAAO,GAAG,OAAO,EAEjB,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EACtD,YAAY,KAAK,KAChB,mBAAmB,CAAC,OAAO,CAwL7B,CAAA;AA8DD,eAAe,aAAa,CAAA"}
|
package/dist/hooks/useField.d.ts
CHANGED
|
@@ -3,8 +3,15 @@ import { NamePath, Values } from '@schemx/core';
|
|
|
3
3
|
/**
|
|
4
4
|
* 获取单个字段的控制能力。
|
|
5
5
|
*
|
|
6
|
+
* @typeParam TValues - 表单值类型。
|
|
6
7
|
* @param name - 字段路径(支持嵌套字段)。
|
|
7
8
|
* @returns 包含 Vue Ref 状态和 Core 字段操作的控制器。
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const field = useField("email")
|
|
13
|
+
* field.value.value = "user@example.com"
|
|
14
|
+
* ```
|
|
8
15
|
*/
|
|
9
16
|
export declare const useField: <TValues extends Values = Values>(name: NamePath<TValues>) => FieldInstance<TValues>;
|
|
10
17
|
export default useField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["../../src/hooks/useField.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["../../src/hooks/useField.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,EAAE,MAAM,cAAc,CAAA;AAuDpE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,SAAS,MAAM,GAAG,MAAM,EACtD,MAAM,QAAQ,CAAC,OAAO,CAAC,KACtB,aAAa,CAAC,OAAO,CAQvB,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAaA,OAAO,
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAaA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAEvE;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,CAAE,SAAQ,iBAAiB,CAC/E,OAAO,EACP,QAAQ,CAAC,OAAO,CAAC,CAClB;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACrD,OAAO,GAAE,cAAc,CAAC,OAAO,CAAM,GACpC,iBAAiB,CAAC,OAAO,CAAC,CAqB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormSelector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAIrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,SAAS;IAC/C;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IAE1D;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EAClF,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,EAClD,OAAO,GAAE,sBAAsB,CAAC,SAAS,CAAM,GAC9C,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFormSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormSelector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAIrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,SAAS;IAC/C;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IAE1D;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EAClF,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,EAClD,OAAO,GAAE,sBAAsB,CAAC,SAAS,CAAM,GAC9C,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAyBjC;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
import { ComputedRef, ShallowRef } from 'vue';
|
|
2
2
|
import { SchemxInstance, SchemxViewSchema, Values } from '@schemx/core';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* 获取当前表单共享的 ViewSchema 列表。
|
|
5
|
+
*
|
|
6
|
+
* @typeParam TValues - 表单值类型。
|
|
7
|
+
* @param form - 要读取 ViewSchema 的表单实例。
|
|
8
|
+
* @returns 当前表单的响应式 ViewSchema 列表。
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const schemas = useViewSchemas(form)
|
|
13
|
+
* console.log(schemas.value)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
4
16
|
export declare function useViewSchemas<TValues extends Values = Values>(form: SchemxInstance<TValues>): ShallowRef<readonly SchemxViewSchema<TValues>[]>;
|
|
5
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* 获取当前 key 对应的共享 ViewSchema。
|
|
19
|
+
*
|
|
20
|
+
* @typeParam TValues - 表单值类型。
|
|
21
|
+
* @param form - 要读取 ViewSchema 的表单实例。
|
|
22
|
+
* @param getKey - 返回目标 ViewSchema key 的响应式函数。
|
|
23
|
+
* @returns 当前 key 对应的 ViewSchema;不存在时为 `undefined`。
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const schema = useViewSchema(form, () => currentKey.value)
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
6
30
|
export declare function useViewSchema<TValues extends Values = Values>(form: SchemxInstance<TValues>, getKey: () => string): ComputedRef<SchemxViewSchema<TValues> | undefined>;
|
|
7
31
|
export default useViewSchemas;
|
|
8
32
|
//# sourceMappingURL=useViewSchemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useViewSchemas.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE5E
|
|
1
|
+
{"version":3,"file":"useViewSchemas.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE5E;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC5D,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,GAC5B,UAAU,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAIlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC3D,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,MAAM,GACnB,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAMpD;AAED,eAAe,cAAc,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("@schemx/core"),r=require("classnames"),o=require("@schemx/core/adapter"),n=require("es-toolkit");function a(t){return e.shallowRef(t)}function l(e){const t=a(e.getSnapshot());return e.subscribe(()=>{t.value=e.getSnapshot()}),t}function s(e,t){const r=e.stateAdapter.field(t),o=e.fieldStates.get(r);if(o)return o;const n=r.getSnapshot(),l=a(n.value),s=a(n.errors),i=a(n.touched),d=a(n.pending);r.subscribe(()=>{const e=r.getSnapshot();var t,o;Object.is(l.value,e.value)||(l.value=e.value),t=s.value,o=e.errors,t.length===o.length&&t.every((e,t)=>e===o[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),d.value!==e.pending&&(d.value=e.pending)});const c={value:l,errors:s,touched:i,pending:d};return e.fieldStates.set(r,c),c}function i(r){const o=e.shallowRef(r.getViewSchemas()),n=e.computed(()=>function(e){const r=new Map,o=e=>{for(const n of e)if(r.set(n.key,n),t.isViewGroupSchema(n))o(n.children);else if(t.isViewDynamicSchema(n))for(const e of n.items)o(e.children)};return o(e),r}(o.value)),a=r.subscribeViewSchemas(e=>{o.value=e});let l=!1;return{schemasByKey:n,viewSchemas:o,dispose:()=>{l||(l=!0,a())}}}const d=new WeakMap,c=new WeakMap;function u(e){const t=function(e){const t=c.get(e);if(t)return t;const r=d.get(e);if(r)return r;const n=function(e){let t,r=0,n=!1;const a=()=>{const t=o.createFormStateAdapter(e),r=l(t.values),n=l(t.touchedFields),a=l(t.pendingFields),s=l(t.loading),i=new Map;let d,c=!1;const u=()=>{c||(c=!0,i.clear(),t.dispose())};return{stateAdapter:t,values:r,touchedFields:n,pendingFields:a,loading:s,fieldStates:i,viewSchemaState:d,dispose:u}},d=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=a()),t},c=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};d(),r++;let e=!1;return()=>{e||n||(e=!0,r--,0===r&&c())}},p=(e,r)=>{if(!t)return;s(t,e)[r].value},m=e=>{if(t)if(void 0!==e)for(const r of e)s(t,r).value.value;else t.values.value},v=e=>{if(t)switch(e){case"values":t.values.value;break;case"touchedFields":t.touchedFields.value;break;case"pendingFields":t.pendingFields.value;break;case"loading":t.loading.value}},f=()=>d().values,h=e=>s(d(),e),y=()=>{const t=d();return t.viewSchemaState??(t.viewSchemaState=i(e))},g=()=>{n||(n=!0,r=0,c())},b=function(e,t){let r=!1;return{...e,getFieldValue:o=>(r||t.trackField(o,"value"),e.getFieldValue(o)),getFieldErrors:o=>(r||t.trackField(o,"errors"),e.getFieldErrors(o)),isFieldTouched:o=>(r||t.trackField(o,"touched"),e.isFieldTouched(o)),isFieldPending:o=>(r||t.trackField(o,"pending"),e.isFieldPending(o)),getFieldsValue:o=>(r||t.trackFieldsValue(o),e.getFieldsValue(o)),getTouchedFields:()=>(r||t.trackForm("touchedFields"),e.getTouchedFields()),getPendingFields:()=>(r||t.trackForm("pendingFields"),e.getPendingFields()),isLoading:()=>(r||t.trackForm("loading"),e.isLoading()),destroy:()=>{r||(r=!0,t.destroy(),e.destroy())}}}(e,{trackField:p,trackFieldsValue:m,trackForm:v,destroy:g}),x={core:e,instance:b,retain:u,trackField:p,trackFieldsValue:m,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:y,destroy:g};return x}(e);return d.set(e,n),c.set(n.instance,n),n}(e),r=t.retain();return{runtime:t,release:r}}const p=Symbol("schemx:app-config"),m=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function v(e){if(void 0===e)return;const t=Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:Object.freeze({...t})]);return Object.freeze(Object.fromEntries(t))}function f(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:v(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,presetRuleRegistry:e.presetRuleRegistry,colComponent:e.colComponent})}(t);e.provide(p,r)}function h(){return null===e.getCurrentInstance()?m:e.inject(p,m)}const y=Symbol("schemx:config-provider");function g(){if(null!==e.getCurrentInstance())return e.inject(y,void 0)}const b=t.createPresetRuleRegistry(),x=o.createRendererRegistry("input");function C(e,r={}){const o=null==(n=g())?void 0:n.value;var n;return t.mergeSchemxConfig(e,o??{},h(),r,{rendererRegistry:x,presetRuleRegistry:b})}function S(r={}){const o=C(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:o=[],defaultRendererType:n,rendererRegistry:a,presetRuleRegistry:l}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:n,rendererRegistry:a,presetRuleRegistry:l,validatorAdapters:o}}(r)),n={...r,...o},a=u(t.createForm(n)),l=a.runtime.instance;return e.onScopeDispose(()=>{a.release(),l.destroy()}),l}const w=Symbol("schemx:instance"),F=Symbol("schemx:runtime");function k(t){const{runtime:r,release:o}=u(t);return e.provide(w,r.instance),e.provide(F,r),e.onScopeDispose(o),r.instance}function V(){const t=e.inject(w,null);if(!t)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure createFormContext(form) is called synchronously during setup().");return t}function R(){const t=e.inject(F,null);if(t)return t;const r=u(V());return e.onScopeDispose(r.release),r.runtime}const O=r=>{const o=V(),n=R(),a=n.getFieldState(r);return function(r,o,n,a){const l=t.createField(o,n),s=e.computed(()=>a.errors.value),i=e.computed(()=>a.touched.value),d=e.computed(()=>a.pending.value);return{...l,name:n,value:a.value,errors:s,dirty:i,pending:d,getValue:()=>a.value.value,getErrors:()=>a.errors.value,isTouched:()=>a.touched.value,isPending:()=>a.pending.value,getValues:()=>r.getFieldsValue()}}(o,n.core,r,a)},j=Symbol("schemx:field");function A(t){e.provide(j,t)}function B(){const t=e.inject(j);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}function P(r,o,n){const a=R(),l=t.createWatch(a.core,r,o,n);return e.onUnmounted(l),l}function _(e,t,r){return P(e,t,r)}function E(e){return e instanceof Error?e:new Error(String(e))}const N=(t,r)=>{var o;const n=V(),a=e.shallowRef([]),l=e.ref(!1),s=e.ref(void 0);let i=0,d=null;const c=async()=>{const e=++i;null==d||d.abort();const r=new AbortController;d=r;try{const o=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(o))return a.value=[],void(l.value=!1);l.value=!0,s.value=void 0;const d=await(async(e,r)=>{const o=t.retryCount??0,a=t.retryInterval??1e3;let l=new Error("Unknown error");for(let i=0;i<=o;i++)try{if(r.aborted)throw new Error("Dictionary request aborted");return await T(e,n,t.api,r)}catch(s){l=E(s),i<o&&await $(a,r)}throw l})(o,r.signal);if(e!==i||r.signal.aborted)return;const c=await(async e=>{if("function"==typeof(null==t?void 0:t.formatter))return await t.formatter(e,n);if(!Array.isArray(e))throw new Error("[schemx] Dictionary api must return an array when formatter is not provided.");return e})(d);if(e!==i||r.signal.aborted)return;a.value=c,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(c,n),l.value=!1}catch(o){if(r.signal.aborted||e!==i)return;const d=E(o);s.value=d,a.value=[],l.value=!1,"function"==typeof t.onError&&t.onError(d,n)}finally{d===r&&(d=null)}};(null==(o=t.dependsOn)?void 0:o.length)&&_(t.dependsOn,(e,o)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&r&&n.setFieldValue(r,void 0),c()},{inequality:!0});const u=t.immediate??!0;return e.onMounted(()=>{u&&c()}),e.onScopeDispose(()=>{i+=1,null==d||d.abort(),d=null}),{list:a,loading:l,error:s,loadDict:c,refresh:()=>c(),mutate:e=>{a.value=e}}};function $(e,t){return new Promise((r,o)=>{let n=()=>{};const a=()=>{clearTimeout(l),t.removeEventListener("abort",n)},l=setTimeout(()=>{a(),r()},e);n=()=>{a(),o(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function T(e,t,r,o){return r.length>=3?r(e,t,o):r(e,t)}const q=Symbol("schemx:form-config"),D=t=>{e.provide(q,t)};function L(){const t=e.inject(q);if(!t)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure createFormConfigContext(props) is called synchronously during setup().");return t}function W(t){const r=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const r=Object.keys(e),o=Object.keys(t);return r.length===o.length&&r.every(r=>e[r]===t[r])})(r.value,e)||(r.value=e)}),r}function z(t){const r=u(t),o=r.runtime.getViewSchemaState();return e.onScopeDispose(r.release),o.viewSchemas}function M(t,r,o={}){const n=u(t),a=n.runtime.getValuesRef(),l=e.shallowRef(r(a.value)),s=o.equals??Object.is,i=e.watch(a,e=>{const t=r(e);s(l.value,t)||(l.value=t)},{flush:o.flush??"sync"});return e.onScopeDispose(()=>{i(),n.release()}),e.readonly(l)}function G(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function I(e,t){if(!t)return!1;return(Array.isArray(t)?t:[t]).some(t=>function(e){return{onBlur:"blur",onChange:"change",onSubmit:"submit",blur:"blur",change:"change",submit:"submit"}[e]??"submit"}(t)===e)}const H=e=>/[A-Z]/.test(e),K=e=>e.includes("-"),U=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),Z=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),J=(e,t)=>{if(e[t])return e[t];const r=H(t)?U(t):K(t)?Z(t):void 0;return r&&e[r]?e[r]:void 0},Q=(e,t)=>{const r={},o=(n=String(e),(K(n)?Z(n):n)+":");var n;const a=(e=>H(e)?U(e):e)(String(e))+":";for(const[l,s]of Object.entries(t))l.startsWith(o)?r[l.slice(o.length)]=s:l.startsWith(a)&&a!==o&&(r[l.slice(a.length)]=s);return r};function X(e,t){const r=e.findIndex(e=>e.key===t);if(-1===r)return{found:!1,isFirst:!1,isLast:!1};return ee(e[r])?{found:!0,isFirst:!te(e,r,-1),isLast:!te(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}function Y(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function ee(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function te(e,r,o){for(let n=r+o;n>=0&&n<e.length;n+=o){const r=e[n];if(!1!==r.visible){if(t.isViewGroupSchema(r))return!1;if(ee(r))return!0}}return!1}const re=e.defineComponent({name:"SchemxField",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0}},setup(o,{attrs:n,slots:a}){const l=V(),s=e.computed(()=>o.schema),i=function(t,r){const o=u(t),n=o.runtime.getViewSchemaState(),a=e.computed(()=>n.schemasByKey.value.get(r()));return e.onScopeDispose(o.release),a}(l,()=>s.value.key),d=e.computed(()=>i.value&&t.isSchemxViewFieldSchema(i.value)?i.value:s.value),c=L(),p=O(d.value.name);A(p);const m=e.computed(()=>{return e=d.value.validationTrigger,t=c.schemaConfig.validationTrigger,r="onChange",G(e)?e:G(t)?t:r;var e,t,r}),v=e.computed(()=>{const e=!1!==d.value.visible&&!d.value.readonly&&!d.value.disabled,t=d.value.rules,r=Array.isArray(t)?(null==t?void 0:t.length)>0:!!d.value.rules;return e&&(Boolean(d.value.required)||r)}),f=e=>{var t,r;p.setValue(e),null==(r=null==(t=d.value.componentProps)?void 0:t.onChange)||r.call(t,e),v.value&&I("change",m.value)&&p.validate()},h=e=>{var t,r;null==(r=null==(t=d.value.componentProps)?void 0:t.onBlur)||r.call(t,e),v.value&&I("blur",m.value)&&p.validate()},y=e=>{p.setValue(e)},g=W(()=>({...d.value.componentProps??{},value:p.value.value,onChange:f,onBlur:h,"onUpdate:value":y})),{createSlotProps:b,renderAfter:x,renderBefore:C,renderContent:S,renderError:w,renderLabel:F}=function(t){const{schemaRef:r,field:o,form:n,formContext:a,componentProps:l,slots:s}=t,i=(e={})=>({schema:r.value,componentProps:l.value,value:o.value.value,field:o,form:n,...e}),d=e=>{const t=J(s,`${Y(r.value.name)}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>d("After"),renderBefore:()=>d("Before"),renderContent:()=>{const t=n.getRenderer(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const o=Q(Y(r.value.name),s),a=e.h(t,l.value,o),d=J(s,`${Y(r.value.name)}Content`);return d?d(i({columnElement:a})):e.createVNode("div",{class:"schemx-field__control"},[a])},renderError:()=>{const t=J(s,`${Y(r.value.name)}Error`);return t?t(i({errors:o.errors.value})):0===o.errors.value.length?null:e.createVNode("div",{class:"schemx-field__error"},[o.errors.value[0]])},renderLabel:()=>{const t=J(s,`${Y(r.value.name)}Label`);if(t)return t(i());const o=r.value.labelAlign||a.schemaConfig.labelAlign,n=r.value.labelWidth||a.schemaConfig.labelWidth,l=r.value.colon??a.schemaConfig.colon;return e.createVNode("label",{class:"schemx-field__label",style:{width:n,textAlign:o}},[!(r.value.showRequiredMark??Boolean(r.value.required))||r.value.disabled||r.value.readonly?null:e.createVNode("span",{class:"schemx-field__required"},[e.createTextVNode("*")]),e.createVNode("span",{class:"schemx-field__label-text"},[r.value.label,l?":":""])])}}}({schemaRef:d,field:p,form:l,formContext:c,componentProps:g,slots:a});return()=>{if(!1===d.value.visible)return null;const t=J(a,Y(d.value.name)),l=d.value.labelPosition||c.schemaConfig.labelPosition,s=t?t(b()):e.createVNode("div",{class:r("schemx-field",`schemx-field--label-${l}`,{"is-readonly":d.value.readonly,"is-disabled":d.value.disabled})},[F(),e.createVNode("div",{class:"schemx-field__content"},[C(),S(),x(),w()])]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-field-wrapper",o.class,n.class,d.value.class),style:[n.style,o.style,d.value.style]}),[s])}}}),oe=["aria-busy","data-loading","disabled"],ne={key:0,class:"schemx-button__prefix"},ae={key:1,class:"schemx-button__loading",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},le={key:4,class:"schemx-button__suffix"},se=e.defineComponent({name:"SchemxButton",inheritAttrs:!1,__name:"index",props:{loading:{type:Boolean,default:!1},loadingText:{default:void 0},disabled:{type:Boolean,default:!1},size:{default:"medium"}},setup(t){const r=t,o=e.useAttrs(),n=e.computed(()=>r.disabled||r.loading),a=e.computed(()=>["schemx-button",`schemx-button--${r.size}`]);return(t,l)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(o),{class:a.value,"aria-busy":r.loading||void 0,"data-loading":r.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",ne,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ae,[...l[0]||(l[0]=[e.createStaticVNode('<path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path>',8)])])):e.createCommentVNode("",!0),r.loading&&r.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(r.loadingText),1)],64)):e.renderSlot(t.$slots,"default",{},void 0,void 0,3),t.$slots.suffix?(e.openBlock(),e.createElementBlock("span",le,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,oe))}}),ie=e.shallowRef();const de=e.defineComponent({name:"SchemxCol",inheritAttrs:!1,props:{layout:{type:Object,required:!1,default:void 0},component:{type:[Object,Function],required:!1,default:void 0}},setup(t,{attrs:r,slots:o}){const n=e.computed(()=>{const r=t.component??ie.value;return r?e.markRaw(e.toRaw(r)):void 0});return()=>{var a;const l=n.value;if(!l)return(null==(a=o.default)?void 0:a.call(o))??null;const s=t.layout??{},i=s.block?24:s.span??24,d=s.block?0:s.offset??0,{class:c,style:u,...p}=r;return e.h(l,{...p,class:["schemx-col",c],style:u,span:i,offset:d},o)}}});const ce=e.defineComponent({name:"SchemxGroup",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0},renderChildren:{type:Function,required:!1,default:void 0}},setup(o,{attrs:n,slots:a}){var l;const s=e.ref(Boolean(o.schema.defaultCollapsed)),i=e.computed(()=>o.schema.collapsed??s.value),d=(null==(l=e.getCurrentInstance())?void 0:l.uid)??0;e.watch(()=>o.schema.collapsed,(e,t)=>{void 0!==e?s.value=e:void 0!==t&&(s.value=t)});const c=()=>{var e,t;if(!o.schema.collapsible||o.schema.disabled)return;const r=!i.value;void 0===o.schema.collapsed&&(s.value=r),null==(t=(e=o.schema).onCollapsedChange)||t.call(e,r)};return()=>{var l;const s=o.schema;if(!1===s.visible)return null;const u=Boolean(s.collapsible),p=i.value,m=s.destroyOnCollapse??!0,v=`schemx-group-${(null==(l=s.debug)?void 0:l.runtimeNodeId)??`local-${d}`}-${f=s.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,y=`${v}-body`,g=r=>t.isViewDynamicSchema(r)?!1===r.visible?null:r.items.map(e=>e.children.map(e=>g(e))):t.isViewGroupSchema(r)?e.createVNode(ce,{key:r.key,schema:r,class:o.class,style:o.style},a):e.createVNode(re,{key:`${r.key}:${Y(r.name)}`,schema:r},a),{hasHeader:b,renderBodyContent:x,renderHeaderContent:C}=function(t){const{schema:o,collapsed:n,collapsible:a,disabled:l,readonly:s,toggle:i,slots:d,renderChildren:c}=t,u=String(o.key),p=J(d,`${u}Header`),m=J(d,`${u}Label`),v=J(d,`${u}Content`),f={schema:o,collapsed:n,collapsible:a,disabled:l,readonly:s,toggle:i};return{hasHeader:Boolean(o.label||p||m),renderBodyContent:()=>v?v(f):c(),renderHeaderContent:()=>{if(p)return p(f);const t=m?m(f):e.createVNode("span",{class:"schemx-group__title"},[o.label]);return a?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:s,collapsed:p,collapsible:u,disabled:Boolean(s.disabled),readonly:Boolean(s.readonly),toggle:c,slots:a,renderChildren:()=>o.renderChildren?o.renderChildren(s.children):s.children.map(g)}),S=e.createVNode("div",{id:y,role:"group","aria-labelledby":s.label?h:void 0,"aria-hidden":p||void 0,class:"schemx-group__body",style:!m&&p?{display:"none"}:void 0},[x()]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-group-wrapper",o.class,n.class,s.class),"data-key":s.key,"aria-disabled":s.disabled||void 0,style:[n.style,o.style,s.style]}),[e.createVNode("div",{class:r("schemx-group",{"schemx-group--collapsed":p,"is-readonly":s.readonly,"is-disabled":s.disabled})},[b&&e.createVNode("div",{id:h,role:u?"button":void 0,tabindex:u?s.disabled?-1:0:void 0,"aria-expanded":u?!p:void 0,"aria-controls":u?y:void 0,"aria-disabled":u&&s.disabled||void 0,class:r("schemx-group__header",{"schemx-group__header--clickable":u&&!s.disabled}),onClick:c,onKeydown:e=>{s.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),c())}},[C()]),m?!p&&S:S])])}}}),ue=ce,pe=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},viewSchemas:{type:Array,required:!0},renderChildren:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${Y(e.name)}`,a=e=>{const{isFirst:t,isLast:o}=X(r.viewSchemas,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},l=r=>{if(t.isViewGroupSchema(r))return e.createVNode(ue,{key:r.key,schema:r},o);const l=r;return e.createVNode(re,{key:n(l),schema:l,class:a(l)},o)};return()=>!1===r.schema.visible?null:r.schema.items.map(t=>{const o=r.renderChildren?r.renderChildren(t.children):t.children.map(l);return e.createVNode(e.Fragment,{key:t.key},[o])})}});const me=e.defineComponent({name:"SchemxSchemaList",inheritAttrs:!1,props:{schemas:{type:Array,required:!0},viewSchemas:{type:Array,required:!0},colComponent:{type:[Object,Function],required:!1,default:void 0},fieldClassResolver:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${Y(e.name)}`,a=e=>t.isSchemxViewFieldSchema(e)?n(e):e.key,l=t=>e.h(me,{schemas:t,viewSchemas:r.viewSchemas,colComponent:r.colComponent},o),s=s=>{var i;if(!1===s.visible)return null;let d;return d=t.isViewGroupSchema(s)?e.createVNode(ue,{key:s.key,schema:s,renderChildren:l},o):t.isViewDynamicSchema(s)?e.createVNode(pe,{key:s.key,schema:s,viewSchemas:r.viewSchemas,renderChildren:l},o):e.createVNode(re,{key:n(s),schema:s,class:null==(i=r.fieldClassResolver)?void 0:i.call(r,s)},o),r.colComponent?e.createVNode(de,{key:a(s),component:r.colComponent,layout:s.layout},"function"==typeof(c=d)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?d:{default:()=>[d]}):d;var c};return()=>{const t=r.schemas.map(s);return r.colComponent?e.createVNode("div",{class:"schemx-row"},[t]):t}}}),ve=me,fe={key:0,class:"schemx-actions"},he=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},fieldRules:{default:void 0},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},loading:{type:Boolean,default:void 0},submitter:{type:[Boolean,Object],default:!0},resetter:{type:[Boolean,Object],default:!0},class:{type:[Boolean,null,String,Object,Array],default:""},style:{type:[Boolean,null,String,Object,Array],default:()=>({})},colComponent:{default:void 0},rendererProps:{default:void 0},validatorAdapters:{},defaultRendererType:{},rendererRegistry:{default:void 0},presetRuleRegistry:{default:void 0},onRuleError:{},onFinish:{type:Function,default:void 0},onFinishFailed:{type:Function,default:void 0},onReset:{type:Function,default:void 0},onLoadingChange:{type:Function,default:void 0},onValuesChange:{type:Function,default:void 0},onFieldsChange:{type:Function,default:void 0},lifecycleHooks:{},schedulerOptions:{default:void 0},validationConcurrency:{default:void 0},required:{type:[Boolean,Object]},readonly:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},validationTrigger:{default:void 0},colon:{type:Boolean,default:void 0},showRequiredMark:{type:Boolean,default:void 0}},emits:["update:modelValue"],setup(r,{expose:o,emit:a}){const l=r,s=a,i=e.useSlots(),d=void 0!==l.form,c=e.computed(()=>{const e=n.pick(l,t.defaultSchemxConfigKeys);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),u=h(),p=g(),m=t.getGlobalSchemxConfig(),v={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},f=e.computed(()=>(d?t.mergeSchemxConfig({schemaConfig:c.value},v):t.mergeSchemxConfig({schemaConfig:c.value},(null==p?void 0:p.value)??{},u,v)).schemaConfig??{}),y=e.computed(()=>t.mergeAndResolveSchemxConfig({schemaConfig:c.value},(null==p?void 0:p.value)??{},u,v,m).schemaConfig),b=f.value,x=d?b:y.value,C=e.reactive(b),w=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),F=e=>{for(const r of t.defaultSchemxConfigKeys)w(e,r)||delete C[r];Object.assign(C,e)},V=e.computed(()=>l.colComponent??(null==p?void 0:p.value.colComponent)??u.colComponent??ie.value);D({schemaConfig:C});const R=k(l.form?l.form:S({schemas:l.schemas,schemaConfig:x,initialValues:Object.keys(l.modelValue).length>0?l.modelValue:l.initialValues,rendererProps:l.rendererProps,rendererRegistry:l.rendererRegistry,defaultRendererType:l.defaultRendererType,presetRuleRegistry:l.presetRuleRegistry,fieldRules:l.fieldRules,validatorAdapters:l.validatorAdapters,schedulerOptions:l.schedulerOptions,validationConcurrency:l.validationConcurrency,onFinish:e=>{var t;return null==(t=l.onFinish)?void 0:t.call(l,e)},onFinishFailed:e=>{var t;return null==(t=l.onFinishFailed)?void 0:t.call(l,e)},onReset:()=>{var e;null==(e=l.onReset)||e.call(l)},onLoadingChange:e=>{var t;null==(t=l.onLoadingChange)||t.call(l,e)},onValuesChange:(e,t)=>{var r;null==(r=l.onValuesChange)||r.call(l,e,t)},onFieldsChange:(e,t)=>{var r;null==(r=l.onFieldsChange)||r.call(l,e,t)}})),O=e.computed(()=>l.loading??R.isLoading()),j=e.computed(()=>["schemx",l.class]),A=e.computed(()=>l.style),B=e=>!0===e?{}:e||{},P=e.computed(()=>B(l.submitter)),_=e.computed(()=>B(l.resetter)),E=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),N=e.computed(()=>E(P.value)),$=e.computed(()=>E(_.value)),T=e.computed(()=>!1!==l.submitter&&(void 0!==l.submitter||i.submitter)),q=e.computed(()=>!1!==l.resetter&&(void 0!==l.resetter||i.resetter)),L=e.computed(()=>T.value||q.value),W=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),G=e.computed(()=>O.value||Boolean(N.value.disabled)),I=e.computed(()=>O.value||Boolean($.value.disabled));let H=!1;const K=new Set;e.watch(()=>l.modelValue,t=>{if(!K.delete(e.toRaw(t))){H=!0;try{R.setFieldsValue(t)}finally{H=!1}}},{deep:!0,immediate:d});const U=()=>R.submit(),Z=()=>{R.reset()},J=M(R,e=>e);e.watch(J,t=>{H||(t=>{const r=e.toRaw(t);K.add(r),s("update:modelValue",t),e.nextTick(()=>{K.delete(r)})})(t)},{flush:"sync"}),e.watch(()=>l.schemas,e=>{t.isSchemxSchemas(e)||R.setSchemas(e)},{immediate:d});const Q=z(R),Y=e=>{const{isFirst:t,isLast:r}=X(Q.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":r}},ee=e=>{F(f.value),R.updateSchemaConfig(e)},te=(e,r)=>{const o={...e};if(void 0!==r)for(const n of t.defaultSchemxConfigKeys)w(r,n)&&!w(e,n)&&(o[n]=void 0);F(f.value),Object.keys(o).length>0&&R.updateSchemaConfig(o)};d?e.watch(c,te,{deep:!0,immediate:!0}):e.watch(y,ee,{deep:!0});return o({...R,submit:U,reset:Z}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(j.value),style:e.normalizeStyle(A.value)},[e.createVNode(e.unref(ve),{schemas:e.unref(Q),"view-schemas":e.unref(Q),"col-component":V.value,"field-class-resolver":Y},e.createSlots({_:2},[e.renderList(W.value,(r,o)=>({name:o,fn:e.withCtx(r=>[e.renderSlot(t.$slots,o,e.normalizeProps(e.guardReactiveProps(r??{})))])}))]),1032,["schemas","view-schemas","col-component"]),L.value?(e.openBlock(),e.createElementBlock("div",fe,[q.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(R),loading:O.value,disabled:I.value,reset:Z},void 0,void 0,0):q.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:1},$.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:I.value,onClick:Z}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),T.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(R),loading:O.value,disabled:G.value,submit:U},void 0,void 0,2):T.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:3},N.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:O.value,disabled:G.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(P.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ye,ge;const be=(ye=he,ge={install(e,t={}){f(e,t),e.component("SchemxForm",he)},Field:re},Object.assign(ye,ge));const xe=e.defineComponent({name:"SchemxWrapper",inheritAttrs:!1,__name:"index",props:{readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){const r=t,o=e.useAttrs(),n=e.useSlots(),a=e.ref(!1),l=e.computed(()=>["schemx-wrapper",o.class,r.readonly&&"schemx-wrapper--readonly",r.disabled&&"schemx-wrapper--disabled"]),s=e.computed(()=>{const{class:e,...t}=o;return t}),i=e=>{!e||n.readonly||a.value};return e.onMounted(()=>i(r.readonly)),e.watch(()=>r.readonly,i),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:l.value}),[r.readonly?e.renderSlot(t.$slots,"readonly",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,0):e.renderSlot(t.$slots,"default",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,1)],16))}}),Ce=e.defineComponent({name:"SchemxConfigProvider",inheritAttrs:!1,props:{schemaConfig:{type:Object,default:void 0},rendererProps:{type:Object,default:void 0},validatorAdapters:{type:Array,default:void 0},defaultRendererType:{type:String,default:void 0},rendererRegistry:{type:Object,default:void 0},presetRuleRegistry:{type:Object,default:void 0},colComponent:{type:[Object,Function],default:void 0}},setup:(r,{slots:o})=>(function(r){const o=e.inject(y,void 0),n=e.computed(()=>({...t.mergeSchemxConfig(r.value,(null==o?void 0:o.value)??{}),colComponent:r.value.colComponent??(null==o?void 0:o.value.colComponent)}));e.provide(y,n)}(e.computed(()=>({schemaConfig:r.schemaConfig,rendererProps:r.rendererProps,validatorAdapters:r.validatorAdapters,defaultRendererType:r.defaultRendererType,rendererRegistry:r.rendererRegistry,presetRuleRegistry:r.presetRuleRegistry,colComponent:r.colComponent}))),()=>{var e;return null==(e=o.default)?void 0:e.call(o)})});exports.Col=de,exports.ConfigProvider=Ce,exports.Field=re,exports.Group=ue,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(r,{attrs:o,slots:n}){const a=function(e){return"function"==typeof e?{api:e}:e}(r.dict),l=a?o.fieldName??B().name:void 0,s=a?N(a,l):null,i=e.computed(()=>({...o,dict:a,options:a?null==s?void 0:s.list.value:o.options,loading:a?null==s?void 0:s.loading.value:o.loading}));return()=>e.h(t,i.value,n)}})},exports.Wrapper=xe,exports.createFieldContext=A,exports.createFormConfigContext=D,exports.createFormContext=k,exports.default=be,exports.presetRuleRegistry=b,exports.registerCol=function(e){ie.value=e},exports.rendererRegistry=x,exports.schemxForm=be,exports.useDictionary=N,exports.useField=O,exports.useFieldContext=B,exports.useForm=S,exports.useFormConfigContext=L,exports.useFormContext=V,exports.useFormSelector=M,exports.useStableRef=W,exports.useViewSchemas=z,exports.useWatch=P,exports.useWatchAll=function(e,t){return P(e,t)},exports.useWatchField=function(e,t,r){return P(e,t,r)},exports.useWatchFields=_,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("@schemx/core"),r=require("classnames"),o=require("@schemx/core/adapter"),n=require("es-toolkit");function l(t){return e.shallowRef(t)}function a(e){const t=l(e.getSnapshot());return e.subscribe(()=>{t.value=e.getSnapshot()}),t}function s(e,t){const r=e.stateAdapter.field(t),o=e.fieldStates.get(r);if(o)return o;const n=r.getSnapshot(),a=l(n.value),s=l(n.errors),i=l(n.touched),c=l(n.pending);r.subscribe(()=>{const e=r.getSnapshot();var t,o;Object.is(a.value,e.value)||(a.value=e.value),t=s.value,o=e.errors,t.length===o.length&&t.every((e,t)=>e===o[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),c.value!==e.pending&&(c.value=e.pending)});const d={value:a,errors:s,touched:i,pending:c};return e.fieldStates.set(r,d),d}function i(r){const o=e.shallowRef(r.getViewSchemas()),n=e.computed(()=>function(e){const r=new Map,o=e=>{for(const n of e)if(r.set(n.key,n),t.isViewGroupSchema(n))o(n.children);else if(t.isViewDynamicSchema(n))for(const e of n.items)o(e.children)};return o(e),r}(o.value)),l=r.subscribeViewSchemas(e=>{o.value=e});let a=!1;return{schemasByKey:n,viewSchemas:o,dispose:()=>{a||(a=!0,l())}}}const c=new WeakMap;function d(t){if(!e.getCurrentScope())throw new Error("[schemx] useVueFormRuntime() requires an active Vue scope.");const{runtime:r,release:n}=function(e){const t=function(e){const t=c.get(e);if(t)return t;const r=function(e){let t,r=0,n=!1;const l=()=>{const t=o.createFormStateAdapter(e),r=a(t.values),n=a(t.touchedFields),l=a(t.pendingFields),s=a(t.loading),i=new Map;let c=!1;const d=()=>{var e;c||(c=!0,null==(e=u.viewSchemaState)||e.dispose(),i.clear(),t.dispose())},u={stateAdapter:t,values:r,touchedFields:n,pendingFields:l,loading:s,fieldStates:i,dispose:d};return u},c=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=l()),t},d=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};c(),r++;let e=!1;return()=>{e||n||(e=!0,r--,0===r&&d())}},m=(e,r)=>{if(!t)return;s(t,e)[r].value},p=e=>{if(t)if(void 0!==e)for(const r of e)s(t,r).value.value;else t.values.value},v=e=>{if(t)switch(e){case"values":t.values.value;break;case"touchedFields":t.touchedFields.value;break;case"pendingFields":t.pendingFields.value;break;case"loading":t.loading.value}},f=()=>c().values,h=e=>s(c(),e),g=()=>{const t=c();return t.viewSchemaState??(t.viewSchemaState=i(e))},y=()=>{n||(n=!0,r=0,d())},b=function(e,t){let r=!1;return{...e,getFieldValue:o=>(r||t.trackField(o,"value"),e.getFieldValue(o)),getFieldErrors:o=>(r||t.trackField(o,"errors"),e.getFieldErrors(o)),isFieldTouched:o=>(r||t.trackField(o,"touched"),e.isFieldTouched(o)),isFieldPending:o=>(r||t.trackField(o,"pending"),e.isFieldPending(o)),getFieldsValue:o=>(r||t.trackFieldsValue(o),e.getFieldsValue(o)),getTouchedFields:()=>(r||t.trackForm("touchedFields"),e.getTouchedFields()),getPendingFields:()=>(r||t.trackForm("pendingFields"),e.getPendingFields()),isLoading:()=>(r||t.trackForm("loading"),e.isLoading()),destroy:()=>{r||(r=!0,t.destroy(),e.destroy())}}}(e,{trackField:m,trackFieldsValue:p,trackForm:v,destroy:y}),x={core:e,instance:b,retain:u,trackField:m,trackFieldsValue:p,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:g,destroy:y};return x}(e);return c.set(e,r),c.set(r.instance,r),r}(e),r=t.retain();return{runtime:t,release:r}}(t);return e.onScopeDispose(n),r}const u=Symbol("schemx:form-context"),m=Symbol("schemx:instance"),p=Symbol("schemx:form-config");function v(t){const r=d(t.form),o={form:r.instance,get schemaConfig(){return t.schemaConfig}};return e.provide(u,o),r.instance}function f(){const t=e.inject(u,null);if(t)return t;const r=e.inject(m,null),o=e.inject(p,null);if(r&&o)return{form:r,schemaConfig:o.schemaConfig};throw new Error("[schemx] useFormContextValue() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().")}function h(){const t=e.inject(u,null);if(t)return t.form;const r=e.inject(m,null);if(!r)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure createFormContext(form) is called synchronously during setup().");return r}function g(){return d(h())}const y=Symbol("schemx:field");function b(t){e.provide(y,t)}function x(){const t=e.inject(y,null);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}const C=Symbol("schemx:config-provider");function S(r){const o=e.inject(C,void 0),n=e.computed(()=>({...t.mergeSchemxConfig(r.value,(null==o?void 0:o.value)??{}),colComponent:r.value.colComponent??(null==o?void 0:o.value.colComponent)}));e.provide(C,n)}function w(){var e;return null==(e=F())?void 0:e.value}function F(){if(null!==e.getCurrentInstance())return e.inject(C,void 0)}const k=Symbol("schemx:app-config"),V=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function R(e){if(void 0===e)return;const t=Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:Object.freeze({...t})]);return Object.freeze(Object.fromEntries(t))}function j(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:R(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,presetRuleRegistry:e.presetRuleRegistry,colComponent:e.colComponent})}(t);e.provide(k,r)}function O(){return null===e.getCurrentInstance()?V:e.inject(k,V)}const A=t.createPresetRuleRegistry(),B=o.createRendererRegistry("input");const P=Object.freeze({labelIcon:"",labelAlign:"left",labelPosition:"left",labelWidth:"auto",contentAlign:"right",colon:!0,showRequiredMark:void 0}),_=Object.keys(P);function E(r={}){const o=function(e,r={}){const o=w();return t.mergeSchemxConfig(e,o??{},O(),r,{rendererRegistry:B,presetRuleRegistry:A})}(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:o=[],defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a,validatorAdapters:o}}(r)),n={...r,...o},l=d(t.createForm(n)).instance;return e.onScopeDispose(()=>{l.destroy()}),l}const N=r=>{const o=h(),n=g(),l=n.getFieldState(r);return function(r,o,n,l){const a=t.createField(o,n),s=e.computed(()=>l.errors.value),i=e.computed(()=>l.touched.value),c=e.computed(()=>l.pending.value);return{...a,name:n,value:l.value,errors:s,dirty:i,pending:c,getValue:()=>l.value.value,getErrors:()=>l.errors.value,isTouched:()=>l.touched.value,isPending:()=>l.pending.value,getValues:()=>r.getFieldsValue()}}(o,n.instance,r,l)};function $(r,o,n){const l=g(),a=t.createWatch(l.instance,r,o,n);return e.onUnmounted(a),a}function q(e,t,r){return $(e,t,r)}function T(e){return e instanceof Error?e:new Error(String(e))}const L=(t,r)=>{var o;const n=h(),l=e.shallowRef([]),a=e.ref(!1),s=e.ref(void 0);let i=0,c=null;const d=async()=>{const e=++i;null==c||c.abort();const r=new AbortController;c=r;try{const o=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(o))return l.value=[],void(a.value=!1);a.value=!0,s.value=void 0;const c=await(async(e,r)=>{const o=t.retryCount??0,l=t.retryInterval??1e3;let a=new Error("Unknown error");for(let i=0;i<=o;i++)try{if(r.aborted)throw new Error("Dictionary request aborted");return await z(e,n,t.api,r)}catch(s){a=T(s),i<o&&await D(l,r)}throw a})(o,r.signal);if(e!==i||r.signal.aborted)return;const d=await(async e=>{if("function"==typeof(null==t?void 0:t.formatter))return await t.formatter(e,n);if(!Array.isArray(e))throw new Error("[schemx] Dictionary api must return an array when formatter is not provided.");return e})(c);if(e!==i||r.signal.aborted)return;l.value=d,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(d,n),a.value=!1}catch(o){if(r.signal.aborted||e!==i)return;const c=T(o);s.value=c,l.value=[],a.value=!1,"function"==typeof t.onError&&t.onError(c,n)}finally{c===r&&(c=null)}};(null==(o=t.dependsOn)?void 0:o.length)&&q(t.dependsOn,(e,o)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&r&&n.setFieldValue(r,void 0),d()},{inequality:!0});const u=t.immediate??!0;return e.onMounted(()=>{u&&d()}),e.onScopeDispose(()=>{i+=1,null==c||c.abort(),c=null}),{list:l,loading:a,error:s,loadDict:d,refresh:()=>d(),mutate:e=>{l.value=e}}};function D(e,t){return new Promise((r,o)=>{let n=()=>{};const l=()=>{clearTimeout(a),t.removeEventListener("abort",n)},a=setTimeout(()=>{l(),r()},e);n=()=>{l(),o(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function z(e,t,r,o){return r.length>=3?r(e,t,o):r(e,t)}function W(t){const r=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const r=Object.keys(e),o=Object.keys(t);return r.length===o.length&&r.every(r=>e[r]===t[r])})(r.value,e)||(r.value=e)}),r}function M(e){return d(e).getViewSchemaState().viewSchemas}function I(t,r,o={}){const n=d(t).getValuesRef(),l=e.shallowRef(r(n.value)),a=o.equals??Object.is;return e.watch(n,e=>{const t=r(e);a(l.value,t)||(l.value=t)},{flush:o.flush??"sync"}),e.readonly(l)}function G(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function H(e,t){if(!t)return!1;return(Array.isArray(t)?t:[t]).some(t=>function(e){return{onBlur:"blur",onChange:"change",onSubmit:"submit",blur:"blur",change:"change",submit:"submit"}[e]??"submit"}(t)===e)}const K=e=>/[A-Z]/.test(e),U=e=>e.includes("-"),Z=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),J=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),Q=(e,t)=>{if(e[t])return e[t];const r=K(t)?Z(t):U(t)?J(t):void 0;return r&&e[r]?e[r]:void 0},X=(e,t)=>{const r={},o=(n=String(e),(U(n)?J(n):n)+":");var n;const l=(e=>K(e)?Z(e):e)(String(e))+":";for(const[a,s]of Object.entries(t))a.startsWith(o)?r[a.slice(o.length)]=s:a.startsWith(l)&&l!==o&&(r[a.slice(l.length)]=s);return r};function Y(e,t){const r=e.findIndex(e=>e.key===t);if(-1===r)return{found:!1,isFirst:!1,isLast:!1};return te(e[r])?{found:!0,isFirst:!re(e,r,-1),isLast:!re(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}function ee(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function te(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function re(e,r,o){for(let n=r+o;n>=0&&n<e.length;n+=o){const r=e[n];if(!1!==r.visible){if(t.isViewGroupSchema(r))return!1;if(te(r))return!0}}return!1}const oe=e.defineComponent({name:"SchemxField",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0}},slots:Object,setup(o,{attrs:n,slots:l}){const a=f(),s=a.form,i=e.computed(()=>o.schema),c=function(t,r){const o=d(t).getViewSchemaState();return e.computed(()=>o.schemasByKey.value.get(r()))}(s,()=>i.value.key),u=e.computed(()=>c.value&&t.isSchemxViewFieldSchema(c.value)?c.value:i.value),m=N(u.value.name);b(m);const p=e.computed(()=>{return e=u.value.validationTrigger,t=a.schemaConfig.validationTrigger,r="onChange",G(e)?e:G(t)?t:r;var e,t,r}),v=e.computed(()=>{const e=!1!==u.value.visible&&!u.value.readonly&&!u.value.disabled,t=u.value.rules,r=Array.isArray(t)?(null==t?void 0:t.length)>0:!!u.value.rules;return e&&(Boolean(u.value.required)||r)}),h=e=>{var t,r,o,n;m.setValue(e),null==(r=null==(t=u.value.componentProps)?void 0:t.onChange)||r.call(t,e),null==(n=(o=u.value).onChange)||n.call(o,e,s),v.value&&H("change",p.value)&&m.validate()},g=e=>{var t,r,o,n;null==(r=null==(t=u.value.componentProps)?void 0:t.onBlur)||r.call(t,e),null==(n=(o=u.value).onBlur)||n.call(o,s),v.value&&H("blur",p.value)&&m.validate()},y=e=>{m.setValue(e)},x=W(()=>{const e=u.value.componentProps??{};return{...e,align:u.value.readonly?"right":e.align??u.value.contentAlign,readonly:u.value.readonly,disabled:u.value.disabled,placeholder:e.placeholder??u.value.placeholder,readonlyPlaceholder:e.readonlyPlaceholder??u.value.readonlyPlaceholder,value:m.value.value,onChange:h,onBlur:g,"onUpdate:value":y}}),{createSlotProps:C,renderAfter:S,renderBefore:w,renderContent:F,renderError:k,renderLabel:V}=function(t){const{schemaRef:r,field:o,form:n,formContext:l,componentProps:a,slots:s}=t,i=(e={})=>({schema:r.value,componentProps:a.value,value:o.value.value,field:o,form:n,...e}),c=e=>{const t=Q(s,`${ee(r.value.name)}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>c("After"),renderBefore:()=>c("Before"),renderContent:()=>{const t=n.getRenderer(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const o=X(ee(r.value.name),s),l=e.h(t,a.value,o),c=Q(s,`${ee(r.value.name)}Content`);return c?c(i({columnElement:l})):e.createVNode("div",{class:"schemx-field__control"},[l])},renderError:()=>{const t=Q(s,`${ee(r.value.name)}Error`);return t?t(i({errors:o.errors.value})):0===o.errors.value.length?null:e.createVNode("div",{class:"schemx-field__error"},[o.errors.value[0]])},renderLabel:()=>{const t=Q(s,`${ee(r.value.name)}Label`);if(t)return t(i());const o=r.value.labelAlign||l.schemaConfig.labelAlign,n=r.value.labelWidth||l.schemaConfig.labelWidth,a=r.value.colon??l.schemaConfig.colon;return e.createVNode("label",{class:"schemx-field__label",style:{width:n,textAlign:o}},[!(r.value.showRequiredMark??Boolean(r.value.required))||r.value.disabled||r.value.readonly?null:e.createVNode("span",{class:"schemx-field__required"},[e.createTextVNode("*")]),r.value.labelIcon?e.createVNode("span",{class:"schemx-field__label-icon"},[r.value.labelIcon]):null,e.createVNode("span",{class:"schemx-field__label-text"},[r.value.label,a?":":""])])}}}({schemaRef:u,field:m,form:s,formContext:a,componentProps:x,slots:l});return()=>{if(!1===u.value.visible)return null;const t=Q(l,ee(u.value.name)),s=u.value.labelPosition||a.schemaConfig.labelPosition,i=t?t(C()):e.createVNode("div",{class:r("schemx-field",`schemx-field--label-${s}`,{"is-readonly":u.value.readonly,"is-disabled":u.value.disabled})},[V(),e.createVNode("div",{class:"schemx-field__content"},[w(),F(),S(),k()])]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-field-wrapper",o.class,n.class,u.value.class),style:[n.style,o.style,u.value.style]}),[i])}}}),ne=["aria-busy","data-loading","disabled"],le={key:0,class:"schemx-button__prefix"},ae={key:1,class:"schemx-button__loading",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},se={key:4,class:"schemx-button__suffix"},ie=e.defineComponent({name:"SchemxButton",inheritAttrs:!1,__name:"index",props:{loading:{type:Boolean,default:!1},loadingText:{default:void 0},disabled:{type:Boolean,default:!1},size:{default:"medium"}},setup(t){const r=t,o=e.useAttrs(),n=e.computed(()=>r.disabled||r.loading),l=e.computed(()=>["schemx-button",`schemx-button--${r.size}`]);return(t,a)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(o),{class:l.value,"aria-busy":r.loading||void 0,"data-loading":r.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",le,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ae,[...a[0]||(a[0]=[e.createStaticVNode('<path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path>',8)])])):e.createCommentVNode("",!0),r.loading&&r.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(r.loadingText),1)],64)):e.renderSlot(t.$slots,"default",{},void 0,void 0,3),t.$slots.suffix?(e.openBlock(),e.createElementBlock("span",se,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,ne))}}),ce=e.shallowRef();const de=e.defineComponent({name:"SchemxCol",inheritAttrs:!1,props:{layout:{type:Object,required:!1,default:void 0},component:{type:[Object,Function],required:!1,default:void 0}},setup(t,{attrs:r,slots:o}){const n=e.computed(()=>{const r=t.component??ce.value;return r?e.markRaw(e.toRaw(r)):void 0});return()=>{var l;const a=n.value;if(!a)return(null==(l=o.default)?void 0:l.call(o))??null;const s=t.layout??{},i=s.block?24:s.span??24,c=s.block?0:s.offset??0,{class:d,style:u,...m}=r;return e.h(a,{...m,class:["schemx-col",d],style:u,span:i,offset:c},o)}}});const ue=e.defineComponent({name:"SchemxGroup",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0},renderChildren:{type:Function,required:!1,default:void 0}},slots:Object,setup(o,{attrs:n,slots:l}){var a;const s=e.ref(Boolean(o.schema.defaultCollapsed)),i=e.computed(()=>o.schema.collapsed??s.value),c=(null==(a=e.getCurrentInstance())?void 0:a.uid)??0;e.watch(()=>o.schema.collapsed,(e,t)=>{void 0!==e?s.value=e:void 0!==t&&(s.value=t)});const d=()=>{var e,t;if(!o.schema.collapsible||o.schema.disabled)return;const r=!i.value;void 0===o.schema.collapsed&&(s.value=r),null==(t=(e=o.schema).onCollapsedChange)||t.call(e,r)};return()=>{var a;const s=o.schema;if(!1===s.visible)return null;const u=Boolean(s.collapsible),m=i.value,p=s.destroyOnCollapse??!0,v=`schemx-group-${(null==(a=s.debug)?void 0:a.runtimeNodeId)??`local-${c}`}-${f=s.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,g=`${v}-body`,y=r=>t.isViewDynamicSchema(r)?!1===r.visible?null:r.items.map(e=>e.children.map(e=>y(e))):t.isViewGroupSchema(r)?e.createVNode(ue,{key:r.key,schema:r,class:o.class,style:o.style},l):e.createVNode(oe,{key:`${r.key}:${ee(r.name)}`,schema:r},l),{hasHeader:b,renderBodyContent:x,renderHeaderContent:C}=function(t){const{schema:o,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i,slots:c,renderChildren:d}=t,u=String(o.key),m=Q(c,`${u}Header`),p=Q(c,`${u}Label`),v=Q(c,`${u}Content`),f={schema:o,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i};return{hasHeader:Boolean(o.label||m||p),renderBodyContent:()=>v?v(f):d(),renderHeaderContent:()=>{if(m)return m(f);const t=p?p(f):e.createVNode("span",{class:"schemx-group__title"},[o.label]);return l?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:s,collapsed:m,collapsible:u,disabled:Boolean(s.disabled),readonly:Boolean(s.readonly),toggle:d,slots:l,renderChildren:()=>o.renderChildren?o.renderChildren(s.children):s.children.map(y)}),S=e.createVNode("div",{id:g,role:"group","aria-labelledby":s.label?h:void 0,"aria-hidden":m||void 0,class:"schemx-group__body",style:!p&&m?{display:"none"}:void 0},[x()]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-group-wrapper",o.class,n.class,s.class),"data-key":s.key,"aria-disabled":s.disabled||void 0,style:[n.style,o.style,s.style]}),[e.createVNode("div",{class:r("schemx-group",{"schemx-group--collapsed":m,"is-readonly":s.readonly,"is-disabled":s.disabled})},[b&&e.createVNode("div",{id:h,role:u?"button":void 0,tabindex:u?s.disabled?-1:0:void 0,"aria-expanded":u?!m:void 0,"aria-controls":u?g:void 0,"aria-disabled":u&&s.disabled||void 0,class:r("schemx-group__header",{"schemx-group__header--clickable":u&&!s.disabled}),onClick:d,onKeydown:e=>{s.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d())}},[C()]),p?!m&&S:S])])}}}),me=ue,pe=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},viewSchemas:{type:Array,required:!0},renderChildren:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${ee(e.name)}`,l=e=>{const{isFirst:t,isLast:o}=Y(r.viewSchemas,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},a=r=>{if(t.isViewGroupSchema(r))return e.createVNode(me,{key:r.key,schema:r},o);const a=r;return e.createVNode(oe,{key:n(a),schema:a,class:l(a)},o)};return()=>!1===r.schema.visible?null:r.schema.items.map(t=>{const o=r.renderChildren?r.renderChildren(t.children):t.children.map(a);return e.createVNode(e.Fragment,{key:t.key},[o])})}});const ve=e.defineComponent({name:"SchemxSchemaList",inheritAttrs:!1,props:{schemas:{type:Array,required:!0},viewSchemas:{type:Array,required:!0},colComponent:{type:[Object,Function],required:!1,default:void 0},fieldClassResolver:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${ee(e.name)}`,l=e=>t.isSchemxViewFieldSchema(e)?n(e):e.key,a=t=>e.h(ve,{schemas:t,viewSchemas:r.viewSchemas,colComponent:r.colComponent},o),s=s=>{var i;if(!1===s.visible)return null;let c;return c=t.isViewGroupSchema(s)?e.createVNode(me,{key:s.key,schema:s,renderChildren:a},o):t.isViewDynamicSchema(s)?e.createVNode(pe,{key:s.key,schema:s,viewSchemas:r.viewSchemas,renderChildren:a},o):e.createVNode(oe,{key:n(s),schema:s,class:null==(i=r.fieldClassResolver)?void 0:i.call(r,s)},o),r.colComponent?e.createVNode(de,{key:l(s),component:r.colComponent,layout:s.layout},"function"==typeof(d=c)||"[object Object]"===Object.prototype.toString.call(d)&&!e.isVNode(d)?c:{default:()=>[c]}):c;var d};return()=>{const t=r.schemas.map(s);return r.colComponent?e.createVNode("div",{class:"schemx-row"},[t]):t}}}),fe=ve,he={key:0,class:"schemx-actions"},ge=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},fieldRules:{default:void 0},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},loading:{type:Boolean,default:void 0},submitter:{type:[Boolean,Object],default:!0},resetter:{type:[Boolean,Object],default:!0},class:{type:[Boolean,null,String,Object,Array],default:""},style:{type:[Boolean,null,String,Object,Array],default:()=>({})},colComponent:{default:void 0},rendererProps:{default:void 0},validatorAdapters:{},defaultRendererType:{},rendererRegistry:{default:void 0},presetRuleRegistry:{default:void 0},onRuleError:{},onFinish:{type:Function,default:void 0},onFinishFailed:{type:Function,default:void 0},onReset:{type:Function,default:void 0},onLoadingChange:{type:Function,default:void 0},onValuesChange:{type:Function,default:void 0},onFieldsChange:{type:Function,default:void 0},lifecycleHooks:{},schedulerOptions:{default:void 0},validationConcurrency:{default:void 0},required:{type:[Boolean,Object]},readonly:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},validationTrigger:{default:void 0},colon:{type:Boolean,default:void 0},showRequiredMark:{type:Boolean,default:void 0}},emits:["update:modelValue"],setup(r,{expose:o,emit:l}){const a=r,s=l,i=e.useSlots(),c=[...t.defaultSchemxConfigKeys,..._],d=void 0!==a.form,u=e.computed(()=>{const e=n.pick(a,c);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),m=O(),p=F(),f=t.getGlobalSchemxConfig(),h={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},g=e.computed(()=>d?t.mergeSchemxConfig({schemaConfig:u.value},h):t.mergeSchemxConfig({schemaConfig:u.value},(null==p?void 0:p.value)??{},m,h,f)),y=e.computed(()=>({...P,...g.value.schemaConfig})),b=e.computed(()=>t.resolveSchemxConfig(g.value).schemaConfig),x=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),C=e.computed(()=>a.colComponent??(null==p?void 0:p.value.colComponent)??m.colComponent??ce.value),S=v({form:a.form?a.form:E({schemas:a.schemas,schemaConfig:b.value,initialValues:Object.keys(a.modelValue).length>0?a.modelValue:a.initialValues,rendererProps:a.rendererProps,rendererRegistry:a.rendererRegistry,defaultRendererType:a.defaultRendererType,presetRuleRegistry:a.presetRuleRegistry,fieldRules:a.fieldRules,validatorAdapters:a.validatorAdapters,schedulerOptions:a.schedulerOptions,validationConcurrency:a.validationConcurrency,onFinish:e=>{var t;return null==(t=a.onFinish)?void 0:t.call(a,e)},onFinishFailed:e=>{var t;return null==(t=a.onFinishFailed)?void 0:t.call(a,e)},onReset:()=>{var e;null==(e=a.onReset)||e.call(a)},onLoadingChange:e=>{var t;null==(t=a.onLoadingChange)||t.call(a,e)},onValuesChange:(e,t)=>{var r;null==(r=a.onValuesChange)||r.call(a,e,t)},onFieldsChange:(e,t)=>{var r;null==(r=a.onFieldsChange)||r.call(a,e,t)}}),get schemaConfig(){return y.value}}),w=e.computed(()=>a.loading??S.isLoading()),k=e.computed(()=>["schemx",a.class]),V=e.computed(()=>a.style),R=e=>!0===e?{}:e||{},j=e.computed(()=>R(a.submitter)),A=e.computed(()=>R(a.resetter)),B=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),N=e.computed(()=>B(j.value)),$=e.computed(()=>B(A.value)),q=e.computed(()=>!1!==a.submitter&&(void 0!==a.submitter||i.submitter)),T=e.computed(()=>!1!==a.resetter&&(void 0!==a.resetter||i.resetter)),L=e.computed(()=>q.value||T.value),D=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),z=e.computed(()=>w.value||Boolean(N.value.disabled)),W=e.computed(()=>w.value||Boolean($.value.disabled));let G=!1;const H=new Set;e.watch(()=>a.modelValue,t=>{if(!H.delete(e.toRaw(t))){G=!0;try{S.setFieldsValue(t)}finally{G=!1}}},{deep:!0,immediate:d});const K=()=>S.submit(),U=()=>{S.reset()},Z=I(S,e=>e);e.watch(Z,t=>{G||(t=>{const r=e.toRaw(t);H.add(r),s("update:modelValue",t),e.nextTick(()=>{H.delete(r)})})(t)},{flush:"sync"}),e.watch(()=>a.schemas,e=>{t.isSchemxSchemas(e)||S.setSchemas(e)},{immediate:d});const J=M(S),Q=e=>{const{isFirst:t,isLast:r}=Y(J.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":r}},X=e=>{S.updateSchemaConfig(e)},ee=(e,t)=>{const r={...e};if(void 0!==t)for(const o of c)x(t,o)&&!x(e,o)&&(r[o]=void 0);Object.keys(r).length>0&&S.updateSchemaConfig(r)};d?e.watch(u,ee,{deep:!0,immediate:!0}):e.watch(b,X,{deep:!0});return o({...S,submit:K,reset:U}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),style:e.normalizeStyle(V.value)},[e.createVNode(e.unref(fe),{schemas:e.unref(J),"view-schemas":e.unref(J),"col-component":C.value,"field-class-resolver":Q},e.createSlots({_:2},[e.renderList(D.value,(r,o)=>({name:o,fn:e.withCtx(r=>[e.renderSlot(t.$slots,o,e.normalizeProps(e.guardReactiveProps(r??{})))])}))]),1032,["schemas","view-schemas","col-component"]),L.value?(e.openBlock(),e.createElementBlock("div",he,[T.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(S),loading:w.value,disabled:W.value,reset:U},void 0,void 0,0):T.value?(e.openBlock(),e.createBlock(e.unref(ie),e.mergeProps({key:1},$.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:W.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),q.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(S),loading:w.value,disabled:z.value,submit:K},void 0,void 0,2):q.value?(e.openBlock(),e.createBlock(e.unref(ie),e.mergeProps({key:3},N.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:w.value,disabled:z.value,onClick:K}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(j.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ye,be;const xe=(ye=ge,be={install(e,t={}){j(e,t),e.component("SchemxForm",ge)},Field:oe},Object.assign(ye,be));const Ce=e.defineComponent({name:"SchemxWrapper",inheritAttrs:!1,__name:"index",props:{readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){const r=t,o=e.useAttrs(),n=e.useSlots(),l=e.ref(!1),a=e.computed(()=>["schemx-wrapper",o.class,r.readonly&&"schemx-wrapper--readonly",r.disabled&&"schemx-wrapper--disabled"]),s=e.computed(()=>{const{class:e,...t}=o;return t}),i=e=>{!e||n.readonly||l.value};return e.onMounted(()=>i(r.readonly)),e.watch(()=>r.readonly,i),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:a.value}),[r.readonly?e.renderSlot(t.$slots,"readonly",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,0):e.renderSlot(t.$slots,"default",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,1)],16))}}),Se=e.defineComponent({name:"SchemxConfigProvider",inheritAttrs:!1,props:{schemaConfig:{type:Object,default:void 0},rendererProps:{type:Object,default:void 0},validatorAdapters:{type:Array,default:void 0},defaultRendererType:{type:String,default:void 0},rendererRegistry:{type:Object,default:void 0},presetRuleRegistry:{type:Object,default:void 0},colComponent:{type:[Object,Function],default:void 0}},setup:(t,{slots:r})=>(S(e.computed(()=>({schemaConfig:t.schemaConfig,rendererProps:t.rendererProps,validatorAdapters:t.validatorAdapters,defaultRendererType:t.defaultRendererType,rendererRegistry:t.rendererRegistry,presetRuleRegistry:t.presetRuleRegistry,colComponent:t.colComponent}))),()=>{var e;return null==(e=r.default)?void 0:e.call(r)})});exports.Col=de,exports.ConfigProvider=Se,exports.Field=oe,exports.Group=me,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(r,{attrs:o,slots:n}){const l=function(e){return"function"==typeof e?{api:e}:e}(r.dict),a=l?o.fieldName??x().name:void 0,s=l?L(l,a):null,i=e.computed(()=>({...o,dict:l,options:l?null==s?void 0:s.list.value:o.options,loading:l?null==s?void 0:s.loading.value:o.loading}));return()=>e.h(t,i.value,n)}})},exports.Wrapper=Ce,exports.createConfigProviderContext=S,exports.createFieldContext=b,exports.createFormConfigContext=function(t){e.provide(p,t)},exports.createFormContext=function(t){const r=d(t);return e.provide(m,r.instance),r.instance},exports.default=xe,exports.presetRuleRegistry=A,exports.provideFormContext=v,exports.registerCol=function(e){ce.value=e},exports.rendererRegistry=B,exports.schemxForm=xe,exports.useConfigProviderContext=w,exports.useConfigProviderContextRef=F,exports.useDictionary=L,exports.useField=N,exports.useFieldContext=x,exports.useForm=E,exports.useFormConfigContext=function(){const t=e.inject(u,null);if(t)return t;const r=e.inject(p,null);if(!r)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure createFormConfigContext(props) is called synchronously during setup().");return r},exports.useFormContext=h,exports.useFormContextValue=f,exports.useFormRuntimeContext=g,exports.useFormSelector=I,exports.useStableRef=W,exports.useViewSchemas=M,exports.useWatch=$,exports.useWatchAll=function(e,t){return $(e,t)},exports.useWatchField=function(e,t,r){return $(e,t,r)},exports.useWatchFields=q,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|