@schemx/vue 1.0.0 → 1.1.0

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.
Files changed (121) hide show
  1. package/README.md +509 -324
  2. package/dist/analyze.html +1 -1
  3. package/dist/bridge/fieldBridge.d.ts +12 -0
  4. package/dist/bridge/fieldBridge.d.ts.map +1 -1
  5. package/dist/bridge/formBridge.d.ts +35 -2
  6. package/dist/bridge/formBridge.d.ts.map +1 -1
  7. package/dist/bridge/formInstance.d.ts +24 -4
  8. package/dist/bridge/formInstance.d.ts.map +1 -1
  9. package/dist/bridge/helpers.d.ts +8 -0
  10. package/dist/bridge/helpers.d.ts.map +1 -1
  11. package/dist/bridge/index.d.ts +2 -3
  12. package/dist/bridge/index.d.ts.map +1 -1
  13. package/dist/bridge/types.d.ts +97 -9
  14. package/dist/bridge/types.d.ts.map +1 -1
  15. package/dist/bridge/viewSchemaBridge.d.ts +14 -1
  16. package/dist/bridge/viewSchemaBridge.d.ts.map +1 -1
  17. package/dist/components/Button/index.d.ts.map +1 -1
  18. package/dist/components/Button/index.vue.d.ts +12 -0
  19. package/dist/components/Button/index.vue.d.ts.map +1 -1
  20. package/dist/components/Button/types.d.ts +15 -5
  21. package/dist/components/Button/types.d.ts.map +1 -1
  22. package/dist/components/Col/index.d.ts +27 -5
  23. package/dist/components/Col/index.d.ts.map +1 -1
  24. package/dist/components/ConfigProvider/index.d.ts +40 -7
  25. package/dist/components/ConfigProvider/index.d.ts.map +1 -1
  26. package/dist/components/Dynamic/index.d.ts +27 -17
  27. package/dist/components/Dynamic/index.d.ts.map +1 -1
  28. package/dist/components/Field/index.d.ts +13 -2
  29. package/dist/components/Field/index.d.ts.map +1 -1
  30. package/dist/components/Field/slot.d.ts +34 -10
  31. package/dist/components/Field/slot.d.ts.map +1 -1
  32. package/dist/components/Group/index.d.ts +37 -8
  33. package/dist/components/Group/index.d.ts.map +1 -1
  34. package/dist/components/Group/slot.d.ts +36 -9
  35. package/dist/components/Group/slot.d.ts.map +1 -1
  36. package/dist/components/Icon/index.d.ts +29 -0
  37. package/dist/components/Icon/index.d.ts.map +1 -0
  38. package/dist/components/Row/index.d.ts +30 -0
  39. package/dist/components/Row/index.d.ts.map +1 -0
  40. package/dist/components/SchemaList/index.d.ts +22 -12
  41. package/dist/components/SchemaList/index.d.ts.map +1 -1
  42. package/dist/components/Wrapper/index.vue.d.ts +6 -0
  43. package/dist/components/Wrapper/index.vue.d.ts.map +1 -1
  44. package/dist/config/defaultVueSchemaConfig.d.ts +62 -0
  45. package/dist/config/defaultVueSchemaConfig.d.ts.map +1 -0
  46. package/dist/config/index.d.ts +12 -2
  47. package/dist/config/index.d.ts.map +1 -1
  48. package/dist/config/vueConfig.d.ts +14 -3
  49. package/dist/config/vueConfig.d.ts.map +1 -1
  50. package/dist/context/configProviderContext.d.ts +66 -0
  51. package/dist/context/configProviderContext.d.ts.map +1 -0
  52. package/dist/context/fieldContext.d.ts +11 -0
  53. package/dist/context/fieldContext.d.ts.map +1 -0
  54. package/dist/context/formContext.d.ts +167 -0
  55. package/dist/context/formContext.d.ts.map +1 -0
  56. package/dist/context/index.d.ts +18 -0
  57. package/dist/context/index.d.ts.map +1 -0
  58. package/dist/form.d.ts +10 -2
  59. package/dist/form.d.ts.map +1 -1
  60. package/dist/hocs/withRemoteOptions.d.ts +6 -2
  61. package/dist/hocs/withRemoteOptions.d.ts.map +1 -1
  62. package/dist/hooks/index.d.ts +23 -15
  63. package/dist/hooks/index.d.ts.map +1 -1
  64. package/dist/hooks/useDictionary.d.ts +32 -9
  65. package/dist/hooks/useDictionary.d.ts.map +1 -1
  66. package/dist/hooks/useField.d.ts +7 -0
  67. package/dist/hooks/useField.d.ts.map +1 -1
  68. package/dist/hooks/useForm.d.ts +4 -16
  69. package/dist/hooks/useForm.d.ts.map +1 -1
  70. package/dist/hooks/useFormSelector.d.ts.map +1 -1
  71. package/dist/hooks/useViewSchemas.d.ts +26 -2
  72. package/dist/hooks/useViewSchemas.d.ts.map +1 -1
  73. package/dist/index.cjs +1 -1
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.ts +35 -13
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.mjs +684 -357
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/style.css +1 -1
  80. package/dist/types/definition.d.ts +248 -0
  81. package/dist/types/definition.d.ts.map +1 -0
  82. package/dist/types/dictionary.d.ts +9 -3
  83. package/dist/types/dictionary.d.ts.map +1 -1
  84. package/dist/types/field.d.ts +93 -21
  85. package/dist/types/field.d.ts.map +1 -1
  86. package/dist/types/form.d.ts +82 -6
  87. package/dist/types/form.d.ts.map +1 -1
  88. package/dist/types/icon.d.ts +15 -0
  89. package/dist/types/icon.d.ts.map +1 -0
  90. package/dist/types/index.d.ts +2 -15
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/layout.d.ts +89 -13
  93. package/dist/types/layout.d.ts.map +1 -1
  94. package/dist/utils/diff.d.ts +3 -6
  95. package/dist/utils/diff.d.ts.map +1 -1
  96. package/dist/utils/dynamic.d.ts +6 -2
  97. package/dist/utils/dynamic.d.ts.map +1 -1
  98. package/dist/utils/equal.d.ts +2 -2
  99. package/dist/utils/helpers.d.ts +26 -2
  100. package/dist/utils/helpers.d.ts.map +1 -1
  101. package/dist/utils/index.d.ts +19 -4
  102. package/dist/utils/index.d.ts.map +1 -1
  103. package/dist/utils/layout.d.ts +17 -0
  104. package/dist/utils/layout.d.ts.map +1 -0
  105. package/dist/utils/rendererProvider.d.ts +10 -3
  106. package/dist/utils/rendererProvider.d.ts.map +1 -1
  107. package/dist/utils/validation.d.ts +6 -2
  108. package/dist/utils/validation.d.ts.map +1 -1
  109. package/package.json +2 -2
  110. package/dist/config/appConfig.d.ts +0 -19
  111. package/dist/config/appConfig.d.ts.map +0 -1
  112. package/dist/config/providerConfig.d.ts +0 -22
  113. package/dist/config/providerConfig.d.ts.map +0 -1
  114. package/dist/hooks/provideFieldContext.d.ts +0 -40
  115. package/dist/hooks/provideFieldContext.d.ts.map +0 -1
  116. package/dist/hooks/provideFormConfigContext.d.ts +0 -71
  117. package/dist/hooks/provideFormConfigContext.d.ts.map +0 -1
  118. package/dist/hooks/provideFormContext.d.ts +0 -26
  119. package/dist/hooks/provideFormContext.d.ts.map +0 -1
  120. package/dist/utils/colProvider.d.ts +0 -20
  121. package/dist/utils/colProvider.d.ts.map +0 -1
@@ -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;AAUH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,EAAE,MAAM,cAAc,CAAA;AA+CpE;;;;;GAKG;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
+ {"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,16 +1,4 @@
1
- import { VueSchemxInstance } from '../bridge';
2
- import { CreateFormOptions, NamePath, Values } from '@schemx/core';
3
- /**
4
- * useForm 配置选项。
5
- *
6
- * 当前与 core 层 CreateFormOptions 保持一致,并在 Vue 层自动补充默认的
7
- * rendererRegistry 和 presetRuleRegistry。保留独立类型用于后续扩展
8
- * Vue 专属配置,而不污染 core 层接口。
9
- *
10
- * @typeParam TValues - 表单值类型
11
- */
12
- export interface UseFormOptions<TValues extends Values> extends CreateFormOptions<TValues, NamePath<TValues>> {
13
- }
1
+ import { CreateFormOptions, SchemxInstance, Values } from '@schemx/core';
14
2
  /**
15
3
  * 创建由当前 Vue effect scope 持有的表单实例。
16
4
  *
@@ -20,7 +8,7 @@ export interface UseFormOptions<TValues extends Values> extends CreateFormOption
20
8
  * 3. 在当前 effect scope 销毁时调用 instance.destroy()。
21
9
  *
22
10
  * useForm 不再自动调用 provide()。需要向后代组件暴露实例时,应由
23
- * <SchemxForm> 或其他 Provider 组件显式调用 createFormContext(form)。
11
+ * <SchemxForm> 或其他 Provider 组件显式调用 provideFormContext({ form, schemaConfig })。
24
12
  * 这样无论实例是内部创建还是通过 props.form 外部传入,都能走同一条
25
13
  * 上下文注册路径,并保持清晰的实例所有权:谁创建,谁销毁。
26
14
  *
@@ -50,8 +38,8 @@ export interface UseFormOptions<TValues extends Values> extends CreateFormOption
50
38
  * ```ts
51
39
  * // Provider 组件中统一注册上下文。
52
40
  * const form = props.form ?? useForm(options)
53
- * createFormContext(form)
41
+ * provideFormContext({ form, schemaConfig: {} })
54
42
  * ```
55
43
  */
56
- export declare function useForm<TValues extends Values = Values>(options?: UseFormOptions<TValues>): VueSchemxInstance<TValues>;
44
+ export declare function useForm<TValues extends Values = Values>(options?: CreateFormOptions<TValues>): SchemxInstance<TValues>;
57
45
  //# sourceMappingURL=useForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAaA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGzE,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,CAwB5B"}
1
+ {"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACd,MAAM,EACP,MAAM,cAAc,CAAA;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACrD,OAAO,GAAE,iBAAiB,CAAC,OAAO,CAAM,GACvC,cAAc,CAAC,OAAO,CAAC,CAwBzB"}
@@ -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,CAgCjC;AAED,eAAe,eAAe,CAAA"}
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
- /** 获取当前表单共享的 ViewSchema 列表。 */
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
- /** 获取当前 key 对应的共享 ViewSchema。 */
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,+BAA+B;AAC/B,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,CAQlD;AAED,iCAAiC;AACjC,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,CAUpD;AAED,eAAe,cAAc,CAAA"}
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"),o=require("classnames"),r=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 o=e.stateAdapter.field(t),r=e.fieldStates.get(o);if(r)return r;const n=o.getSnapshot(),a=l(n.value),s=l(n.errors),i=l(n.touched),d=l(n.pending);o.subscribe(()=>{const e=o.getSnapshot();var t,r;Object.is(a.value,e.value)||(a.value=e.value),t=s.value,r=e.errors,t.length===r.length&&t.every((e,t)=>e===r[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),d.value!==e.pending&&(d.value=e.pending)});const c={value:a,errors:s,touched:i,pending:d};return e.fieldStates.set(o,c),c}function i(o){const r=e.shallowRef(o.getViewSchemas()),n=e.computed(()=>function(e){const o=new Map,r=e=>{for(const n of e)if(o.set(n.key,n),t.isViewGroupSchema(n))r(n.children);else if(t.isViewDynamicSchema(n))for(const e of n.items)r(e.children)};return r(e),o}(r.value)),l=o.subscribeViewSchemas(e=>{r.value=e});let a=!1;return{schemasByKey:n,viewSchemas:r,dispose:()=>{a||(a=!0,l())}}}const d=new WeakMap;function c(t){if(!e.getCurrentScope())throw new Error("[schemx] useVueFormRuntime() requires an active Vue scope.");const{runtime:o,release:n}=function(e){const t=function(e){const t=d.get(e);if(t)return t;const o=function(e){let t,o=0,n=!1;const l=()=>{const t=r.createFormStateAdapter(e),o=a(t.values),n=a(t.touchedFields),l=a(t.pendingFields),s=a(t.loading),i=new Map;let d=!1;const c=()=>{var e;d||(d=!0,null==(e=u.viewSchemaState)||e.dispose(),i.clear(),t.dispose())},u={stateAdapter:t,values:o,touchedFields:n,pendingFields:l,loading:s,fieldStates:i,dispose:c};return u},d=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=l()),t},c=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};d(),o++;let e=!1;return()=>{e||n||(e=!0,o--,0===o&&c())}},p=(e,o)=>{if(!t)return;s(t,e)[o].value},m=e=>{if(t)if(void 0!==e)for(const o of e)s(t,o).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),g=()=>{const t=d();return t.viewSchemaState??(t.viewSchemaState=i(e))},y=()=>{n||(n=!0,o=0,c())},b=function(e,t){let o=!1;return{...e,getFieldValue:r=>(o||t.trackField(r,"value"),e.getFieldValue(r)),getFieldErrors:r=>(o||t.trackField(r,"errors"),e.getFieldErrors(r)),isFieldTouched:r=>(o||t.trackField(r,"touched"),e.isFieldTouched(r)),isFieldPending:r=>(o||t.trackField(r,"pending"),e.isFieldPending(r)),getFieldsValue:r=>(o||t.trackFieldsValue(r),e.getFieldsValue(r)),getTouchedFields:()=>(o||t.trackForm("touchedFields"),e.getTouchedFields()),getPendingFields:()=>(o||t.trackForm("pendingFields"),e.getPendingFields()),isLoading:()=>(o||t.trackForm("loading"),e.isLoading()),destroy:()=>{o||(o=!0,t.destroy(),e.destroy())}}}(e,{trackField:p,trackFieldsValue:m,trackForm:v,destroy:y}),C={core:e,instance:b,retain:u,trackField:p,trackFieldsValue:m,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:g,destroy:y};return C}(e);return d.set(e,o),d.set(o.instance,o),o}(e),o=t.retain();return{runtime:t,release:o}}(t);return e.onScopeDispose(n),o}const u=Symbol("schemx:instance"),p=Symbol("schemx:form-config");function m(t){const o=c(t.form).instance;return e.provide(u,o),e.provide(p,t),o}function v(){const e=f();if(e)return e;throw new Error("[schemx] useFormContextValue() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().")}function f(){const t=e.inject(u,null),o=e.inject(p,null);if(t&&o)return{form:t,get schemaConfig(){return o.schemaConfig},get iconComponent(){return o.iconComponent},get rowComponent(){return o.rowComponent},get colComponent(){return o.colComponent}}}function h(){const t=e.inject(u,null);if(!t)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().");return t}function g(){return c(h())}const y=Symbol("schemx:field");function b(t){e.provide(y,t)}function C(){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 x=Symbol("schemx:config-provider");function w(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 S(t,o={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),o=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({...e,schemaConfig:t,rendererProps:w(e.rendererProps),validatorAdapters:o})}(o);t.provide(x,e.computed(()=>r))}function F(o){const r=e.inject(x,void 0),n=e.computed(()=>{const e=t.mergeConfig(o.value,(null==r?void 0:r.value)??{}),n=null==r?void 0:r.value.row,l=o.value.row;return{...e,colComponent:o.value.colComponent??(null==r?void 0:r.value.colComponent),rowComponent:o.value.rowComponent??(null==r?void 0:r.value.rowComponent),iconComponent:o.value.iconComponent??(null==r?void 0:r.value.iconComponent),row:void 0===l?n:{...n,...l}}});e.provide(x,n)}function k(){var e;return null==(e=V())?void 0:e.value}function V(){if(null!==e.getCurrentInstance())return e.inject(x,void 0)}const R=t.createPresetRuleRegistry(),j=r.createRendererRegistry("input");const O=Object.freeze({labelIcon:"",labelAlign:"right",labelPosition:"left",labelWidth:"auto",contentAlign:"left",errorAlign:"left",colon:!0,showRequiredMark:void 0,col:{span:24},layout:{span:24},bordered:!0}),A=Object.keys(O);function B(o={}){const r=function(e,o={}){const r=k(),n=t.getGlobalSchemxConfig();return t.mergeConfig(e,r??{},o,n,{rendererRegistry:j,presetRuleRegistry:R})}(function(e){const{schemaConfig:t={},rendererProps:o,validatorAdapters:r=[],defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a}=e;return{schemaConfig:t,rendererProps:o,defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a,validatorAdapters:r}}(o),{}),n={...o,...r},l=c(t.createForm(n)).instance;return e.onScopeDispose(()=>{l.destroy()}),l}const P=o=>{const r=h(),n=g(),l=n.getFieldState(o);return function(o,r,n,l){const a=t.createField(r,n),s=e.computed(()=>l.errors.value),i=e.computed(()=>l.touched.value),d=e.computed(()=>l.pending.value);return{...a,name:n,value:l.value,errors:s,dirty:i,pending:d,getValue:()=>l.value.value,getErrors:()=>l.errors.value,isTouched:()=>l.touched.value,isPending:()=>l.pending.value,getValues:()=>o.getFieldsValue()}}(r,n.instance,o,l)};function E(o,r,n){const l=g(),a=t.createWatch(l.instance,o,r,n);return e.onUnmounted(a),a}function N(e,t,o){return E(e,t,o)}function $(e){return e instanceof Error?e:new Error(String(e))}const _=(t,o)=>{var r;const n=h(),l=e.shallowRef([]),a=e.ref(!1),s=e.ref(void 0);let i=0,d=null;const c=async()=>{const e=++i;null==d||d.abort();const o=new AbortController;d=o;try{const r=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(r))return l.value=[],void(a.value=!1);a.value=!0,s.value=void 0;const d=await(async(e,o)=>{const r=t.retryCount??0,l=t.retryInterval??1e3;let a=new Error("Unknown error");for(let i=0;i<=r;i++)try{if(o.aborted)throw new Error("Dictionary request aborted");return await T(e,n,t.api,o)}catch(s){a=$(s),i<r&&await q(l,o)}throw a})(r,o.signal);if(e!==i||o.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||o.signal.aborted)return;l.value=c,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(c,n),a.value=!1}catch(r){if(o.signal.aborted||e!==i)return;const d=$(r);s.value=d,l.value=[],a.value=!1,"function"==typeof t.onError&&t.onError(d,n)}finally{d===o&&(d=null)}};(null==(r=t.dependsOn)?void 0:r.length)&&N(t.dependsOn,(e,r)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&o&&n.setFieldValue(o,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:l,loading:a,error:s,loadDict:c,refresh:()=>c(),mutate:e=>{l.value=e}}};function q(e,t){return new Promise((o,r)=>{let n=()=>{};const l=()=>{clearTimeout(a),t.removeEventListener("abort",n)},a=setTimeout(()=>{l(),o()},e);n=()=>{l(),r(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function T(e,t,o,r){return o.length>=3?o(e,t,r):o(e,t)}function L(t){const o=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const o=Object.keys(e),r=Object.keys(t);return o.length===r.length&&o.every(o=>e[o]===t[o])})(o.value,e)||(o.value=e)}),o}function D(e){return c(e).getViewSchemaState().viewSchemas}function W(t,o,r={}){const n=c(t).getValuesRef(),l=e.shallowRef(o(n.value)),a=r.equals??Object.is;return e.watch(n,e=>{const t=o(e);a(l.value,t)||(l.value=t)},{flush:r.flush??"sync"}),e.readonly(l)}function z(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function M(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 I=e=>/[A-Z]/.test(e),G=e=>e.includes("-"),H=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),K=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),U=(e,t)=>{if(e[t])return e[t];const o=I(t)?H(t):G(t)?K(t):void 0;return o&&e[o]?e[o]:void 0},Z=(e,t)=>{const o={},r=(n=String(e),(G(n)?K(n):n)+":");var n;const l=(e=>I(e)?H(e):e)(String(e))+":";for(const[a,s]of Object.entries(t))a.startsWith(r)?o[a.slice(r.length)]=s:a.startsWith(l)&&l!==r&&(o[a.slice(l.length)]=s);return o};function J(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function Q(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function X(e,o,r){for(let n=o+r;n>=0&&n<e.length;n+=r){const o=e[n];if(!1!==o.visible){if(t.isViewGroupSchema(o))return!1;if(Q(o))return!0}}return!1}function Y(e){if(void 0===e)return[0,0,0,0];if("number"==typeof e)return[e,e,e,e];if(2===e.length){const[t,o]=e;return[t,o,t,o]}return e}const ee=e.defineComponent({name:"SchemxCol",inheritAttrs:!1,props:{col:{type:Object,required:!1,default:void 0},component:{type:[Object,Function],required:!1,default:void 0},layout:{type:Object,required:!1,default:void 0}},setup(t,o){const{attrs:r,slots:n}=o,l=f(),a=e.computed(()=>{const o=t.component??(null==l?void 0:l.colComponent);return o?e.markRaw(e.toRaw(o)):void 0});return()=>{const o=a.value,l=t.col??t.layout??{},{block:s,span:i,offset:d,...c}=l,u=s?24:i??24,p=s?0:d??0,{class:m,style:v,...f}=r;if(!o){const t=u/24*100+"%",o=p/24*100+"%";return e.h("div",{...f,class:["schemx-col",m],style:[v,{flex:`0 0 ${t}`,maxWidth:t,marginLeft:o,paddingTop:"var(--schemx-gutter-top, 0px)",paddingRight:"var(--schemx-gutter-right, 0px)",paddingBottom:"var(--schemx-gutter-bottom, 0px)",paddingLeft:"var(--schemx-gutter-left, 0px)"}]},n)}return e.h(o,{...c,...f,class:["schemx-col",m],style:v,span:u,offset:p},n)}}}),te=e.defineComponent({name:"SchemxIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},component:{type:[Object,Function],required:!1,default:void 0}},setup(t){const o=e.useAttrs();return()=>{if("string"!=typeof t.icon)return e.h(e.markRaw(e.toRaw(t.icon)),o);const r=t.component;return void 0===r?e.h("span",{...o,class:["schemx-icon-text",o.class]},t.icon):e.h(e.markRaw(e.toRaw(r)),{...o,icon:t.icon})}}});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(r,n){const{attrs:l,slots:a}=n,s=v(),i=s.form,d=e.computed(()=>r.schema),u=function(t,o){const r=c(t).getViewSchemaState();return e.computed(()=>r.schemasByKey.value.get(o()))}(i,()=>d.value.key),p=e.computed(()=>u.value&&t.isSchemxViewFieldSchema(u.value)?u.value:d.value),m=P(p.value.name);b(m);const f=e.computed(()=>{return e=p.value.validationTrigger,t=s.schemaConfig.validationTrigger,o="onChange",z(e)?e:z(t)?t:o;var e,t,o}),h=e.computed(()=>!1!==p.value.visible&&!p.value.readonly&&!p.value.disabled),g=e=>{var t,o,r,n;m.setValue(e),null==(o=null==(t=p.value.componentProps)?void 0:t.onChange)||o.call(t,e),null==(n=(r=p.value).onChange)||n.call(r,e,i),h.value&&M("change",f.value)&&m.validate()},y=e=>{var t,o,r,n;null==(o=null==(t=p.value.componentProps)?void 0:t.onBlur)||o.call(t,e),null==(n=(r=p.value).onBlur)||n.call(r,i),h.value&&M("blur",f.value)&&m.validate()},C=e=>{m.setValue(e)},x=L(()=>({...p.value.componentProps??{},value:m.value.value,onChange:g,onBlur:y,"onUpdate:value":C})),{createSlotProps:w,renderAfter:S,renderBefore:F,renderContent:k,renderError:V,renderLabel:R}=function(t){const{schemaRef:r,field:n,form:l,formContext:a,componentProps:s,slots:i}=t,d=e.computed(()=>{if("top"===r.value.labelPosition)return"100%";const e=r.value.labelWidth??"auto";return/^\d+(?:\.\d+)?$/.test(String(e))?`${e}px`:e}),c=e.computed(()=>"top"===r.value.labelPosition?"left":r.value.labelAlign),u=(e={})=>({schema:r.value,componentProps:s.value,value:n.value.value,field:n,form:l,...e}),p=e=>{const t=U(i,`${J(r.value.name)}${e}`);return(null==t?void 0:t(u()))??null};return{createSlotProps:u,renderAfter:()=>p("After"),renderBefore:()=>p("Before"),renderContent:()=>{const t=l.getRendererEntry(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const o=Z(J(r.value.name),i),n=t.transformProps?t.transformProps(s.value,{schema:r.value,form:l}):s.value,a=e.h(t.component,n,o),d=U(i,`${J(r.value.name)}Content`);return e.createVNode("div",{class:"schemx-field__content",style:{textAlign:r.value.contentAlign}},[d?d(u({columnElement:a})):a])},renderError:()=>{var t;const o=U(i,`${J(r.value.name)}Error`);return o||0!==n.errors.value.length?e.createVNode("div",{class:"schemx-field__error",style:{marginLeft:"top"===(null==(t=r.value)?void 0:t.labelPosition)?"8px":`calc(${d.value} + var(--schemx-field-gap))`}},[o?o(u({errors:n.errors.value})):n.errors.value[0]]):null},renderLabel:()=>{const t=U(i,`${J(r.value.name)}Label`),n=r.value.colon??a.schemaConfig.colon,l=(r.value.showRequiredMark??Boolean(r.value.required))&&!r.value.disabled&&!r.value.readonly;return e.createVNode("label",{class:"schemx-field__label",style:{width:d.value,textAlign:c.value,marginLeft:"right"===c.value?"auto":""}},[t?t(u()):e.createVNode(e.Fragment,null,[r.value.labelIcon&&e.createVNode("span",{class:"schemx-field__label-icon"},[e.createVNode(te,{icon:r.value.labelIcon,component:a.iconComponent},null)]),e.createVNode("span",{class:o("schemx-field__label-text",{"is-required":l})},[r.value.label,n?":":""])])])}}}({schemaRef:p,field:m,form:i,formContext:s,componentProps:x,slots:a});return()=>{if(!1===p.value.visible)return null;const t=U(a,J(p.value.name)),n=p.value.labelPosition,i=t?t(w()):e.createVNode("div",{class:o("schemx-field",`schemx-field--label-${n}`,{"is-readonly":p.value.readonly,"is-disabled":p.value.disabled})},[R(),k()]),d=e.createVNode("div",e.mergeProps(l,{class:o("schemx-field-wrapper",r.class,l.class,p.value.class,p.value.bordered?"is-bordered":""),style:[l.style,r.style,p.value.style,{"--schemx-content-align":p.value.contentAlign,"--schemx-error-align":p.value.errorAlign??s.schemaConfig.errorAlign??"left"}]}),[F(),i,V(),S()]);return e.createVNode(ee,{col:p.value.col??p.value.layout},"function"==typeof(c=d)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?d:{default:()=>[d]});var c}}}),re=["aria-busy","data-loading","disabled"],ne={key:0,class:"schemx-button__prefix"},le={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"},ae={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 o=t,r=e.useAttrs(),n=e.computed(()=>o.disabled||o.loading),l=e.computed(()=>["schemx-button",`schemx-button--${o.size}`]);return(t,a)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(r),{class:l.value,"aria-busy":o.loading||void 0,"data-loading":o.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",ne,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),o.loading?(e.openBlock(),e.createElementBlock("svg",le,[...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),o.loading&&o.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(o.loadingText),1)],64)):e.renderSlot(t.$slots,"default",{},void 0,void 0,3),t.$slots.suffix?(e.openBlock(),e.createElementBlock("span",ae,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,re))}});const ie=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},rowConfig:{type:Object,required:!1,default:void 0},renderChildren:{type:Function,required:!0}},setup:t=>()=>{if(!1===t.schema.visible)return null;const o=t.rowConfig||t.schema.row?{...t.rowConfig,...t.schema.row}:void 0,r=t.schema.items.map(r=>{const n=void 0===o?t.renderChildren(r.children):t.renderChildren(r.children,o);return e.createVNode(e.Fragment,{key:r.key},[n])});return t.schema.layout?e.createVNode(ee,{col:t.schema.layout},"function"==typeof(n=r)||"[object Object]"===Object.prototype.toString.call(n)&&!e.isVNode(n)?r:{default:()=>[r]}):r;var n}});const de=e.defineComponent({name:"SchemxGroup",inheritAttrs:!1,props:{schema:{type:Object,required:!0},rowConfig:{type:Object,required:!1,default:void 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(r,n){var l;const{attrs:a,slots:s}=n,i=e.ref(Boolean(r.schema.defaultCollapsed)),d=e.computed(()=>r.schema.collapsed??i.value),c=(null==(l=e.getCurrentInstance())?void 0:l.uid)??0;e.watch(()=>r.schema.collapsed,(e,t)=>{void 0!==e?i.value=e:void 0!==t&&(i.value=t)});const u=()=>{var e,t;if(!r.schema.collapsible||r.schema.disabled)return;const o=!d.value;void 0===r.schema.collapsed&&(i.value=o),null==(t=(e=r.schema).onCollapsedChange)||t.call(e,o)};return()=>{var n;const l=r.schema;if(!1===l.visible)return null;const i=Boolean(l.collapsible),p=d.value,m=l.destroyOnCollapse??!0,v=`schemx-group-${(null==(n=l.debug)?void 0:n.runtimeNodeId)??`local-${c}`}-${f=l.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,g=`${v}-body`,y=r.rowConfig||l.row?{...r.rowConfig,...l.row}:void 0,b=o=>t.isViewDynamicSchema(o)?!1===o.visible?null:o.items.map(e=>e.children.map(b)):t.isViewGroupSchema(o)?e.createVNode(de,{key:o.key,schema:o,class:r.class,style:r.style},s):e.createVNode(oe,{key:`${o.key}:${J(o.name)}`,schema:o},s),{hasHeader:C,renderBodyContent:x,renderHeaderContent:w}=function(t){const{schema:r,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i,slots:d,renderChildren:c}=t,u=String(r.key),p=U(d,`${u}Header`),m=U(d,`${u}Label`),v=U(d,`${u}Content`),f={schema:r,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i};return{hasHeader:Boolean(r.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"},[r.label]);return l?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:o("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:l,collapsed:p,collapsible:i,disabled:Boolean(l.disabled),readonly:Boolean(l.readonly),toggle:u,slots:s,renderChildren:()=>r.renderChildren?void 0===y?r.renderChildren(l.children):r.renderChildren(l.children,y):l.children.map(b)}),S=e.createVNode("div",{id:g,role:"group","aria-labelledby":l.label?h:void 0,"aria-hidden":p||void 0,class:"schemx-group__body",style:!m&&p?{display:"none"}:void 0},[x()]),F=e.createVNode("div",e.mergeProps(a,{class:o("schemx-group-wrapper",r.class,a.class,l.class),"data-key":l.key,"aria-disabled":l.disabled||void 0,style:[a.style,r.style,l.style]}),[e.createVNode("div",{class:o("schemx-group",{"schemx-group--collapsed":p,"is-readonly":l.readonly,"is-disabled":l.disabled})},[C&&e.createVNode("div",{id:h,role:i?"button":void 0,tabindex:i?l.disabled?-1:0:void 0,"aria-expanded":i?!p:void 0,"aria-controls":i?g:void 0,"aria-disabled":i&&l.disabled||void 0,class:o("schemx-group__header",{"schemx-group__header--clickable":i&&!l.disabled}),onClick:u,onKeydown:e=>{l.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),u())}},[w()]),m?!p&&S:S])]);return l.layout?e.createVNode(ee,{col:l.layout},"function"==typeof(k=F)||"[object Object]"===Object.prototype.toString.call(k)&&!e.isVNode(k)?F:{default:()=>[F]}):F;var k}}}),ce=de,ue=e.defineComponent({name:"SchemxRow",inheritAttrs:!1,props:{row:{type:Object,required:!1,default:void 0},enabled:{type:Boolean,required:!1,default:!0}},setup(t,o){const{attrs:r,slots:n}=o,l=f(),a=e.computed(()=>{const t=null==l?void 0:l.rowComponent;return t?e.markRaw(e.toRaw(t)):void 0});return()=>{var o,l;const s=a.value,i=t.row??{},{gutter:d,justify:c,align:u,...p}=i,{class:m,style:v,...f}=r,h={...p,...f},g=["schemx-row",m],y="start"===c?"flex-start":"end"===c?"flex-end":c,b="top"===u?"flex-start":"middle"===u?"center":"bottom"===u?"flex-end":void 0,[C,x,w,S]=Y(d),F=C/2,k=x/2,V=w/2,R=S/2,j=[v,{"--schemx-gutter-top":`${F}px`,"--schemx-gutter-right":`${k}px`,"--schemx-gutter-bottom":`${V}px`,"--schemx-gutter-left":`${R}px`,margin:`-${F}px -${k}px -${V}px -${R}px`,justifyContent:y,alignItems:b}];return t.enabled?s?e.h(s,{...h,gutter:d,justify:c,align:u,class:g,style:j},n):e.createVNode("div",e.mergeProps(f,{class:g,style:j}),[null==(l=n.default)?void 0:l.call(n)]):(null==(o=n.default)?void 0:o.call(n))??null}}});const pe=e.defineComponent({name:"SchemxSchemaList",inheritAttrs:!1,props:{schemas:{type:Array,required:!0},viewSchemas:{type:Array,required:!0},rowConfig:{type:Object,required:!1,default:void 0},fieldClassResolver:{type:Function,required:!1,default:void 0}},setup(o,{slots:r}){const n=e=>`${e.key}:${J(e.name)}`,l=(t,n=o.rowConfig)=>e.h(pe,{schemas:t,viewSchemas:o.viewSchemas,rowConfig:n,fieldClassResolver:o.fieldClassResolver},r),a=a=>{var s;if(!1===a.visible)return null;let i;return i=t.isViewGroupSchema(a)?e.createVNode(ce,{key:a.key,schema:a,rowConfig:o.rowConfig,renderChildren:l},r):t.isViewDynamicSchema(a)?e.createVNode(ie,{key:a.key,schema:a,rowConfig:o.rowConfig,renderChildren:l},r):e.createVNode(oe,{key:n(a),schema:a,class:null==(s=o.fieldClassResolver)?void 0:s.call(o,a)},r),i};return()=>{let t;return e.createVNode(ue,{row:o.rowConfig,class:"schemx-schema-list"},"function"==typeof(r=t=o.schemas.map(a))||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?t:{default:()=>[t]});var r}}}),me=pe,ve={key:0,class:"schemx-actions"},fe=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},fieldRules:{default:void 0},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},row:{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:()=>({})},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},colComponent:{default:void 0},rowComponent:{default:void 0},iconComponent:{default:void 0},col:{default:void 0},layout:{},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},errorAlign:{},validationTrigger:{default:void 0},colon:{type:Boolean,default:void 0},showRequiredMark:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0}},emits:["update:modelValue"],setup(o,{expose:r,emit:l}){const a=o,s=l,i=e.useSlots(),d=[...t.defaultSchemxConfigKeys,...A],c=void 0!==a.form,u=e.computed(()=>{const e=n.pick(a,d);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),p=V(),v=t.getGlobalSchemxConfig(),f={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},h=e.computed(()=>c?t.mergeConfig({schemaConfig:u.value},f):t.mergeConfig({schemaConfig:u.value},(null==p?void 0:p.value)??{},f,v)),g=e.computed(()=>({...O,...h.value.schemaConfig})),y=e.computed(()=>t.resolveSchemxConfig({schemaConfig:g.value}).schemaConfig),b=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),C=e.computed(()=>a.colComponent??(null==p?void 0:p.value.colComponent)??v.colComponent),x=e.computed(()=>a.rowComponent??(null==p?void 0:p.value.rowComponent)??v.rowComponent),w=e.computed(()=>a.iconComponent??(null==p?void 0:p.value.iconComponent)??v.iconComponent),S=e.computed(()=>{const e=y.value.row,t=(null==p?void 0:p.value.row)??v.row??e;if(void 0!==t||void 0!==a.row)return{...t,...a.row}}),F=m({form:a.form?a.form:B({schemas:a.schemas,schemaConfig:y.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 o;null==(o=a.onValuesChange)||o.call(a,e,t)},onFieldsChange:(e,t)=>{var o;null==(o=a.onFieldsChange)||o.call(a,e,t)}}),get schemaConfig(){return g.value},get iconComponent(){return w.value},get colComponent(){return C.value},get rowComponent(){return x.value}}),k=e.computed(()=>a.loading??F.isLoading()),R=e.computed(()=>["schemx",a.class]),j=e.computed(()=>a.style),P=e=>!0===e?{}:e||{},E=e.computed(()=>P(a.submitter)),N=e.computed(()=>P(a.resetter)),$=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),_=e.computed(()=>$(E.value)),q=e.computed(()=>$(N.value)),T=e.computed(()=>!1!==a.submitter&&(void 0!==a.submitter||i.submitter)),L=e.computed(()=>!1!==a.resetter&&(void 0!==a.resetter||i.resetter)),z=e.computed(()=>T.value||L.value),M=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),I=e.computed(()=>k.value||Boolean(_.value.disabled)),G=e.computed(()=>k.value||Boolean(q.value.disabled));let H=!1;const K=new Set;e.watch(()=>a.modelValue,t=>{if(!K.delete(e.toRaw(t))){H=!0;try{F.setFieldsValue(t)}finally{H=!1}}},{deep:!0,immediate:c});const U=()=>F.submit(),Z=()=>{F.reset()},J=W(F,e=>e);e.watch(J,t=>{H||(t=>{const o=e.toRaw(t);K.add(o),s("update:modelValue",t),e.nextTick(()=>{K.delete(o)})})(t)},{flush:"sync"}),e.watch(()=>a.schemas,e=>{t.isSchemxSchemas(e)||F.setSchemas(e)},{immediate:c});const Y=D(F),ee=e=>{const{isFirst:t,isLast:o}=function(e,t){const o=e.findIndex(e=>e.key===t);return-1===o?{found:!1,isFirst:!1,isLast:!1}:Q(e[o])?{found:!0,isFirst:!X(e,o,-1),isLast:!X(e,o,1)}:{found:!0,isFirst:!1,isLast:!1}}(Y.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},te=e=>{F.updateSchemaConfig(e)},oe=(e,t)=>{const o={...e};if(void 0!==t)for(const r of d)b(t,r)&&!b(e,r)&&(o[r]=void 0);Object.keys(o).length>0&&F.updateSchemaConfig(o)};c?e.watch(u,oe,{deep:!0,immediate:!0}):e.watch(y,te,{deep:!0});return r({...F,submit:U,reset:Z}),(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(R.value),style:e.normalizeStyle(j.value)},[e.createVNode(e.unref(me),{schemas:e.unref(Y),"view-schemas":e.unref(Y),"row-component":x.value,"row-config":S.value,"field-class-resolver":ee},e.createSlots({_:2},[e.renderList(M.value,(o,r)=>({name:r,fn:e.withCtx(o=>[e.renderSlot(t.$slots,r,e.normalizeProps(e.guardReactiveProps(o??{})))])}))]),1032,["schemas","view-schemas","row-component","row-config"]),z.value?(e.openBlock(),e.createElementBlock("div",ve,[L.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(F),loading:k.value,disabled:G.value,reset:Z},void 0,void 0,0):L.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:1},q.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:G.value,onClick:Z}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),T.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(F),loading:k.value,disabled:I.value,submit:U},void 0,void 0,2):T.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:3},_.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:k.value,disabled:I.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(E.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var he,ge;const ye=(he=fe,ge={install(e,t={}){S(e,t),e.component("SchemxForm",fe)},Field:oe},Object.assign(he,ge));const be=e.defineComponent({name:"SchemxWrapper",inheritAttrs:!1,__name:"index",props:{readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){const o=t,r=e.useAttrs(),n=e.useSlots(),l=e.ref(!1),a=e.computed(()=>["schemx-wrapper",r.class,o.readonly&&"schemx-wrapper--readonly",o.disabled&&"schemx-wrapper--disabled"]),s=e.computed(()=>{const{class:e,...t}=r;return t}),i=e=>{!e||n.readonly||l.value};return e.onMounted(()=>i(o.readonly)),e.watch(()=>o.readonly,i),(t,r)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:a.value}),[o.readonly?e.renderSlot(t.$slots,"readonly",{readonly:o.readonly,disabled:o.disabled},void 0,void 0,0):e.renderSlot(t.$slots,"default",{readonly:o.readonly,disabled:o.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},rowComponent:{type:[Object,Function],default:void 0},iconComponent:{type:[Object,Function],default:void 0},row:{type:Object,default:void 0}},setup(t,o){const{slots:r,attrs:n}=o;return F(e.computed(()=>({schemaConfig:t.schemaConfig,rendererProps:t.rendererProps,validatorAdapters:t.validatorAdapters,defaultRendererType:t.defaultRendererType,rendererRegistry:t.rendererRegistry,presetRuleRegistry:t.presetRuleRegistry,colComponent:t.colComponent,rowComponent:t.rowComponent,iconComponent:t.iconComponent,row:t.row,...n}))),()=>{var e;return null==(e=r.default)?void 0:e.call(r)}}});exports.Col=ee,exports.ConfigProvider=Ce,exports.Field=oe,exports.Group=ce,exports.Icon=te,exports.Row=ue,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(o,{attrs:r,slots:n}){const l=function(e){return"function"==typeof e?{api:e}:e}(o.dict),a=l?r.fieldName??C().name:void 0,s=l?_(l,a):null,i=e.computed(()=>({...r,dict:l,options:l?null==s?void 0:s.list.value:r.options,loading:l?null==s?void 0:s.loading.value:r.loading}));return()=>e.h(t,i.value,n)}})},exports.Wrapper=be,exports.createConfigProviderContext=F,exports.createFieldContext=b,exports.createFormConfigContext=function(t){e.provide(p,t)},exports.createFormContext=function(t){const o=c(t).instance;return e.provide(u,o),o},exports.default=ye,exports.normalizeSchemxGutter=Y,exports.presetRuleRegistry=R,exports.provideFormContext=m,exports.rendererRegistry=j,exports.schemxForm=ye,exports.useConfigProviderContext=k,exports.useConfigProviderContextRef=V,exports.useDictionary=_,exports.useField=P,exports.useFieldContext=C,exports.useForm=B,exports.useFormConfigContext=function(){const t=e.inject(p,null);if(!t)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().");return t},exports.useFormContext=h,exports.useFormContextValue=v,exports.useFormRuntimeContext=g,exports.useFormSelector=W,exports.useStableRef=L,exports.useViewSchemas=D,exports.useWatch=E,exports.useWatchAll=function(e,t){return E(e,t)},exports.useWatchField=function(e,t,o){return E(e,t,o)},exports.useWatchFields=N,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