@robot-admin/naive-ui-components 0.22.0 → 0.22.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +3 -1
  3. package/README_EN.md +3 -1
  4. package/dist/C_Captcha.d.ts +2 -0
  5. package/dist/C_Form.base.css +58 -58
  6. package/dist/C_Form.cjs +1 -1
  7. package/dist/C_Form.css +58 -58
  8. package/dist/C_Form.d.cts +3 -1
  9. package/dist/C_Form.d.ts +3 -2
  10. package/dist/C_Form.js +1 -1
  11. package/dist/C_FormModal.css +10 -10
  12. package/dist/C_FormModal.d.ts +1 -0
  13. package/dist/C_FormModal2.cjs +1 -1
  14. package/dist/C_FormModal2.js +1 -1
  15. package/dist/C_FormSearch.css +56 -56
  16. package/dist/C_FormSearch.d.ts +2 -1
  17. package/dist/C_FormSearch2.cjs +1 -1
  18. package/dist/C_FormSearch2.js +1 -1
  19. package/dist/C_Login.d.ts +3 -0
  20. package/dist/C_Table.base.css +58 -58
  21. package/dist/C_Table.css +58 -58
  22. package/dist/C_Table.d.cts +1 -1
  23. package/dist/C_Table.d.ts +5 -2
  24. package/dist/C_Tree.d.cts +1 -1
  25. package/dist/C_Tree.d.ts +5 -2
  26. package/dist/config.cjs +1 -1
  27. package/dist/config.d.cts +4 -1
  28. package/dist/config.d.ts +4 -2
  29. package/dist/config.js +1 -1
  30. package/dist/config2.d.ts +14 -0
  31. package/dist/constants3.d.cts +1 -1
  32. package/dist/constants3.d.ts +1 -1
  33. package/dist/constants4.d.cts +8 -8
  34. package/dist/constants4.d.ts +8 -8
  35. package/dist/constants5.d.cts +2 -2
  36. package/dist/constants5.d.ts +2 -2
  37. package/dist/data.d.cts +4 -4
  38. package/dist/data.d.ts +4 -4
  39. package/dist/dateRange.d.ts +1 -2
  40. package/dist/density.cjs +1 -1
  41. package/dist/density.js +1 -1
  42. package/dist/helpers.cjs +1 -1
  43. package/dist/helpers.js +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.d.cts +4 -3
  46. package/dist/index.d.ts +7 -5
  47. package/dist/index.js +1 -1
  48. package/dist/index.vue.d.cts +5 -5
  49. package/dist/index.vue.d.ts +5 -5
  50. package/dist/index10.vue.d.cts +3 -3
  51. package/dist/index10.vue.d.ts +5 -5
  52. package/dist/index11.vue.d.cts +5 -5
  53. package/dist/index11.vue.d.ts +1 -1
  54. package/dist/index12.vue.d.cts +1 -1
  55. package/dist/index12.vue.d.ts +3 -3
  56. package/dist/index13.vue.d.cts +3 -3
  57. package/dist/index13.vue.d.ts +8 -8
  58. package/dist/index14.vue.d.cts +8 -8
  59. package/dist/index17.vue.d.ts +2 -2
  60. package/dist/index18.vue.d.cts +2 -2
  61. package/dist/index18.vue.d.ts +2 -2
  62. package/dist/index19.vue.d.cts +2 -2
  63. package/dist/index19.vue.d.ts +2 -2
  64. package/dist/index2.vue.d.cts +2 -2
  65. package/dist/index2.vue.d.ts +2 -2
  66. package/dist/index20.vue.d.cts +1 -1
  67. package/dist/index20.vue.d.ts +1 -1
  68. package/dist/index21.vue.d.cts +1 -1
  69. package/dist/index21.vue.d.ts +1 -1
  70. package/dist/index22.vue.d.cts +2 -2
  71. package/dist/index22.vue.d.ts +2 -2
  72. package/dist/index24.vue.d.cts +1 -1
  73. package/dist/index24.vue.d.ts +1 -1
  74. package/dist/index25.vue.d.cts +5 -5
  75. package/dist/index25.vue.d.ts +5 -5
  76. package/dist/index26.vue.d.cts +2 -2
  77. package/dist/index26.vue.d.ts +2 -2
  78. package/dist/index3.vue.d.cts +3 -3
  79. package/dist/index3.vue.d.ts +3 -3
  80. package/dist/index4.vue.d.cts +2 -2
  81. package/dist/index8.vue.d.ts +1 -1
  82. package/dist/index9.vue.d.cts +1 -1
  83. package/dist/index9.vue.d.ts +3 -3
  84. package/dist/style.css +124 -124
  85. package/dist/useCalendarEvents.d.cts +1 -1
  86. package/dist/useCalendarEvents.d.ts +1 -1
  87. package/dist/useCollapsePanel.d.cts +4 -4
  88. package/dist/useCollapsePanel.d.ts +4 -4
  89. package/dist/useCropperCore.d.cts +4 -4
  90. package/dist/useCropperCore.d.ts +4 -4
  91. package/dist/useDynamicFormState.d.cts +6 -579
  92. package/dist/useDynamicFormState.d.ts +6 -579
  93. package/dist/useEdgeInteraction.d.cts +1 -1
  94. package/dist/useEdgeInteraction.d.ts +1 -1
  95. package/dist/useFormConfig.cjs +1 -0
  96. package/dist/useFormConfig.d.cts +576 -0
  97. package/dist/useFormConfig.d.ts +611 -0
  98. package/dist/useFormConfig.js +1 -0
  99. package/dist/useFullscreen.d.cts +3 -3
  100. package/dist/useFullscreen.d.ts +3 -3
  101. package/dist/useInfiniteScroll.d.cts +1 -1
  102. package/dist/useInfiniteScroll.d.ts +1 -1
  103. package/dist/useQRCode.d.cts +3 -3
  104. package/dist/useQRCode.d.ts +3 -3
  105. package/dist/useSignatureHistory.d.cts +3 -3
  106. package/dist/useSignatureHistory.d.ts +3 -3
  107. package/dist/useSplitResize.d.cts +6 -6
  108. package/dist/useSplitResize.d.ts +6 -6
  109. package/dist/useTableQuery.d.cts +9 -9
  110. package/dist/useTableQuery.d.ts +11 -22
  111. package/dist/useWorkflowValidation.d.cts +3 -3
  112. package/dist/useWorkflowValidation.d.ts +3 -3
  113. package/dist/verification.d.cts +4 -4
  114. package/dist/verification.d.ts +5 -5
  115. package/docs/guides/form-density.en.md +17 -3
  116. package/docs/guides/form-density.md +17 -3
  117. package/docs/guides/usage.en.md +1 -1
  118. package/package.json +1 -1
  119. package/dist/contracts.d.ts +0 -24
  120. package/dist/density.d.ts +0 -15
@@ -0,0 +1,14 @@
1
+ import { X as ComponentLocale, Y as ComponentFeedback } from "./useFormConfig.js";
2
+ import { MaybeRefOrGetter } from "vue";
3
+
4
+ //#region src/composables/useComponentLocale.d.ts
5
+ /** Bind the UI-independent translator to this Vue application and local configuration. */
6
+ declare function useComponentLocale(local?: MaybeRefOrGetter<ComponentLocale | undefined>): {
7
+ t: (key: string, params?: Record<string, string | number>) => string;
8
+ };
9
+ //#endregion
10
+ //#region src/adapters/naive/feedback.d.ts
11
+ /** Reuse Naive providers when present and safely degrade to injected/no-op feedback. */
12
+ declare function useComponentFeedback(local?: MaybeRefOrGetter<ComponentFeedback | undefined>): Required<ComponentFeedback>;
13
+ //#endregion
14
+ export { useComponentLocale as n, useComponentFeedback as t };
@@ -250,11 +250,11 @@ declare const __VLS_base: vue.DefineComponent<NotificationCenterProps, Notificat
250
250
  onNavigate?: ((url: string) => any) | undefined;
251
251
  onViewAll?: (() => any) | undefined;
252
252
  }>, {
253
- pageSize: number;
254
253
  autoStart: boolean;
255
254
  desktopNotification: boolean;
256
255
  maxBadgeCount: number;
257
256
  pollingInterval: number;
257
+ pageSize: number;
258
258
  storageKey: string;
259
259
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
260
260
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -250,11 +250,11 @@ declare const __VLS_base: vue.DefineComponent<NotificationCenterProps, Notificat
250
250
  onNavigate?: ((url: string) => any) | undefined;
251
251
  onViewAll?: (() => any) | undefined;
252
252
  }>, {
253
- pageSize: number;
254
253
  autoStart: boolean;
255
254
  desktopNotification: boolean;
256
255
  maxBadgeCount: number;
257
256
  pollingInterval: number;
257
+ pageSize: number;
258
258
  storageKey: string;
259
259
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
260
260
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -196,32 +196,32 @@ type __VLS_Slots = {} & {
196
196
  area?: (props: typeof __VLS_11) => any;
197
197
  };
198
198
  declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
199
- error: (file: UploadFileItem, error: Error) => any;
199
+ change: (fileList: UploadFileItem[]) => any;
200
200
  success: (file: UploadFileItem, response: unknown) => any;
201
+ error: (file: UploadFileItem, error: Error) => any;
201
202
  progress: (file: UploadFileItem, percent: number) => any;
202
- change: (fileList: UploadFileItem[]) => any;
203
203
  remove: (file: UploadFileItem) => any;
204
204
  finish: (fileList: UploadFileItem[]) => any;
205
205
  exceed: (files: File[], fileList: UploadFileItem[]) => any;
206
206
  }, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{
207
- onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
207
+ onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
208
208
  onSuccess?: ((file: UploadFileItem, response: unknown) => any) | undefined;
209
+ onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
209
210
  onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
210
- onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
211
211
  onRemove?: ((file: UploadFileItem) => any) | undefined;
212
212
  onFinish?: ((fileList: UploadFileItem[]) => any) | undefined;
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
215
  disabled: boolean;
216
- data: Record<string, unknown>;
217
- multiple: boolean;
218
- draggable: boolean;
219
216
  action: string;
220
- maxSize: number;
221
217
  headers: Record<string, string>;
218
+ data: Record<string, unknown>;
219
+ multiple: boolean;
222
220
  directory: boolean;
223
221
  accept: string;
222
+ maxSize: number;
224
223
  maxCount: number;
224
+ draggable: boolean;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
227
227
  chunkSize: number;
@@ -196,32 +196,32 @@ type __VLS_Slots = {} & {
196
196
  area?: (props: typeof __VLS_11) => any;
197
197
  };
198
198
  declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
199
- error: (file: UploadFileItem, error: Error) => any;
199
+ change: (fileList: UploadFileItem[]) => any;
200
200
  success: (file: UploadFileItem, response: unknown) => any;
201
+ error: (file: UploadFileItem, error: Error) => any;
201
202
  progress: (file: UploadFileItem, percent: number) => any;
202
- change: (fileList: UploadFileItem[]) => any;
203
203
  remove: (file: UploadFileItem) => any;
204
204
  finish: (fileList: UploadFileItem[]) => any;
205
205
  exceed: (files: File[], fileList: UploadFileItem[]) => any;
206
206
  }, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{
207
- onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
207
+ onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
208
208
  onSuccess?: ((file: UploadFileItem, response: unknown) => any) | undefined;
209
+ onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
209
210
  onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
210
- onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
211
211
  onRemove?: ((file: UploadFileItem) => any) | undefined;
212
212
  onFinish?: ((fileList: UploadFileItem[]) => any) | undefined;
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
215
  disabled: boolean;
216
- data: Record<string, unknown>;
217
- multiple: boolean;
218
- draggable: boolean;
219
216
  action: string;
220
- maxSize: number;
221
217
  headers: Record<string, string>;
218
+ data: Record<string, unknown>;
219
+ multiple: boolean;
222
220
  directory: boolean;
223
221
  accept: string;
222
+ maxSize: number;
224
223
  maxCount: number;
224
+ draggable: boolean;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
227
227
  chunkSize: number;
@@ -263,8 +263,8 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
263
263
  //#region src/components/C_VideoPlayer/index.vue.d.ts
264
264
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
265
265
  error: (error: Error) => any;
266
- ended: () => any;
267
266
  ready: () => any;
267
+ ended: () => any;
268
268
  stateChange: (state: PlayerState) => any;
269
269
  qualityChange: (quality: QualityLevel) => any;
270
270
  rateChange: (rate: number) => any;
@@ -276,8 +276,8 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
276
276
  timeUpdate: (currentTime: number, duration: number) => any;
277
277
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
278
278
  onError?: ((error: Error) => any) | undefined;
279
- onEnded?: (() => any) | undefined;
280
279
  onReady?: (() => any) | undefined;
280
+ onEnded?: (() => any) | undefined;
281
281
  onStateChange?: ((state: PlayerState) => any) | undefined;
282
282
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
283
283
  onRateChange?: ((rate: number) => any) | undefined;
@@ -263,8 +263,8 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
263
263
  //#region src/components/C_VideoPlayer/index.vue.d.ts
264
264
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
265
265
  error: (error: Error) => any;
266
- ended: () => any;
267
266
  ready: () => any;
267
+ ended: () => any;
268
268
  stateChange: (state: PlayerState) => any;
269
269
  qualityChange: (quality: QualityLevel) => any;
270
270
  rateChange: (rate: number) => any;
@@ -276,8 +276,8 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
276
276
  timeUpdate: (currentTime: number, duration: number) => any;
277
277
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
278
278
  onError?: ((error: Error) => any) | undefined;
279
- onEnded?: (() => any) | undefined;
280
279
  onReady?: (() => any) | undefined;
280
+ onEnded?: (() => any) | undefined;
281
281
  onStateChange?: ((state: PlayerState) => any) | undefined;
282
282
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
283
283
  onRateChange?: ((rate: number) => any) | undefined;
package/dist/data.d.cts CHANGED
@@ -65,21 +65,21 @@ type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_37>]?: (props: typeof _
65
65
  declare const __VLS_base: vue.DefineComponent<CTabsProps, {
66
66
  activeValue: vue.WritableComputedRef<TabsValue | null, TabsValue | null>;
67
67
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
68
- add: () => any;
69
68
  "update:modelValue": (value: TabsValue) => any;
70
69
  change: (value: TabsValue, item: TabsItem | undefined) => any;
71
70
  close: (value: TabsValue) => any;
71
+ add: () => any;
72
72
  }, string, vue.PublicProps, Readonly<CTabsProps> & Readonly<{
73
- onAdd?: (() => any) | undefined;
74
73
  "onUpdate:modelValue"?: ((value: TabsValue) => any) | undefined;
75
74
  onChange?: ((value: TabsValue, item: TabsItem | undefined) => any) | undefined;
76
75
  onClose?: ((value: TabsValue) => any) | undefined;
76
+ onAdd?: (() => any) | undefined;
77
77
  }>, {
78
78
  modelValue: TabsValue | null;
79
- size: TabsSize;
80
79
  type: TabsType;
81
- items: readonly TabsItem[];
82
80
  defaultValue: TabsValue | null;
81
+ items: readonly TabsItem[];
82
+ size: TabsSize;
83
83
  placement: TabsPlacement;
84
84
  justifyContent: TabsJustifyContent;
85
85
  animated: boolean;
package/dist/data.d.ts CHANGED
@@ -65,21 +65,21 @@ type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_37>]?: (props: typeof _
65
65
  declare const __VLS_base: vue.DefineComponent<CTabsProps, {
66
66
  activeValue: vue.WritableComputedRef<TabsValue | null, TabsValue | null>;
67
67
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
68
- add: () => any;
69
68
  "update:modelValue": (value: TabsValue) => any;
70
69
  change: (value: TabsValue, item: TabsItem | undefined) => any;
71
70
  close: (value: TabsValue) => any;
71
+ add: () => any;
72
72
  }, string, vue.PublicProps, Readonly<CTabsProps> & Readonly<{
73
- onAdd?: (() => any) | undefined;
74
73
  "onUpdate:modelValue"?: ((value: TabsValue) => any) | undefined;
75
74
  onChange?: ((value: TabsValue, item: TabsItem | undefined) => any) | undefined;
76
75
  onClose?: ((value: TabsValue) => any) | undefined;
76
+ onAdd?: (() => any) | undefined;
77
77
  }>, {
78
78
  modelValue: TabsValue | null;
79
- size: TabsSize;
80
79
  type: TabsType;
81
- items: readonly TabsItem[];
82
80
  defaultValue: TabsValue | null;
81
+ items: readonly TabsItem[];
82
+ size: TabsSize;
83
83
  placement: TabsPlacement;
84
84
  justifyContent: TabsJustifyContent;
85
85
  animated: boolean;
@@ -1,5 +1,4 @@
1
- import { n as ComponentLocale, t as ComponentFeedback } from "./contracts.js";
2
- import { t as ComponentDensity } from "./density.js";
1
+ import { X as ComponentLocale, Y as ComponentFeedback, u as ComponentDensity } from "./useFormConfig.js";
3
2
  import * as vue from "vue";
4
3
  import { MaybeRefOrGetter, Ref } from "vue";
5
4
  import { FormInst, FormItemRule } from "naive-ui";
package/dist/density.cjs CHANGED
@@ -1 +1 @@
1
- const e={default:{density:`default`,size:`medium`,gap:16,rowGap:16,padding:24,formItemGap:24},compact:{density:`compact`,size:`small`,gap:8,rowGap:8,padding:12,formItemGap:12},comfortable:{density:`comfortable`,size:`large`,gap:20,rowGap:20,padding:28,formItemGap:28}},t=t=>({...e[t&&Object.prototype.hasOwnProperty.call(e,t)?t:`default`]});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
1
+ const e={default:{density:`default`,size:`medium`,gap:16,rowGap:16,padding:24,formItemGap:24},compact:{density:`compact`,size:`small`,gap:8,rowGap:8,padding:12,formItemGap:4},comfortable:{density:`comfortable`,size:`large`,gap:20,rowGap:20,padding:28,formItemGap:28}},t=t=>({...e[t&&Object.prototype.hasOwnProperty.call(e,t)?t:`default`]});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
package/dist/density.js CHANGED
@@ -1 +1 @@
1
- const e={default:{density:`default`,size:`medium`,gap:16,rowGap:16,padding:24,formItemGap:24},compact:{density:`compact`,size:`small`,gap:8,rowGap:8,padding:12,formItemGap:12},comfortable:{density:`comfortable`,size:`large`,gap:20,rowGap:20,padding:28,formItemGap:28}},t=t=>({...e[t&&Object.prototype.hasOwnProperty.call(e,t)?t:`default`]});export{t};
1
+ const e={default:{density:`default`,size:`medium`,gap:16,rowGap:16,padding:24,formItemGap:24},compact:{density:`compact`,size:`small`,gap:8,rowGap:8,padding:12,formItemGap:4},comfortable:{density:`comfortable`,size:`large`,gap:20,rowGap:20,padding:28,formItemGap:28}},t=t=>({...e[t&&Object.prototype.hasOwnProperty.call(e,t)?t:`default`]});export{t};
package/dist/helpers.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./density.cjs`),t=require(`./useComponentLocale.cjs`),n=require(`./feedback.cjs`),r=require(`./C_Icon2.cjs`),i=require(`./export-helper.cjs`),a=require(`./data.cjs`),o=require(`./formValidation.cjs`);let s=require(`vue`),c=require(`naive-ui`);const l=Symbol(`c-form-global-config`);function u(){return(0,s.getCurrentInstance)()?(0,s.inject)(l,{}):{}}function d(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const f={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},p=[`steps`,`custom`];function m(t){return{...f,...t,size:t?.size??e.t(t?.density).size}}function h(e){return!(e.showActions===!1||p.includes(e.layout))}function g(e,t){if(Reflect.has(e,t)&&Object.prototype.hasOwnProperty.call(e,t))return(0,s.isReactive)(e);let n=e;for(let e of a.o(t)){if(!n||typeof n!=`object`||!(0,s.isReactive)(n))return!1;n=n[e]}return!0}function _(e,t=new Set){if(typeof e!=`object`||!e||t.has(e))return!0;t.add(e);let n=(0,s.isReactive)(e);return e instanceof Map?(e.forEach((e,r)=>{n=_(r,t)&&n,n=_(e,t)&&n}),n):e instanceof Set?(e.forEach(e=>{n=_(e,t)&&n}),n):(Object.values(e).forEach(e=>{n=_(e,t)&&n}),n)}function v(e,t){let n=(0,s.shallowRef)({}),r=new Map,i=(0,s.isReactive)(e);function o(){let i=new Set(t?(0,s.toValue)(t):[...Object.keys(n.value),...Object.keys(e)]);for(let e of r.keys())i.has(e)||r.delete(e);return i}let c=(0,s.computed)(()=>{for(let e of o())if(d(e))return!0;return!1});function l(){let e=[];for(let t of o())d(t)&&e.push(t);return e}function u(e){return f(e)}function d(t){if(!i)return f(t);let o=r.get(t);return o||(o=(0,s.computed)(()=>{let r=a.r(e,t),i=g(e,t);return{cacheable:_(r)&&i,dirty:!a.a(a.r(n.value,t),r)}}),r.set(t,o)),o.value.cacheable?o.value.dirty:f(t)}function f(t){let r=a.r(e,t);return _(r),!a.a(a.r(n.value,t),r)}function p(){n.value=a.t(e)}function m(){return a.t(n.value)}return{isDirty:c,getChangedFields:l,isFieldDirty:u,markAsClean:p,getCleanModel:m}}const y={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function b(e){return a.t((e.value===void 0?y[e.type]:e.value)??null)}function x(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function S(e,r,i,c,l,u){let d=(0,s.reactive)(a.t(l?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),f=(0,s.reactive)({}),p=new Map,m=(0,s.ref)({}),h=(0,s.ref)({}),g=(0,s.ref)({}),_=(0,s.ref)(!1),y=new Map,S=!1,C,w=new Map,T=new Map,E=new Map,D=new Map,O=new Set,k=!1,A=!1,j=0,M=n.t(()=>r.value.feedback),{t:ee}=t.t(()=>r.value.locale),{isDirty:N,getChangedFields:te,isFieldDirty:ne,markAsClean:P,getCleanModel:F}=v(d,()=>e.value.map(e=>e.prop));function I(e,t,n){if(!S)try{r.value.onError?r.value.onError(e,{source:t,field:n}):M.error(e instanceof Error?e.message:String(e),e)}catch{}}function L(e,t){if(!(S||!t))try{M[e](t)}catch{}}let R=(0,s.computed)(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(d)}catch(t){return I(t,`callback`,e.prop),!1}}));function z(){A=!0;let e=++j;(0,s.nextTick)(()=>{e===j&&(A=!1)})}function B(){return a.t(d)}function re(t){let n=t?a.t(t):{};return e.value.forEach(e=>{a.i(n,e.prop)||a.c(n,e.prop,b(e))}),n}function V(e){try{let t=o.n(e.rulesWhen?e.rulesWhen(d):e.rules);if(y.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(o.t(n,ee(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(d);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete f[e.prop];return}f[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete f[e.prop],y.set(e.prop,t),I(t,`callback`,e.prop)}}function ie(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&V(e)})}function ae(e){O.forEach(t=>{e.has(t)||(p.delete(t),delete f[t],y.delete(t),G(t),E.delete(t),r.value.preserveRemovedFields||a.n(d,t))})}function H(t=!1){try{x(e.value);let n=B(),r=new Set(e.value.map(e=>e.prop));ae(r),e.value.forEach(e=>{a.i(d,e.prop)||a.c(d,e.prop,b(e)),V(e),oe(e)}),O=r,X(W(n),!1),t&&(0,s.nextTick)(P)}catch(e){throw I(e,`initialize`),e}}function U(e){let t=B();z(),a.s(d,re(e)),X(W(t),!1)}function W(t){return[...new Set([...Object.keys(t),...Object.keys(d),...e.value.map(e=>e.prop)])].filter(e=>!a.a(a.r(t,e),a.r(d,e)))}function G(e){T.get(e)?.abort(),T.delete(e),w.delete(e),D.delete(e),delete m.value[e],delete h.value[e],delete g.value[e]}function oe(e){if(E.get(e.prop)!==e.asyncOptions){if(G(e.prop),!e.asyncOptions){E.delete(e.prop);return}E.set(e.prop,e.asyncOptions),K(e,`initialize`)}}function K(e,t){if(S)return;let n=D.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};D.set(e.prop,r),(0,s.nextTick)(()=>{D.get(e.prop)===r&&(D.delete(e.prop),ce(r.item,r.reason))})}function q(e,t,n){return S||n.signal.aborted||w.get(e)!==t||T.get(e)!==n}function se(e){return!S&&!!e.asyncOptions&&E.get(e.prop)===e.asyncOptions}async function ce(e,t){if(!se(e))return;let{prop:n}=e,r=(w.get(n)??0)+1;w.set(n,r),T.get(n)?.abort();let i=new AbortController;T.set(n,i),h.value[n]=!0,delete g.value[n];try{let o=await e.asyncOptions(B(),{field:n,reason:t,signal:i.signal});if(q(n,r,i))return;if(!Array.isArray(o))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);m.value[n]=a.t([...o])}catch(e){if(q(n,r,i))return;g.value[n]=e,I(e,`async-options`,n)}finally{w.get(n)===r&&T.get(n)===i&&(h.value[n]=!1,T.delete(n))}}async function le(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(D.delete(e.prop),ce(e,`manual`))))}function J(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(d);t!==void 0&&!a.a(a.r(d,r.prop),t)&&(a.c(d,r.prop,a.t(t)),n.add(r.prop),e=!0)}catch(e){I(e,`callback`,r.prop)}if(!e)return[...n]}return I(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function Y(t){let n=t.map(e=>a.o(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=a.o(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function X(e,t=!0){let n=[...new Set([...e,...J()])];ie(),Y(n).forEach(e=>{K(e,`dependency`)}),t&&r.value.validateOnChange&&(0,s.nextTick)(()=>{S||Z(n).catch(()=>void 0)})}function ue(e){X([e])}function de(e,t){t?p.set(e,t):p.delete(e)}async function fe(){if(u?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=R.value.find(e=>y.has(e.prop));if(e)throw y.get(e.prop);if(await i.value.validate(),S)throw Error(`[C_Form] 表单已卸载`);c(`validate-success`,B())}catch(e){throw S||c(`validate-error`,e),e}}async function Z(e){if(u?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>y.has(e));if(n)throw y.get(n);let r=[],a=t.flatMap(e=>{let t=p.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function pe(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>p.get(e)?.restoreValidation())}async function Q(e){let t=R.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Z(t),!0}catch{return!1}}function me(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?Q(e=>e.layout?.step===t):Promise.resolve(!0)}function he(e){return Q(t=>t.layout?.tab===e)}function ge(){return Q(e=>!!e.layout?.dynamic)}function $(e){return Q(t=>t.layout?.group===e)}function _e(e){Object.entries(a.t(e)).forEach(([e,t])=>{a.c(d,e,t)}),X(Object.keys(e))}function ve(){let e=B();a.s(d,F()),pe(),X(W(e),!1),L(`info`,r.value.resetSuccessText)}async function ye(e,t,n=!1){a.c(d,e,a.t(t)),ue(e),n&&await Z(e)}function be(e){return a.t(a.r(d,e))}async function xe(e,t=!1){_e(e),t&&await Z(Object.keys(e))}function Se(){return S||u?.value===!1||_.value||r.value.disabled||r.value.readonly}function Ce(e,t,n){return!S&&!e.signal.aborted&&u?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a.a(d,t)}async function we(){if(Se())return!1;let e=B(),t=i.value,n=new AbortController;C=n,_.value=!0;try{if(await fe(),!Ce(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||I(e,`submit`),!1}return n.signal.aborted?!1:(c(`submit`,i),L(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{C===n&&(C=void 0),_.value=!1}}function Te(){H(!0);let e=l?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&U(e),(0,s.nextTick)(P)}return(0,s.watch)(e,()=>{let e=!k;e&&z(),H(e),k=!0},{deep:!0,immediate:!0}),l&&(0,s.watch)(l,e=>{e!==void 0&&!a.a(d,e)&&U(e)},{deep:!0,immediate:!0}),(0,s.watch)(()=>[r.value.mode,r.value.initialValues],([e,t])=>{l?.value!==void 0||e!==`edit`||!t||(U(t),(0,s.nextTick)(P))},{deep:!0}),(0,s.watch)(d,e=>{A||c(`update:modelValue`,a.t(e))},{deep:!0,flush:`post`}),(0,s.onScopeDispose)(()=>{S=!0,C?.abort(),T.forEach(e=>e.abort()),T.clear(),D.clear(),p.clear()}),{formModel:d,formRules:f,visibleOptions:R,initialize:Te,handleFieldChange:ue,setFormItemRef:de,validate:fe,validateField:Z,validateStep:me,validateTab:he,validateDynamicFields:ge,validateCustomGroup:$,clearValidation:pe,getModel:B,setFields:_e,resetFields:ve,setFieldValue:ye,getFieldValue:be,setFieldsValue:xe,submit:we,handleSubmit:we,handleReset:ve,isSubmitting:_,isDirty:N,getChangedFields:te,isFieldDirty:ne,markAsClean:P,asyncOptionsCache:m,asyncLoadingMap:h,asyncErrorMap:g,reloadOptions:le}}const C=Symbol(`c-form-renderer-registry`);function w(e={}){let t=(0,s.shallowReactive)(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function T(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function E(e){return{input:t=>(0,s.h)(e.NInput,{...t}),textarea:t=>(0,s.h)(e.NInput,{...t,type:`textarea`}),inputNumber:t=>(0,s.h)(e.NInputNumber,{...t}),switch:t=>(0,s.h)(e.NSwitch,{...t}),slider:t=>(0,s.h)(e.NSlider,{...t}),rate:t=>(0,s.h)(e.NRate,{...t}),datePicker:t=>(0,s.h)(e.NDatePicker,{...t}),daterange:t=>(0,s.h)(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>(0,s.h)(e.NTimePicker,{...t}),cascader:t=>(0,s.h)(e.NCascader,{...t}),colorPicker:t=>(0,s.h)(e.NColorPicker,{...t}),select:(t,n)=>(0,s.h)(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>(0,s.h)(e.NCheckboxGroup,{...t},{default:()=>(0,s.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,s.h)(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>(0,s.h)(e.NRadioGroup,{...t},{default:()=>(0,s.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,s.h)(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,c=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],(0,s.h)(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>c?.(e)},{default:()=>i.slots?.uploadClick?.()||(0,s.h)(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],(0,s.h)(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const D=w();function O(e,t){return D.register(e,t)}function k(e,t){return D.unregister(e,t)}const A=new Set([`select`,`checkbox`,`radio`,`cascader`]),j=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),M=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function ee(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:o,instanceSlots:c,asyncOptionsCache:l,asyncLoadingMap:u,renderers:d,setFormItemRef:f,onError:p}=e,m=o,h=E(m),g=(0,s.getCurrentInstance)()?(0,s.inject)(C,void 0):void 0,_=e.registry??g??D,v=e=>d?.value?.[e]??_.get(e)??h[e],y=e=>{let n=T(e.disabled,r.value.disabled,t),o=T(e.readonly,r.value.readonly,t),s=M.has(e.type),c={...j.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:a.r(t,e.prop),"onUpdate:value":n=>{T(e.disabled,r.value.disabled,t)||T(e.readonly,r.value.readonly,t)||(a.c(t,e.prop,n),i(e.prop))},disabled:n||o&&!s,readonly:o||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function b(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(l.value,e.prop)?l.value[e.prop]??[]:t}function x(e){return A.has(e.type)?{...e,children:b(e)}:e}function S(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let w=e=>{try{let t=x(e),n=v(t.type);return n?n(S(t,(0,s.mergeProps)(t.attrs??{},y(t))),t,r.value,{slots:c,components:m}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function O(e){if(e.label)return e.help?(0,s.h)(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,(0,s.h)(m.NTooltip,{trigger:`hover`},{trigger:()=>(0,s.h)(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:w,formItems:(0,s.computed)(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=O(e);return(0,s.h)(m.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>w(e)})})),getBaseProps:y}}const N={class:`c-form-default`},te=(0,s.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,N,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.formItems,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(e),{key:e.key??t}))),128))]))}});var ne=i.t(te,[[`__scopeId`,`data-v-4313de0c`]]);const P=(0,s.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=(0,s.computed)(()=>t.layoutConfig?.inline?.itemWidth??280),r=(0,s.computed)(()=>t.layoutConfig?.inline?.gap??16),i=(0,s.computed)(()=>t.layoutConfig?.inline?.rowGap??16),a=(0,s.computed)(()=>t.layoutConfig?.inline?.align??`center`),o=(0,s.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),c=(0,s.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),l=(0,s.computed)(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:c.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),u=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},d=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{class:`c-form-inline`,style:(0,s.normalizeStyle)(l.value)},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.formItems,(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:u(e,t),class:`c-form-inline-item`,style:(0,s.normalizeStyle)(d(t))},[((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(e)))],4))),128))],4))}});var F=i.t(P,[[`__scopeId`,`data-v-711f6c00`]]);const I={class:`c-grid-layout`},L={class:`config-header`},R={class:`config-controls`},z={class:`config-label`},B={class:`item-wrapper`},re=(0,s.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=(0,s.reactive)({cols:24,gutter:16,responsive:!0}),a=(0,s.computed)(()=>n.layoutConfig?.grid||{}),o=(0,s.computed)(()=>a.value.showConfigPanel),l=(0,s.computed)(()=>a.value.showStats),u=(0,s.computed)(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),d=(0,s.computed)(()=>({cols:u.value.cols,xGap:a.value.xGap??u.value.gutter,yGap:a.value.yGap??a.value.yGutter??u.value.gutter,responsive:u.value.responsive?`screen`:`self`})),f=(0,s.computed)(()=>[{key:`cols`,label:`列数`,component:c.NInputNumber,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:c.NInputNumber,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:c.NSwitch,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),p=(0,s.computed)(()=>`列数: ${u.value.cols} | 间距: ${u.value.gutter}px | 项目: ${n.formItems.length}个`),m=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,h=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},g=()=>{let{cols:e}=u.value;return e<=12?e:e<=24?12:8},_=e=>{let t=h(e,`span`),n=h(e,`offset`),r=h(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=u.value.cols?t:g(),offset:typeof n==`number`&&n>=0&&n<u.value.cols?n:0,suffix:!!r}};return(0,s.watch)(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...u.value}),getGridInfo:()=>({...u.value,itemCount:n.formItems.length})}),(t,n)=>{let i=c.NCard,a=c.NGridItem,u=c.NGrid,h=c.NAlert;return(0,s.openBlock)(),(0,s.createElementBlock)(`div`,I,[(0,s.createCommentVNode)(` 配置面板 `),o.value?((0,s.openBlock)(),(0,s.createBlock)(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,L,[(0,s.createVNode)(r.t,{name:`mdi:view-grid`,size:18}),n[0]||=(0,s.createElementVNode)(`span`,null,`网格配置`,-1)])]),default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,R,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(f.value,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:e.key,class:`config-item`},[(0,s.createElementVNode)(`span`,z,(0,s.toDisplayString)(e.label)+`:`,1),((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(e.component),(0,s.mergeProps)({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):(0,s.createCommentVNode)(`v-if`,!0),(0,s.createCommentVNode)(` 网格容器 `),(0,s.createVNode)(u,(0,s.mergeProps)(d.value,{class:`grid-container`}),{default:(0,s.withCtx)(()=>[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.formItems,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a,(0,s.mergeProps)({key:m(e,t)},{ref_for:!0},_(t),{class:`grid-item`}),{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,B,[((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(e)))])]),_:2},1040))),128))]),_:1},16),(0,s.createCommentVNode)(` 统计信息 `),l.value?((0,s.openBlock)(),(0,s.createBlock)(h,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:(0,s.withCtx)(()=>[(0,s.createVNode)(r.t,{name:`mdi:information-outline`,size:16}),n[1]||=(0,s.createTextVNode)(` 网格信息 `,-1)]),default:(0,s.withCtx)(()=>[(0,s.createTextVNode)(` `+(0,s.toDisplayString)(p.value),1)]),_:1})):(0,s.createCommentVNode)(`v-if`,!0)])}}});var V=i.t(re,[[`__scopeId`,`data-v-4758bc1e`]]);const ie=[`default`,`inline`,`grid`],ae={NFormItem:c.NFormItem,NInput:c.NInput,NInputNumber:c.NInputNumber,NSwitch:c.NSwitch,NSelect:c.NSelect,NCheckboxGroup:c.NCheckboxGroup,NCheckbox:c.NCheckbox,NRadioGroup:c.NRadioGroup,NRadio:c.NRadio,NButton:c.NButton,NSpace:c.NSpace,NTooltip:c.NTooltip,NSlider:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./slider.cjs`))),NRate:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./rate.cjs`))),NDatePicker:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./date-picker.cjs`))),NTimePicker:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./time-picker.cjs`))),NCascader:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./cascader.cjs`))),NColorPicker:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./color-picker.cjs`))),NUpload:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./upload.cjs`))),C_Editor:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./C_Editor.cjs`)).then(e=>e.C_Editor))},H={default:ne,inline:F,grid:V,card:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Card.cjs`))),tabs:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Tabs.cjs`))),steps:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Steps.cjs`))),dynamic:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Dynamic.cjs`))),custom:(0,s.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Custom.cjs`)))},U=(0,s.defineComponent)({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,o=i,l=u(),f=(0,s.useAttrs)(),p=(0,s.computed)(()=>d(a.config,l)),g=(0,s.computed)(()=>{let{size:e}=f;return m({...p.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),_=(0,s.computed)(()=>p.value.density!==void 0),v=(0,s.computed)(()=>e.t(g.value.density)),y=(0,s.computed)(()=>{if(!_.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=v.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:b}=t.t(()=>g.value.locale),x=(0,s.ref)(null),C=(0,s.ref)(null),w=(0,s.computed)(()=>ie.includes(g.value.layout)||C.value===g.value.layout),{formModel:T,formRules:E,visibleOptions:D,initialize:O,handleFieldChange:k,validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:te,validateCustomGroup:ne,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,handleSubmit:re,handleReset:V,isDirty:U,getChangedFields:W,isFieldDirty:G,markAsClean:oe,asyncOptionsCache:K,asyncLoadingMap:q,asyncErrorMap:se,reloadOptions:ce,setFormItemRef:le,isSubmitting:J,submit:Y}=S((0,s.computed)(()=>a.options),g,x,o,(0,s.computed)(()=>a.modelValue),w),X=(0,s.computed)(()=>T),ue=()=>F(),de=(0,s.computed)(()=>({form:x.value,model:X.value,validate:A,validateField:j,reset:L,setFields:I,getModel:ue,clearValidation:P,submit:Y,reloadOptions:ce,submitting:J.value})),fe=(0,s.getCurrentInstance)(),Z=()=>Object.keys(fe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:pe}=ee({formModel:T,visibleOptions:D,config:g,handleFieldChange:k,componentMap:ae,instanceSlots:fe?.slots,asyncOptionsCache:K,asyncLoadingMap:q,renderers:(0,s.computed)(()=>a.renderers),setFormItemRef:le,onError:(e,t)=>g.value.onError?.(e,{source:`render`,field:t})}),Q=(0,s.computed)(()=>H[g.value.layout]||H.default),me=(0,s.computed)(()=>{let e=g.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!_.value)return t;let{gap:n,rowGap:r}=v.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),he=(0,s.computed)(()=>h(g.value)),ge=(0,s.computed)(()=>{let{layout:e}=g.value;return{...e===`steps`?{beforeStepChange:Ce,validateStep:we,submitting:J.value,disabled:g.value.disabled||g.value.readonly}:e===`tabs`?{beforeTabChange:be,validateTab:xe}:{},controlSize:_.value?g.value.size:void 0,onVnodeMounted:()=>{C.value=e}}}),$=(e,...t)=>{let n=g.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>g.value.onError?.(e,{source:`callback`}))}catch(e){g.value.onError?.(e,{source:`callback`})}},_e=e=>{g.value.onFieldsChange?.(e)},ve=e=>{o(`validate-success`,e)},ye=e=>{o(`validate-error`,e)},be=async(e,t)=>{try{return await g.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},xe=async e=>{let t=await N(e);return t&&g.value.onTabValidate?.(e),t},Se=(e,t)=>{g.value.onStepChange?.(e,t)},Ce=async(e,t)=>{try{return await g.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},we=async(e,t)=>{try{return await M(t)?(g.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:te,validateCustomGroup:ne,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,formRef:x,formModel:T,initialize:O,layoutType:(0,s.computed)(()=>g.value.layout),shouldShowDefaultActions:he,isDirty:U,getChangedFields:W,isFieldDirty:G,markAsClean:oe,asyncLoadingMap:q,asyncErrorMap:se,reloadOptions:ce,isSubmitting:J,submit:Y}),(e,t)=>((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.NForm),(0,s.mergeProps)({ref_key:`formRef`,ref:x,class:[`c-form`,_.value&&`c-form--${g.value.density}`],style:y.value,model:(0,s.unref)(T),rules:(0,s.unref)(E),"validate-on-rule-change":!1,"label-placement":g.value.labelPlacement,"label-width":g.value.labelWidth,size:g.value.size,disabled:g.value.disabled,readonly:g.value.readonly},e.$attrs,{onSubmit:(0,s.withModifiers)((0,s.unref)(Y),[`prevent`])}),{default:(0,s.withCtx)(()=>[(0,s.createCommentVNode)(` 布局组件渲染 `),((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(Q.value),(0,s.mergeProps)({key:g.value.layout,"form-items":(0,s.unref)(pe),"layout-config":me.value,options:(0,s.unref)(D),"form-data":(0,s.unref)(T)},ge.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:Se,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:ve,onValidateError:ye,onFieldsChange:_e}),(0,s.createSlots)({"step-actions":(0,s.withCtx)(t=>[(0,s.renderSlot)(e.$slots,`step-actions`,(0,s.mergeProps)(t,{submit:(0,s.unref)(Y),submitting:(0,s.unref)(J)}),()=>[t.isLastStep&&g.value.showActions?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.NButton),{key:0,type:`primary`,size:g.value.size,loading:(0,s.unref)(J)||!w.value,disabled:!w.value||(0,s.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,s.unref)(Y)},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(g.value.submitText||(0,s.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):(0,s.createCommentVNode)(`v-if`,!0)],!0)]),_:2},[(0,s.renderList)(Z(),t=>({name:t,fn:(0,s.withCtx)(n=>[(0,s.renderSlot)(e.$slots,t,(0,s.normalizeProps)((0,s.guardReactiveProps)(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),(0,s.createCommentVNode)(` 表单操作按钮区域(只在特定布局中显示) `),he.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.NFormItem),{key:0,class:`c-form-actions`},{default:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`action`,(0,s.normalizeProps)((0,s.guardReactiveProps)(de.value)),()=>[(0,s.createVNode)((0,s.unref)(c.NSpace),{justify:`end`,size:_.value?v.value.gap:void 0,style:{width:`100%`}},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(c.NButton),{size:g.value.size,disabled:!w.value||(0,s.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,s.unref)(V)},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(g.value.resetText||(0,s.unref)(b)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),(0,s.renderSlot)(e.$slots,`action-extra`,(0,s.normalizeProps)((0,s.guardReactiveProps)(de.value)),void 0,!0),(0,s.createVNode)((0,s.unref)(c.NButton),{type:`primary`,size:g.value.size,loading:(0,s.unref)(J)||!w.value,disabled:!w.value||(0,s.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,s.unref)(re)},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(g.value.submitText||(0,s.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):(0,s.createCommentVNode)(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}});var W=i.t(U,[[`__scopeId`,`data-v-37ca39aa`]]);function G(e){return e}function oe(e){return e}function K(e){let t=(0,s.shallowRef)(a.t(e.initialValues)),n=(0,s.shallowRef)(null);return{model:t,formRef:n,bindings:(0,s.computed)(()=>({modelValue:t.value,options:(0,s.toValue)(e.options),config:(0,s.toValue)(e.config),"onUpdate:modelValue":e=>{t.value=a.t(e)}})),validate:async()=>{if(!n.value)throw Error(`C_Form is not mounted`);await n.value.validate()},submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=a.t(n.value.getModel())):t.value=a.t(e.initialValues)},getValues:()=>a.t(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=a.t(n.value.getModel())):t.value={...t.value,...a.t(e)}}}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return u}});
1
+ require(`./chunk.cjs`);const e=require(`./density.cjs`),t=require(`./useComponentLocale.cjs`),n=require(`./feedback.cjs`),r=require(`./C_Icon2.cjs`),i=require(`./export-helper.cjs`),a=require(`./useFormConfig.cjs`),o=require(`./data.cjs`),s=require(`./formValidation.cjs`);let c=require(`vue`),l=require(`naive-ui`);function u(e,t){if(Reflect.has(e,t)&&Object.prototype.hasOwnProperty.call(e,t))return(0,c.isReactive)(e);let n=e;for(let e of o.o(t)){if(!n||typeof n!=`object`||!(0,c.isReactive)(n))return!1;n=n[e]}return!0}function d(e,t=new Set){if(typeof e!=`object`||!e||t.has(e))return!0;t.add(e);let n=(0,c.isReactive)(e);return e instanceof Map?(e.forEach((e,r)=>{n=d(r,t)&&n,n=d(e,t)&&n}),n):e instanceof Set?(e.forEach(e=>{n=d(e,t)&&n}),n):(Object.values(e).forEach(e=>{n=d(e,t)&&n}),n)}function f(e,t){let n=(0,c.shallowRef)({}),r=new Map,i=(0,c.isReactive)(e);function a(){let i=new Set(t?(0,c.toValue)(t):[...Object.keys(n.value),...Object.keys(e)]);for(let e of r.keys())i.has(e)||r.delete(e);return i}let s=(0,c.computed)(()=>{for(let e of a())if(p(e))return!0;return!1});function l(){let e=[];for(let t of a())p(t)&&e.push(t);return e}function f(e){return m(e)}function p(t){if(!i)return m(t);let a=r.get(t);return a||(a=(0,c.computed)(()=>{let r=o.r(e,t),i=u(e,t);return{cacheable:d(r)&&i,dirty:!o.a(o.r(n.value,t),r)}}),r.set(t,a)),a.value.cacheable?a.value.dirty:m(t)}function m(t){let r=o.r(e,t);return d(r),!o.a(o.r(n.value,t),r)}function h(){n.value=o.t(e)}function g(){return o.t(n.value)}return{isDirty:s,getChangedFields:l,isFieldDirty:f,markAsClean:h,getCleanModel:g}}const p={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function m(e){return o.t((e.value===void 0?p[e.type]:e.value)??null)}function h(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function g(e,r,i,a,l,u){let d=(0,c.reactive)(o.t(l?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),p=(0,c.reactive)({}),g=new Map,_=(0,c.ref)({}),v=(0,c.ref)({}),y=(0,c.ref)({}),b=(0,c.ref)(!1),x=new Map,S=!1,C,w=new Map,T=new Map,E=new Map,D=new Map,O=new Set,k=!1,A=!1,j=0,M=n.t(()=>r.value.feedback),{t:ee}=t.t(()=>r.value.locale),{isDirty:N,getChangedFields:P,isFieldDirty:F,markAsClean:I,getCleanModel:te}=f(d,()=>e.value.map(e=>e.prop));function L(e,t,n){if(!S)try{r.value.onError?r.value.onError(e,{source:t,field:n}):M.error(e instanceof Error?e.message:String(e),e)}catch{}}function R(e,t){if(!(S||!t))try{M[e](t)}catch{}}let z=(0,c.computed)(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(d)}catch(t){return L(t,`callback`,e.prop),!1}}));function ne(){A=!0;let e=++j;(0,c.nextTick)(()=>{e===j&&(A=!1)})}function B(){return o.t(d)}function re(t){let n=t?o.t(t):{};return e.value.forEach(e=>{o.i(n,e.prop)||o.c(n,e.prop,m(e))}),n}function V(e){try{let t=s.n(e.rulesWhen?e.rulesWhen(d):e.rules);if(x.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(s.t(n,ee(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(d);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete p[e.prop];return}p[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete p[e.prop],x.set(e.prop,t),L(t,`callback`,e.prop)}}function ie(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&V(e)})}function ae(e){O.forEach(t=>{e.has(t)||(g.delete(t),delete p[t],x.delete(t),G(t),E.delete(t),r.value.preserveRemovedFields||o.n(d,t))})}function H(t=!1){try{h(e.value);let n=B(),r=new Set(e.value.map(e=>e.prop));ae(r),e.value.forEach(e=>{o.i(d,e.prop)||o.c(d,e.prop,m(e)),V(e),oe(e)}),O=r,Y(W(n),!1),t&&(0,c.nextTick)(I)}catch(e){throw L(e,`initialize`),e}}function U(e){let t=B();ne(),o.s(d,re(e)),Y(W(t),!1)}function W(t){return[...new Set([...Object.keys(t),...Object.keys(d),...e.value.map(e=>e.prop)])].filter(e=>!o.a(o.r(t,e),o.r(d,e)))}function G(e){T.get(e)?.abort(),T.delete(e),w.delete(e),D.delete(e),delete _.value[e],delete v.value[e],delete y.value[e]}function oe(e){if(E.get(e.prop)!==e.asyncOptions){if(G(e.prop),!e.asyncOptions){E.delete(e.prop);return}E.set(e.prop,e.asyncOptions),K(e,`initialize`)}}function K(e,t){if(S)return;let n=D.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};D.set(e.prop,r),(0,c.nextTick)(()=>{D.get(e.prop)===r&&(D.delete(e.prop),J(r.item,r.reason))})}function se(e,t,n){return S||n.signal.aborted||w.get(e)!==t||T.get(e)!==n}function q(e){return!S&&!!e.asyncOptions&&E.get(e.prop)===e.asyncOptions}async function J(e,t){if(!q(e))return;let{prop:n}=e,r=(w.get(n)??0)+1;w.set(n,r),T.get(n)?.abort();let i=new AbortController;T.set(n,i),v.value[n]=!0,delete y.value[n];try{let a=await e.asyncOptions(B(),{field:n,reason:t,signal:i.signal});if(se(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);_.value[n]=o.t([...a])}catch(e){if(se(n,r,i))return;y.value[n]=e,L(e,`async-options`,n)}finally{w.get(n)===r&&T.get(n)===i&&(v.value[n]=!1,T.delete(n))}}async function ce(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(D.delete(e.prop),J(e,`manual`))))}function le(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(d);t!==void 0&&!o.a(o.r(d,r.prop),t)&&(o.c(d,r.prop,o.t(t)),n.add(r.prop),e=!0)}catch(e){L(e,`callback`,r.prop)}if(!e)return[...n]}return L(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function ue(t){let n=t.map(e=>o.o(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=o.o(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function Y(e,t=!0){let n=[...new Set([...e,...le()])];ie(),ue(n).forEach(e=>{K(e,`dependency`)}),t&&r.value.validateOnChange&&(0,c.nextTick)(()=>{S||X(n).catch(()=>void 0)})}function de(e){Y([e])}function fe(e,t){t?g.set(e,t):g.delete(e)}async function pe(){if(u?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=z.value.find(e=>x.has(e.prop));if(e)throw x.get(e.prop);if(await i.value.validate(),S)throw Error(`[C_Form] 表单已卸载`);a(`validate-success`,B())}catch(e){throw S||a(`validate-error`,e),e}}async function X(e){if(u?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>x.has(e));if(n)throw x.get(n);let r=[],a=t.flatMap(e=>{let t=g.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function Z(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>g.get(e)?.restoreValidation())}async function Q(e){let t=z.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await X(t),!0}catch{return!1}}function $(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?Q(e=>e.layout?.step===t):Promise.resolve(!0)}function me(e){return Q(t=>t.layout?.tab===e)}function he(){return Q(e=>!!e.layout?.dynamic)}function ge(e){return Q(t=>t.layout?.group===e)}function _e(e){Object.entries(o.t(e)).forEach(([e,t])=>{o.c(d,e,t)}),Y(Object.keys(e))}function ve(){let e=B();o.s(d,te()),Z(),Y(W(e),!1),R(`info`,r.value.resetSuccessText)}async function ye(e,t,n=!1){o.c(d,e,o.t(t)),de(e),n&&await X(e)}function be(e){return o.t(o.r(d,e))}async function xe(e,t=!1){_e(e),t&&await X(Object.keys(e))}function Se(){return S||u?.value===!1||b.value||r.value.disabled||r.value.readonly}function Ce(e,t,n){return!S&&!e.signal.aborted&&u?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&o.a(d,t)}async function we(){if(Se())return!1;let e=B(),t=i.value,n=new AbortController;C=n,b.value=!0;try{if(await pe(),!Ce(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||L(e,`submit`),!1}return n.signal.aborted?!1:(a(`submit`,i),R(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{C===n&&(C=void 0),b.value=!1}}function Te(){H(!0);let e=l?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&U(e),(0,c.nextTick)(I)}return(0,c.watch)(e,()=>{let e=!k;e&&ne(),H(e),k=!0},{deep:!0,immediate:!0}),l&&(0,c.watch)(l,e=>{e!==void 0&&!o.a(d,e)&&U(e)},{deep:!0,immediate:!0}),(0,c.watch)(()=>[r.value.mode,r.value.initialValues],([e,t])=>{l?.value!==void 0||e!==`edit`||!t||(U(t),(0,c.nextTick)(I))},{deep:!0}),(0,c.watch)(d,e=>{A||a(`update:modelValue`,o.t(e))},{deep:!0,flush:`post`}),(0,c.onScopeDispose)(()=>{S=!0,C?.abort(),T.forEach(e=>e.abort()),T.clear(),D.clear(),g.clear()}),{formModel:d,formRules:p,visibleOptions:z,initialize:Te,handleFieldChange:de,setFormItemRef:fe,validate:pe,validateField:X,validateStep:$,validateTab:me,validateDynamicFields:he,validateCustomGroup:ge,clearValidation:Z,getModel:B,setFields:_e,resetFields:ve,setFieldValue:ye,getFieldValue:be,setFieldsValue:xe,submit:we,handleSubmit:we,handleReset:ve,isSubmitting:b,isDirty:N,getChangedFields:P,isFieldDirty:F,markAsClean:I,asyncOptionsCache:_,asyncLoadingMap:v,asyncErrorMap:y,reloadOptions:ce}}function _(e,t,n){let r=e.inputProps,i=r&&typeof r==`object`&&!Array.isArray(r)?r:{};return{...e,...n===`compact`&&e.showButton===void 0?{showButton:!1}:{},inputProps:{role:`spinbutton`,inputmode:e.precision===0?`numeric`:`decimal`,"aria-label":t.label,"aria-valuenow":Number.isFinite(e.value)?e.value:void 0,"aria-valuemin":e.min??void 0,"aria-valuemax":e.max??void 0,...i}}}const v=Symbol(`c-form-renderer-registry`);function y(e={}){let t=(0,c.shallowReactive)(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function b(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function x(e){return{input:t=>(0,c.h)(e.NInput,{...t}),textarea:t=>(0,c.h)(e.NInput,{...t,type:`textarea`}),inputNumber:(t,n,r)=>(0,c.h)(e.NInputNumber,_(t,n,r.density)),switch:t=>(0,c.h)(e.NSwitch,{...t}),slider:t=>(0,c.h)(e.NSlider,{...t}),rate:t=>(0,c.h)(e.NRate,{...t}),datePicker:t=>(0,c.h)(e.NDatePicker,{...t}),daterange:t=>(0,c.h)(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>(0,c.h)(e.NTimePicker,{...t}),cascader:t=>(0,c.h)(e.NCascader,{...t}),colorPicker:t=>(0,c.h)(e.NColorPicker,{...t}),select:(t,n)=>(0,c.h)(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>(0,c.h)(e.NCheckboxGroup,{...t},{default:()=>(0,c.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,c.h)(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>(0,c.h)(e.NRadioGroup,{...t},{default:()=>(0,c.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,c.h)(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],(0,c.h)(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{default:()=>i.slots?.uploadClick?.()||(0,c.h)(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],(0,c.h)(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const S=y();function C(e,t){return S.register(e,t)}function w(e,t){return S.unregister(e,t)}const T=new Set([`select`,`checkbox`,`radio`,`cascader`]),E=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),D=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function O(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:s,asyncOptionsCache:l,asyncLoadingMap:u,renderers:d,setFormItemRef:f,onError:p}=e,m=a,h=x(m),g=(0,c.getCurrentInstance)()?(0,c.inject)(v,void 0):void 0,_=e.registry??g??S,y=e=>d?.value?.[e]??_.get(e)??h[e],C=e=>{let n=b(e.disabled,r.value.disabled,t),a=b(e.readonly,r.value.readonly,t),s=D.has(e.type),c={...E.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:o.r(t,e.prop),"onUpdate:value":n=>{b(e.disabled,r.value.disabled,t)||b(e.readonly,r.value.readonly,t)||(o.c(t,e.prop,n),i(e.prop))},disabled:n||a&&!s,readonly:a||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function w(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(l.value,e.prop)?l.value[e.prop]??[]:t}function O(e){return T.has(e.type)?{...e,children:w(e)}:e}function k(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let A=e=>{try{let t=O(e),n=y(t.type);return n?n(k(t,(0,c.mergeProps)(t.attrs??{},C(t))),t,r.value,{slots:s,components:m}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function j(e){if(e.label)return e.help?(0,c.h)(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,(0,c.h)(m.NTooltip,{trigger:`hover`},{trigger:()=>(0,c.h)(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:A,formItems:(0,c.computed)(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=j(e);return(0,c.h)(m.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>A(e)})})),getBaseProps:C}}const k={class:`c-form-default`},A=(0,c.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,k,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(e.formItems,(e,t)=>((0,c.openBlock)(),(0,c.createBlock)((0,c.resolveDynamicComponent)(e),{key:e.key??t}))),128))]))}});var j=i.t(A,[[`__scopeId`,`data-v-4313de0c`]]);const M=(0,c.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=(0,c.computed)(()=>t.layoutConfig?.inline?.itemWidth??280),r=(0,c.computed)(()=>t.layoutConfig?.inline?.gap??16),i=(0,c.computed)(()=>t.layoutConfig?.inline?.rowGap??16),a=(0,c.computed)(()=>t.layoutConfig?.inline?.align??`center`),o=(0,c.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),s=(0,c.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),l=(0,c.computed)(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),u=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},d=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{class:`c-form-inline`,style:(0,c.normalizeStyle)(l.value)},[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(e.formItems,(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:u(e,t),class:`c-form-inline-item`,style:(0,c.normalizeStyle)(d(t))},[((0,c.openBlock)(),(0,c.createBlock)((0,c.resolveDynamicComponent)(e)))],4))),128))],4))}});var ee=i.t(M,[[`__scopeId`,`data-v-711f6c00`]]);function N(e,t){let n=(0,c.ref)(0),r,i=!1,a=!1,o=!1,s=e=>{i&&!o&&Number.isFinite(e)&&e>0&&n.value!==e&&(n.value=e)},l=()=>{i=!1,r?.disconnect(),r=void 0},u=()=>{let n=e.value;if(i||a||o||!n||!t()||(i=!0,s(n.clientWidth),typeof ResizeObserver>`u`))return;let c=new ResizeObserver(([e])=>{r===c&&s(e?.contentRect.width??0)});r=c,c.observe(n)};return(0,c.onMounted)(u),(0,c.onActivated)(()=>{a=!1,u()}),(0,c.onDeactivated)(()=>{a=!0,l()}),(0,c.onScopeDispose)(()=>{o=!0,l()}),(0,c.watch)(t,e=>e?u():l()),n}const P={class:`config-header`},F={class:`config-controls`},I={class:`config-label`},te={class:`item-wrapper`},L=(0,c.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=(0,c.reactive)({cols:24,gutter:16,responsive:!0}),a=(0,c.computed)(()=>n.layoutConfig?.grid||{}),o=(0,c.computed)(()=>a.value.showConfigPanel),s=(0,c.computed)(()=>a.value.showStats),u=(0,c.computed)(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),d=(0,c.ref)(null),f=N(d,()=>u.value.responsive),p=(0,c.computed)(()=>{let e=a.value.xGap??u.value.gutter;return u.value.responsive&&f.value>0?Math.min(e,f.value/Math.max(1,u.value.cols)):e}),m=(0,c.computed)(()=>({cols:u.value.cols,xGap:p.value,yGap:a.value.yGap??a.value.yGutter??u.value.gutter,responsive:u.value.responsive?`screen`:`self`})),h=(0,c.computed)(()=>[{key:`cols`,label:`列数`,component:l.NInputNumber,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:l.NInputNumber,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:l.NSwitch,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),g=(0,c.computed)(()=>`列数: ${u.value.cols} | 间距: ${u.value.gutter}px | 项目: ${n.formItems.length}个`),_=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,v=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},y=()=>{let{cols:e}=u.value;return e<=12?e:e<=24?12:8},b=e=>{let t=v(e,`span`),n=v(e,`offset`),r=v(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=u.value.cols?t:y(),offset:typeof n==`number`&&n>=0&&n<u.value.cols?n:0,suffix:!!r}};return(0,c.watch)(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...u.value}),getGridInfo:()=>({...u.value,itemCount:n.formItems.length})}),(t,n)=>{let i=l.NCard,a=l.NGridItem,u=l.NGrid,f=l.NAlert;return(0,c.openBlock)(),(0,c.createElementBlock)(`div`,{ref_key:`rootRef`,ref:d,class:`c-grid-layout`},[(0,c.createCommentVNode)(` 配置面板 `),o.value?((0,c.openBlock)(),(0,c.createBlock)(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`div`,P,[(0,c.createVNode)(r.t,{name:`mdi:view-grid`,size:18}),n[0]||=(0,c.createElementVNode)(`span`,null,`网格配置`,-1)])]),default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`div`,F,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(h.value,e=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:e.key,class:`config-item`},[(0,c.createElementVNode)(`span`,I,(0,c.toDisplayString)(e.label)+`:`,1),((0,c.openBlock)(),(0,c.createBlock)((0,c.resolveDynamicComponent)(e.component),(0,c.mergeProps)({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):(0,c.createCommentVNode)(`v-if`,!0),(0,c.createCommentVNode)(` 网格容器 `),(0,c.createVNode)(u,(0,c.mergeProps)(m.value,{class:`grid-container`}),{default:(0,c.withCtx)(()=>[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(e.formItems,(e,t)=>((0,c.openBlock)(),(0,c.createBlock)(a,(0,c.mergeProps)({key:_(e,t)},{ref_for:!0},b(t),{class:`grid-item`}),{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`div`,te,[((0,c.openBlock)(),(0,c.createBlock)((0,c.resolveDynamicComponent)(e)))])]),_:2},1040))),128))]),_:1},16),(0,c.createCommentVNode)(` 统计信息 `),s.value?((0,c.openBlock)(),(0,c.createBlock)(f,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:(0,c.withCtx)(()=>[(0,c.createVNode)(r.t,{name:`mdi:information-outline`,size:16}),n[1]||=(0,c.createTextVNode)(` 网格信息 `,-1)]),default:(0,c.withCtx)(()=>[(0,c.createTextVNode)(` `+(0,c.toDisplayString)(g.value),1)]),_:1})):(0,c.createCommentVNode)(`v-if`,!0)],512)}}});var R=i.t(L,[[`__scopeId`,`data-v-f8588934`]]);const z=[`default`,`inline`,`grid`],ne={NFormItem:l.NFormItem,NInput:l.NInput,NInputNumber:l.NInputNumber,NSwitch:l.NSwitch,NSelect:l.NSelect,NCheckboxGroup:l.NCheckboxGroup,NCheckbox:l.NCheckbox,NRadioGroup:l.NRadioGroup,NRadio:l.NRadio,NButton:l.NButton,NSpace:l.NSpace,NTooltip:l.NTooltip,NSlider:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./slider.cjs`))),NRate:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./rate.cjs`))),NDatePicker:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./date-picker.cjs`))),NTimePicker:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./time-picker.cjs`))),NCascader:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./cascader.cjs`))),NColorPicker:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./color-picker.cjs`))),NUpload:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./upload.cjs`))),C_Editor:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./C_Editor.cjs`)).then(e=>e.C_Editor))},B={default:j,inline:ee,grid:R,card:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Card.cjs`))),tabs:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Tabs.cjs`))),steps:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Steps.cjs`))),dynamic:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Dynamic.cjs`))),custom:(0,c.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Custom.cjs`)))},re=(0,c.defineComponent)({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let o=n,s=i,u=a.o(),d=(0,c.useAttrs)(),f=(0,c.computed)(()=>a.r(o.config,u)),p=(0,c.computed)(()=>{let{size:e}=d;return a.i({...f.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),m=(0,c.computed)(()=>f.value.density!==void 0),h=(0,c.computed)(()=>e.t(p.value.density)),_=(0,c.computed)(()=>{if(!m.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=h.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:v}=t.t(()=>p.value.locale),y=(0,c.ref)(null),b=(0,c.ref)(null),x=(0,c.computed)(()=>z.includes(p.value.layout)||b.value===p.value.layout),{formModel:S,formRules:C,visibleOptions:w,initialize:T,handleFieldChange:E,validate:D,validateField:k,validateStep:A,validateTab:j,validateDynamicFields:M,validateCustomGroup:ee,clearValidation:N,getModel:P,setFields:F,resetFields:I,setFieldValue:te,getFieldValue:L,setFieldsValue:R,handleSubmit:re,handleReset:V,isDirty:ie,getChangedFields:ae,isFieldDirty:H,markAsClean:U,asyncOptionsCache:W,asyncLoadingMap:G,asyncErrorMap:oe,reloadOptions:K,setFormItemRef:se,isSubmitting:q,submit:J}=g((0,c.computed)(()=>o.options),p,y,s,(0,c.computed)(()=>o.modelValue),x),ce=(0,c.computed)(()=>S),le=()=>P(),ue=(0,c.computed)(()=>({form:y.value,model:ce.value,validate:D,validateField:k,reset:I,setFields:F,getModel:le,clearValidation:N,submit:J,reloadOptions:K,submitting:q.value})),Y=(0,c.getCurrentInstance)(),de=()=>Object.keys(Y?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:fe}=O({formModel:S,visibleOptions:w,config:p,handleFieldChange:E,componentMap:ne,instanceSlots:Y?.slots,asyncOptionsCache:W,asyncLoadingMap:G,renderers:(0,c.computed)(()=>o.renderers),setFormItemRef:se,onError:(e,t)=>p.value.onError?.(e,{source:`render`,field:t})}),pe=(0,c.computed)(()=>B[p.value.layout]||B.default),X=(0,c.computed)(()=>{let e=p.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!m.value)return t;let{gap:n,rowGap:r}=h.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),Z=(0,c.computed)(()=>a.a(p.value)),Q=(0,c.computed)(()=>{let{layout:e}=p.value;return{...e===`steps`?{beforeStepChange:be,validateStep:xe,submitting:q.value,disabled:p.value.disabled||p.value.readonly}:e===`tabs`?{beforeTabChange:_e,validateTab:ve}:{},controlSize:m.value?p.value.size:void 0,onVnodeMounted:()=>{b.value=e}}}),$=(e,...t)=>{let n=p.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>p.value.onError?.(e,{source:`callback`}))}catch(e){p.value.onError?.(e,{source:`callback`})}},me=e=>{p.value.onFieldsChange?.(e)},he=e=>{s(`validate-success`,e)},ge=e=>{s(`validate-error`,e)},_e=async(e,t)=>{try{return await p.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return p.value.onError?.(e,{source:`callback`}),!1}},ve=async e=>{let t=await j(e);return t&&p.value.onTabValidate?.(e),t},ye=(e,t)=>{p.value.onStepChange?.(e,t)},be=async(e,t)=>{try{return await p.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return p.value.onError?.(e,{source:`callback`}),!1}},xe=async(e,t)=>{try{return await A(t)?(p.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:D,validateField:k,validateStep:A,validateTab:j,validateDynamicFields:M,validateCustomGroup:ee,clearValidation:N,getModel:P,setFields:F,resetFields:I,setFieldValue:te,getFieldValue:L,setFieldsValue:R,formRef:y,formModel:S,initialize:T,layoutType:(0,c.computed)(()=>p.value.layout),shouldShowDefaultActions:Z,isDirty:ie,getChangedFields:ae,isFieldDirty:H,markAsClean:U,asyncLoadingMap:G,asyncErrorMap:oe,reloadOptions:K,isSubmitting:q,submit:J}),(e,t)=>((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.NForm),(0,c.mergeProps)({ref_key:`formRef`,ref:y,class:[`c-form`,m.value&&`c-form--${p.value.density}`],style:_.value,model:(0,c.unref)(S),rules:(0,c.unref)(C),"validate-on-rule-change":!1,"label-placement":p.value.labelPlacement,"label-width":p.value.labelWidth,size:p.value.size,disabled:p.value.disabled,readonly:p.value.readonly},e.$attrs,{onSubmit:(0,c.withModifiers)((0,c.unref)(J),[`prevent`])}),{default:(0,c.withCtx)(()=>[(0,c.createCommentVNode)(` 布局组件渲染 `),((0,c.openBlock)(),(0,c.createBlock)((0,c.resolveDynamicComponent)(pe.value),(0,c.mergeProps)({key:p.value.layout,"form-items":(0,c.unref)(fe),"layout-config":X.value,options:(0,c.unref)(w),"form-data":(0,c.unref)(S)},Q.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:ye,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:he,onValidateError:ge,onFieldsChange:me}),(0,c.createSlots)({"step-actions":(0,c.withCtx)(t=>[(0,c.renderSlot)(e.$slots,`step-actions`,(0,c.mergeProps)(t,{submit:(0,c.unref)(J),submitting:(0,c.unref)(q)}),()=>[t.isLastStep&&p.value.showActions?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.NButton),{key:0,type:`primary`,size:p.value.size,loading:(0,c.unref)(q)||!x.value,disabled:!x.value||(0,c.unref)(q)||p.value.disabled||p.value.readonly,onClick:(0,c.unref)(J)},{default:(0,c.withCtx)(()=>[(0,c.createTextVNode)((0,c.toDisplayString)(p.value.submitText||(0,c.unref)(v)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):(0,c.createCommentVNode)(`v-if`,!0)],!0)]),_:2},[(0,c.renderList)(de(),t=>({name:t,fn:(0,c.withCtx)(n=>[(0,c.renderSlot)(e.$slots,t,(0,c.normalizeProps)((0,c.guardReactiveProps)(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),(0,c.createCommentVNode)(` 表单操作按钮区域(只在特定布局中显示) `),Z.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.NFormItem),{key:0,class:`c-form-actions`,"show-feedback":!1},{default:(0,c.withCtx)(()=>[(0,c.renderSlot)(e.$slots,`action`,(0,c.normalizeProps)((0,c.guardReactiveProps)(ue.value)),()=>[(0,c.createVNode)((0,c.unref)(l.NSpace),{justify:`end`,size:m.value?h.value.gap:void 0,style:{width:`100%`}},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(l.NButton),{size:p.value.size,disabled:!x.value||(0,c.unref)(q)||p.value.disabled||p.value.readonly,onClick:(0,c.unref)(V)},{default:(0,c.withCtx)(()=>[(0,c.createTextVNode)((0,c.toDisplayString)(p.value.resetText||(0,c.unref)(v)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),(0,c.renderSlot)(e.$slots,`action-extra`,(0,c.normalizeProps)((0,c.guardReactiveProps)(ue.value)),void 0,!0),(0,c.createVNode)((0,c.unref)(l.NButton),{type:`primary`,size:p.value.size,loading:(0,c.unref)(q)||!x.value,disabled:!x.value||(0,c.unref)(q)||p.value.disabled||p.value.readonly,onClick:(0,c.unref)(re)},{default:(0,c.withCtx)(()=>[(0,c.createTextVNode)((0,c.toDisplayString)(p.value.submitText||(0,c.unref)(v)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):(0,c.createCommentVNode)(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}});var V=i.t(re,[[`__scopeId`,`data-v-21fb0c93`]]);function ie(e){return e}function ae(e){return e}function H(e){let t=(0,c.shallowRef)(o.t(e.initialValues)),n=(0,c.shallowRef)(null);return{model:t,formRef:n,bindings:(0,c.computed)(()=>({modelValue:t.value,options:(0,c.toValue)(e.options),config:(0,c.toValue)(e.config),"onUpdate:modelValue":e=>{t.value=o.t(e)}})),validate:async()=>{if(!n.value)throw Error(`C_Form is not mounted`);await n.value.validate()},submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=o.t(n.value.getModel())):t.value=o.t(e.initialValues)},getValues:()=>o.t(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=o.t(n.value.getModel())):t.value={...t.value,...o.t(e)}}}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return g}});
package/dist/helpers.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./data.js";import{a as p,i as m}from"./formValidation.js";import{Fragment as h,computed as g,createBlock as _,createCommentVNode as v,createElementBlock as y,createElementVNode as b,createSlots as x,createTextVNode as S,createVNode as C,defineAsyncComponent as w,defineComponent as T,getCurrentInstance as E,guardReactiveProps as D,h as O,inject as k,isReactive as A,mergeProps as j,nextTick as M,normalizeProps as N,normalizeStyle as P,onScopeDispose as ee,openBlock as F,reactive as te,ref as I,renderList as L,renderSlot as R,resolveComponent as ne,resolveDynamicComponent as z,shallowReactive as re,shallowRef as B,toDisplayString as ie,toValue as V,unref as H,useAttrs as U,watch as W,withCtx as G,withModifiers as ae}from"vue";import{NAlert as oe,NButton as K,NCard as se,NCheckbox as ce,NCheckboxGroup as le,NForm as ue,NFormItem as de,NGrid as fe,NGridItem as pe,NInput as me,NInputNumber as he,NRadio as ge,NRadioGroup as _e,NSelect as ve,NSpace as ye,NSwitch as be,NTooltip as xe}from"naive-ui";const Se=Symbol(`c-form-global-config`);function q(){return E()?k(Se,{}):{}}function Ce(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const we={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},J=[`steps`,`custom`];function Y(t){return{...we,...t,size:t?.size??e(t?.density).size}}function Te(e){return!(e.showActions===!1||J.includes(e.layout))}function X(e,t){if(Reflect.has(e,t)&&Object.prototype.hasOwnProperty.call(e,t))return A(e);let n=e;for(let e of l(t)){if(!n||typeof n!=`object`||!A(n))return!1;n=n[e]}return!0}function Z(e,t=new Set){if(typeof e!=`object`||!e||t.has(e))return!0;t.add(e);let n=A(e);return e instanceof Map?(e.forEach((e,r)=>{n=Z(r,t)&&n,n=Z(e,t)&&n}),n):e instanceof Set?(e.forEach(e=>{n=Z(e,t)&&n}),n):(Object.values(e).forEach(e=>{n=Z(e,t)&&n}),n)}function Ee(e,t){let n=B({}),r=new Map,i=A(e);function o(){let i=new Set(t?V(t):[...Object.keys(n.value),...Object.keys(e)]);for(let e of r.keys())i.has(e)||r.delete(e);return i}let s=g(()=>{for(let e of o())if(d(e))return!0;return!1});function c(){let e=[];for(let t of o())d(t)&&e.push(t);return e}function l(e){return p(e)}function d(t){if(!i)return p(t);let o=r.get(t);return o||(o=g(()=>{let r=u(e,t),i=X(e,t);return{cacheable:Z(r)&&i,dirty:!a(u(n.value,t),r)}}),r.set(t,o)),o.value.cacheable?o.value.dirty:p(t)}function p(t){let r=u(e,t);return Z(r),!a(u(n.value,t),r)}function m(){n.value=f(e)}function h(){return f(n.value)}return{isDirty:s,getChangedFields:c,isFieldDirty:l,markAsClean:m,getCleanModel:h}}const De={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Oe(e){return f((e.value===void 0?De[e.type]:e.value)??null)}function ke(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function Ae(e,r,i,h,_,v){let y=te(f(_?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),b=te({}),x=new Map,S=I({}),C=I({}),w=I({}),T=I(!1),E=new Map,D=!1,O,k=new Map,A=new Map,j=new Map,N=new Map,P=new Set,F=!1,L=!1,R=0,ne=n(()=>r.value.feedback),{t:z}=t(()=>r.value.locale),{isDirty:re,getChangedFields:B,isFieldDirty:ie,markAsClean:V,getCleanModel:H}=Ee(y,()=>e.value.map(e=>e.prop));function U(e,t,n){if(!D)try{r.value.onError?r.value.onError(e,{source:t,field:n}):ne.error(e instanceof Error?e.message:String(e),e)}catch{}}function G(e,t){if(!(D||!t))try{ne[e](t)}catch{}}let ae=g(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(y)}catch(t){return U(t,`callback`,e.prop),!1}}));function oe(){L=!0;let e=++R;M(()=>{e===R&&(L=!1)})}function K(){return f(y)}function se(t){let n=t?f(t):{};return e.value.forEach(e=>{s(n,e.prop)||o(n,e.prop,Oe(e))}),n}function ce(e){try{let t=p(e.rulesWhen?e.rulesWhen(y):e.rules);if(E.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(m(n,z(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(y);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete b[e.prop];return}b[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete b[e.prop],E.set(e.prop,t),U(t,`callback`,e.prop)}}function le(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&ce(e)})}function ue(e){P.forEach(t=>{e.has(t)||(x.delete(t),delete b[t],E.delete(t),me(t),j.delete(t),r.value.preserveRemovedFields||c(y,t))})}function de(t=!1){try{ke(e.value);let n=K(),r=new Set(e.value.map(e=>e.prop));ue(r),e.value.forEach(e=>{s(y,e.prop)||o(y,e.prop,Oe(e)),ce(e),he(e)}),P=r,q(pe(n),!1),t&&M(V)}catch(e){throw U(e,`initialize`),e}}function fe(e){let t=K();oe(),d(y,se(e)),q(pe(t),!1)}function pe(t){return[...new Set([...Object.keys(t),...Object.keys(y),...e.value.map(e=>e.prop)])].filter(e=>!a(u(t,e),u(y,e)))}function me(e){A.get(e)?.abort(),A.delete(e),k.delete(e),N.delete(e),delete S.value[e],delete C.value[e],delete w.value[e]}function he(e){if(j.get(e.prop)!==e.asyncOptions){if(me(e.prop),!e.asyncOptions){j.delete(e.prop);return}j.set(e.prop,e.asyncOptions),ge(e,`initialize`)}}function ge(e,t){if(D)return;let n=N.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};N.set(e.prop,r),M(()=>{N.get(e.prop)===r&&(N.delete(e.prop),ye(r.item,r.reason))})}function _e(e,t,n){return D||n.signal.aborted||k.get(e)!==t||A.get(e)!==n}function ve(e){return!D&&!!e.asyncOptions&&j.get(e.prop)===e.asyncOptions}async function ye(e,t){if(!ve(e))return;let{prop:n}=e,r=(k.get(n)??0)+1;k.set(n,r),A.get(n)?.abort();let i=new AbortController;A.set(n,i),C.value[n]=!0,delete w.value[n];try{let a=await e.asyncOptions(K(),{field:n,reason:t,signal:i.signal});if(_e(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);S.value[n]=f([...a])}catch(e){if(_e(n,r,i))return;w.value[n]=e,U(e,`async-options`,n)}finally{k.get(n)===r&&A.get(n)===i&&(C.value[n]=!1,A.delete(n))}}async function be(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(N.delete(e.prop),ye(e,`manual`))))}function xe(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(y);t!==void 0&&!a(u(y,r.prop),t)&&(o(y,r.prop,f(t)),n.add(r.prop),e=!0)}catch(e){U(e,`callback`,r.prop)}if(!e)return[...n]}return U(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function Se(t){let n=t.map(e=>l(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=l(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function q(e,t=!0){let n=[...new Set([...e,...xe()])];le(),Se(n).forEach(e=>{ge(e,`dependency`)}),t&&r.value.validateOnChange&&M(()=>{D||Y(n).catch(()=>void 0)})}function Ce(e){q([e])}function we(e,t){t?x.set(e,t):x.delete(e)}async function J(){if(v?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=ae.value.find(e=>E.has(e.prop));if(e)throw E.get(e.prop);if(await i.value.validate(),D)throw Error(`[C_Form] 表单已卸载`);h(`validate-success`,K())}catch(e){throw D||h(`validate-error`,e),e}}async function Y(e){if(v?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>E.has(e));if(n)throw E.get(n);let r=[],a=t.flatMap(e=>{let t=x.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function Te(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>x.get(e)?.restoreValidation())}async function X(e){let t=ae.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Y(t),!0}catch{return!1}}function Z(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?X(e=>e.layout?.step===t):Promise.resolve(!0)}function De(e){return X(t=>t.layout?.tab===e)}function Ae(){return X(e=>!!e.layout?.dynamic)}function je(e){return X(t=>t.layout?.group===e)}function Me(e){Object.entries(f(e)).forEach(([e,t])=>{o(y,e,t)}),q(Object.keys(e))}function Q(){let e=K();d(y,H()),Te(),q(pe(e),!1),G(`info`,r.value.resetSuccessText)}async function Ne(e,t,n=!1){o(y,e,f(t)),Ce(e),n&&await Y(e)}function Pe(e){return f(u(y,e))}async function $(e,t=!1){Me(e),t&&await Y(Object.keys(e))}function Fe(){return D||v?.value===!1||T.value||r.value.disabled||r.value.readonly}function Ie(e,t,n){return!D&&!e.signal.aborted&&v?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a(y,t)}async function Le(){if(Fe())return!1;let e=K(),t=i.value,n=new AbortController;O=n,T.value=!0;try{if(await J(),!Ie(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||U(e,`submit`),!1}return n.signal.aborted?!1:(h(`submit`,i),G(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{O===n&&(O=void 0),T.value=!1}}function Re(){de(!0);let e=_?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&fe(e),M(V)}return W(e,()=>{let e=!F;e&&oe(),de(e),F=!0},{deep:!0,immediate:!0}),_&&W(_,e=>{e!==void 0&&!a(y,e)&&fe(e)},{deep:!0,immediate:!0}),W(()=>[r.value.mode,r.value.initialValues],([e,t])=>{_?.value!==void 0||e!==`edit`||!t||(fe(t),M(V))},{deep:!0}),W(y,e=>{L||h(`update:modelValue`,f(e))},{deep:!0,flush:`post`}),ee(()=>{D=!0,O?.abort(),A.forEach(e=>e.abort()),A.clear(),N.clear(),x.clear()}),{formModel:y,formRules:b,visibleOptions:ae,initialize:Re,handleFieldChange:Ce,setFormItemRef:we,validate:J,validateField:Y,validateStep:Z,validateTab:De,validateDynamicFields:Ae,validateCustomGroup:je,clearValidation:Te,getModel:K,setFields:Me,resetFields:Q,setFieldValue:Ne,getFieldValue:Pe,setFieldsValue:$,submit:Le,handleSubmit:Le,handleReset:Q,isSubmitting:T,isDirty:re,getChangedFields:B,isFieldDirty:ie,markAsClean:V,asyncOptionsCache:S,asyncLoadingMap:C,asyncErrorMap:w,reloadOptions:be}}const je=Symbol(`c-form-renderer-registry`);function Me(e={}){let t=re(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function Q(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function Ne(e){return{input:t=>O(e.NInput,{...t}),textarea:t=>O(e.NInput,{...t,type:`textarea`}),inputNumber:t=>O(e.NInputNumber,{...t}),switch:t=>O(e.NSwitch,{...t}),slider:t=>O(e.NSlider,{...t}),rate:t=>O(e.NRate,{...t}),datePicker:t=>O(e.NDatePicker,{...t}),daterange:t=>O(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>O(e.NTimePicker,{...t}),cascader:t=>O(e.NCascader,{...t}),colorPicker:t=>O(e.NColorPicker,{...t}),select:(t,n)=>O(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>O(e.NCheckboxGroup,{...t},{default:()=>O(e.NSpace,{},{default:()=>n.children?.map(t=>O(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>O(e.NRadioGroup,{...t},{default:()=>O(e.NSpace,{},{default:()=>n.children?.map(t=>O(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],O(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{default:()=>i.slots?.uploadClick?.()||O(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],O(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const Pe=Me();function $(e,t){return Pe.register(e,t)}function Fe(e,t){return Pe.unregister(e,t)}const Ie=new Set([`select`,`checkbox`,`radio`,`cascader`]),Le=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),Re=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function ze(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:s,asyncOptionsCache:c,asyncLoadingMap:l,renderers:d,setFormItemRef:f,onError:p}=e,m=a,h=Ne(m),_=E()?k(je,void 0):void 0,v=e.registry??_??Pe,y=e=>d?.value?.[e]??v.get(e)??h[e],b=e=>{let n=Q(e.disabled,r.value.disabled,t),a=Q(e.readonly,r.value.readonly,t),s=Re.has(e.type),c={...Le.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:u(t,e.prop),"onUpdate:value":n=>{Q(e.disabled,r.value.disabled,t)||Q(e.readonly,r.value.readonly,t)||(o(t,e.prop,n),i(e.prop))},disabled:n||a&&!s,readonly:a||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function x(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(c.value,e.prop)?c.value[e.prop]??[]:t}function S(e){return Ie.has(e.type)?{...e,children:x(e)}:e}function C(e,t){return e.type===`select`&&l.value[e.prop]&&(t.loading=!0),t}let w=e=>{try{let t=S(e),n=y(t.type);return n?n(C(t,j(t.attrs??{},b(t))),t,r.value,{slots:s,components:m}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function T(e){if(e.label)return e.help?O(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,O(m.NTooltip,{trigger:`hover`},{trigger:()=>O(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:w,formItems:g(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=T(e);return O(m.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>w(e)})})),getBaseProps:b}}const Be={class:`c-form-default`};var Ve=i(T({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(F(),y(`div`,Be,[(F(!0),y(h,null,L(e.formItems,(e,t)=>(F(),_(z(e),{key:e.key??t}))),128))]))}}),[[`__scopeId`,`data-v-4313de0c`]]),He=i(T({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=g(()=>t.layoutConfig?.inline?.itemWidth??280),r=g(()=>t.layoutConfig?.inline?.gap??16),i=g(()=>t.layoutConfig?.inline?.rowGap??16),a=g(()=>t.layoutConfig?.inline?.align??`center`),o=g(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),s=g(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=g(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(F(),y(`div`,{class:`c-form-inline`,style:P(c.value)},[(F(!0),y(h,null,L(e.formItems,(e,t)=>(F(),y(`div`,{key:l(e,t),class:`c-form-inline-item`,style:P(u(t))},[(F(),_(z(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-711f6c00`]]);const Ue={class:`c-grid-layout`},We={class:`config-header`},Ge={class:`config-controls`},Ke={class:`config-label`},qe={class:`item-wrapper`};var Je=i(T({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=te({cols:24,gutter:16,responsive:!0}),a=g(()=>n.layoutConfig?.grid||{}),o=g(()=>a.value.showConfigPanel),s=g(()=>a.value.showStats),c=g(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=g(()=>({cols:c.value.cols,xGap:a.value.xGap??c.value.gutter,yGap:a.value.yGap??a.value.yGutter??c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),u=g(()=>[{key:`cols`,label:`列数`,component:he,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:he,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:be,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),d=g(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${n.formItems.length}个`),f=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,p=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},m=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},x=e=>{let t=p(e,`span`),n=p(e,`offset`),r=p(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:m(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return W(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:n.formItems.length})}),(t,n)=>{let i=se,a=pe,c=fe,p=oe;return F(),y(`div`,Ue,[v(` 配置面板 `),o.value?(F(),_(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:G(()=>[b(`div`,We,[C(r,{name:`mdi:view-grid`,size:18}),n[0]||=b(`span`,null,`网格配置`,-1)])]),default:G(()=>[b(`div`,Ge,[(F(!0),y(h,null,L(u.value,e=>(F(),y(`div`,{key:e.key,class:`config-item`},[b(`span`,Ke,ie(e.label)+`:`,1),(F(),_(z(e.component),j({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):v(`v-if`,!0),v(` 网格容器 `),C(c,j(l.value,{class:`grid-container`}),{default:G(()=>[(F(!0),y(h,null,L(e.formItems,(e,t)=>(F(),_(a,j({key:f(e,t)},{ref_for:!0},x(t),{class:`grid-item`}),{default:G(()=>[b(`div`,qe,[(F(),_(z(e)))])]),_:2},1040))),128))]),_:1},16),v(` 统计信息 `),s.value?(F(),_(p,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:G(()=>[C(r,{name:`mdi:information-outline`,size:16}),n[1]||=S(` 网格信息 `,-1)]),default:G(()=>[S(` `+ie(d.value),1)]),_:1})):v(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-4758bc1e`]]);const Ye=[`default`,`inline`,`grid`],Xe={NFormItem:de,NInput:me,NInputNumber:he,NSwitch:be,NSelect:ve,NCheckboxGroup:le,NCheckbox:ce,NRadioGroup:_e,NRadio:ge,NButton:K,NSpace:ye,NTooltip:xe,NSlider:w(()=>import(`./slider.js`)),NRate:w(()=>import(`./rate.js`)),NDatePicker:w(()=>import(`./date-picker.js`)),NTimePicker:w(()=>import(`./time-picker.js`)),NCascader:w(()=>import(`./cascader.js`)),NColorPicker:w(()=>import(`./color-picker.js`)),NUpload:w(()=>import(`./upload.js`)),C_Editor:w(()=>import(`./C_Editor.js`).then(e=>e.C_Editor))},Ze={default:Ve,inline:He,grid:Je,card:w(()=>import(`./Card.js`)),tabs:w(()=>import(`./Tabs.js`)),steps:w(()=>import(`./Steps.js`)),dynamic:w(()=>import(`./Dynamic.js`)),custom:w(()=>import(`./Custom.js`))};var Qe=i(T({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,o=i,s=q(),c=U(),l=g(()=>Ce(a.config,s)),u=g(()=>{let{size:e}=c;return Y({...l.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),d=g(()=>l.value.density!==void 0),f=g(()=>e(u.value.density)),p=g(()=>{if(!d.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=f.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:m}=t(()=>u.value.locale),h=I(null),y=I(null),b=g(()=>Ye.includes(u.value.layout)||y.value===u.value.layout),{formModel:w,formRules:T,visibleOptions:O,initialize:k,handleFieldChange:A,validate:M,validateField:P,validateStep:ee,validateTab:te,validateDynamicFields:ne,validateCustomGroup:re,clearValidation:B,getModel:V,setFields:W,resetFields:oe,setFieldValue:se,getFieldValue:ce,setFieldsValue:le,handleSubmit:fe,handleReset:pe,isDirty:me,getChangedFields:he,isFieldDirty:ge,markAsClean:_e,asyncOptionsCache:ve,asyncLoadingMap:be,asyncErrorMap:xe,reloadOptions:Se,setFormItemRef:we,isSubmitting:J,submit:X}=Ae(g(()=>a.options),u,h,o,g(()=>a.modelValue),b),Z=g(()=>w),Ee=()=>V(),De=g(()=>({form:h.value,model:Z.value,validate:M,validateField:P,reset:oe,setFields:W,getModel:Ee,clearValidation:B,submit:X,reloadOptions:Se,submitting:J.value})),Oe=E(),ke=()=>Object.keys(Oe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:je}=ze({formModel:w,visibleOptions:O,config:u,handleFieldChange:A,componentMap:Xe,instanceSlots:Oe?.slots,asyncOptionsCache:ve,asyncLoadingMap:be,renderers:g(()=>a.renderers),setFormItemRef:we,onError:(e,t)=>u.value.onError?.(e,{source:`render`,field:t})}),Me=g(()=>Ze[u.value.layout]||Ze.default),Q=g(()=>{let e=u.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!d.value)return t;let{gap:n,rowGap:r}=f.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),Ne=g(()=>Te(u.value)),Pe=g(()=>{let{layout:e}=u.value;return{...e===`steps`?{beforeStepChange:He,validateStep:Ue,submitting:J.value,disabled:u.value.disabled||u.value.readonly}:e===`tabs`?{beforeTabChange:Re,validateTab:Be}:{},controlSize:d.value?u.value.size:void 0,onVnodeMounted:()=>{y.value=e}}}),$=(e,...t)=>{let n=u.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>u.value.onError?.(e,{source:`callback`}))}catch(e){u.value.onError?.(e,{source:`callback`})}},Fe=e=>{u.value.onFieldsChange?.(e)},Ie=e=>{o(`validate-success`,e)},Le=e=>{o(`validate-error`,e)},Re=async(e,t)=>{try{return await u.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},Be=async e=>{let t=await te(e);return t&&u.value.onTabValidate?.(e),t},Ve=(e,t)=>{u.value.onStepChange?.(e,t)},He=async(e,t)=>{try{return await u.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},Ue=async(e,t)=>{try{return await ee(t)?(u.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:M,validateField:P,validateStep:ee,validateTab:te,validateDynamicFields:ne,validateCustomGroup:re,clearValidation:B,getModel:V,setFields:W,resetFields:oe,setFieldValue:se,getFieldValue:ce,setFieldsValue:le,formRef:h,formModel:w,initialize:k,layoutType:g(()=>u.value.layout),shouldShowDefaultActions:Ne,isDirty:me,getChangedFields:he,isFieldDirty:ge,markAsClean:_e,asyncLoadingMap:be,asyncErrorMap:xe,reloadOptions:Se,isSubmitting:J,submit:X}),(e,t)=>(F(),_(H(ue),j({ref_key:`formRef`,ref:h,class:[`c-form`,d.value&&`c-form--${u.value.density}`],style:p.value,model:H(w),rules:H(T),"validate-on-rule-change":!1,"label-placement":u.value.labelPlacement,"label-width":u.value.labelWidth,size:u.value.size,disabled:u.value.disabled,readonly:u.value.readonly},e.$attrs,{onSubmit:ae(H(X),[`prevent`])}),{default:G(()=>[v(` 布局组件渲染 `),(F(),_(z(Me.value),j({key:u.value.layout,"form-items":H(je),"layout-config":Q.value,options:H(O),"form-data":H(w)},Pe.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:Ve,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:Ie,onValidateError:Le,onFieldsChange:Fe}),x({"step-actions":G(t=>[R(e.$slots,`step-actions`,j(t,{submit:H(X),submitting:H(J)}),()=>[t.isLastStep&&u.value.showActions?(F(),_(H(K),{key:0,type:`primary`,size:u.value.size,loading:H(J)||!b.value,disabled:!b.value||H(J)||u.value.disabled||u.value.readonly,onClick:H(X)},{default:G(()=>[S(ie(u.value.submitText||H(m)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):v(`v-if`,!0)],!0)]),_:2},[L(ke(),t=>({name:t,fn:G(n=>[R(e.$slots,t,N(D(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),v(` 表单操作按钮区域(只在特定布局中显示) `),Ne.value?(F(),_(H(de),{key:0,class:`c-form-actions`},{default:G(()=>[R(e.$slots,`action`,N(D(De.value)),()=>[C(H(ye),{justify:`end`,size:d.value?f.value.gap:void 0,style:{width:`100%`}},{default:G(()=>[C(H(K),{size:u.value.size,disabled:!b.value||H(J)||u.value.disabled||u.value.readonly,onClick:H(pe)},{default:G(()=>[S(ie(u.value.resetText||H(m)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),R(e.$slots,`action-extra`,N(D(De.value)),void 0,!0),C(H(K),{type:`primary`,size:u.value.size,loading:H(J)||!b.value,disabled:!b.value||H(J)||u.value.disabled||u.value.readonly,onClick:H(fe)},{default:G(()=>[S(ie(u.value.submitText||H(m)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):v(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}}),[[`__scopeId`,`data-v-37ca39aa`]]);function $e(e){return e}function et(e){return e}function tt(e){let t=B(f(e.initialValues)),n=B(null);return{model:t,formRef:n,bindings:g(()=>({modelValue:t.value,options:V(e.options),config:V(e.config),"onUpdate:modelValue":e=>{t.value=f(e)}})),validate:async()=>{if(!n.value)throw Error(`C_Form is not mounted`);await n.value.validate()},submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=f(n.value.getModel())):t.value=f(e.initialValues)},getValues:()=>f(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=f(n.value.getModel())):t.value={...t.value,...f(e)}}}}export{Te as _,je as a,Fe as c,Ee as d,we as f,Y as g,Ce as h,Qe as i,ze as l,J as m,$e as n,Me as o,Se as p,tt as r,$ as s,et as t,Ae as u,q as v};
1
+ import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{a,i as o,o as s,r as c}from"./useFormConfig.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./data.js";import{a as ee,i as te}from"./formValidation.js";import{Fragment as _,computed as v,createBlock as y,createCommentVNode as b,createElementBlock as x,createElementVNode as S,createSlots as C,createTextVNode as w,createVNode as T,defineAsyncComponent as E,defineComponent as D,getCurrentInstance as O,guardReactiveProps as k,h as A,inject as ne,isReactive as j,mergeProps as M,nextTick as N,normalizeProps as re,normalizeStyle as P,onActivated as ie,onDeactivated as ae,onMounted as oe,onScopeDispose as se,openBlock as F,reactive as ce,ref as I,renderList as L,renderSlot as le,resolveComponent as R,resolveDynamicComponent as z,shallowReactive as B,shallowRef as V,toDisplayString as H,toValue as ue,unref as U,useAttrs as de,watch as W,withCtx as G,withModifiers as fe}from"vue";import{NAlert as pe,NButton as K,NCard as me,NCheckbox as he,NCheckboxGroup as ge,NForm as _e,NFormItem as ve,NGrid as ye,NGridItem as be,NInput as xe,NInputNumber as Se,NRadio as q,NRadioGroup as Ce,NSelect as we,NSpace as Te,NSwitch as J,NTooltip as Y}from"naive-ui";function X(e,t){if(Reflect.has(e,t)&&Object.prototype.hasOwnProperty.call(e,t))return j(e);let n=e;for(let e of p(t)){if(!n||typeof n!=`object`||!j(n))return!1;n=n[e]}return!0}function Z(e,t=new Set){if(typeof e!=`object`||!e||t.has(e))return!0;t.add(e);let n=j(e);return e instanceof Map?(e.forEach((e,r)=>{n=Z(r,t)&&n,n=Z(e,t)&&n}),n):e instanceof Set?(e.forEach(e=>{n=Z(e,t)&&n}),n):(Object.values(e).forEach(e=>{n=Z(e,t)&&n}),n)}function Ee(e,t){let n=V({}),r=new Map,i=j(e);function a(){let i=new Set(t?ue(t):[...Object.keys(n.value),...Object.keys(e)]);for(let e of r.keys())i.has(e)||r.delete(e);return i}let o=v(()=>{for(let e of a())if(u(e))return!0;return!1});function s(){let e=[];for(let t of a())u(t)&&e.push(t);return e}function c(e){return d(e)}function u(t){if(!i)return d(t);let a=r.get(t);return a||(a=v(()=>{let r=m(e,t),i=X(e,t);return{cacheable:Z(r)&&i,dirty:!l(m(n.value,t),r)}}),r.set(t,a)),a.value.cacheable?a.value.dirty:d(t)}function d(t){let r=m(e,t);return Z(r),!l(m(n.value,t),r)}function f(){n.value=g(e)}function p(){return g(n.value)}return{isDirty:o,getChangedFields:s,isFieldDirty:c,markAsClean:f,getCleanModel:p}}const De={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Oe(e){return g((e.value===void 0?De[e.type]:e.value)??null)}function ke(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function Ae(e,r,i,a,o,s){let c=ce(g(o?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),_=ce({}),y=new Map,b=I({}),x=I({}),S=I({}),C=I(!1),w=new Map,T=!1,E,D=new Map,O=new Map,k=new Map,A=new Map,ne=new Set,j=!1,M=!1,re=0,P=n(()=>r.value.feedback),{t:ie}=t(()=>r.value.locale),{isDirty:ae,getChangedFields:oe,isFieldDirty:F,markAsClean:L,getCleanModel:le}=Ee(c,()=>e.value.map(e=>e.prop));function R(e,t,n){if(!T)try{r.value.onError?r.value.onError(e,{source:t,field:n}):P.error(e instanceof Error?e.message:String(e),e)}catch{}}function z(e,t){if(!(T||!t))try{P[e](t)}catch{}}let B=v(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(c)}catch(t){return R(t,`callback`,e.prop),!1}}));function V(){M=!0;let e=++re;N(()=>{e===re&&(M=!1)})}function H(){return g(c)}function ue(t){let n=t?g(t):{};return e.value.forEach(e=>{d(n,e.prop)||u(n,e.prop,Oe(e))}),n}function U(e){try{let t=ee(e.rulesWhen?e.rulesWhen(c):e.rules);if(w.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(te(n,ie(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(c);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete _[e.prop];return}_[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete _[e.prop],w.set(e.prop,t),R(t,`callback`,e.prop)}}function de(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&U(e)})}function G(e){ne.forEach(t=>{e.has(t)||(y.delete(t),delete _[t],w.delete(t),me(t),k.delete(t),r.value.preserveRemovedFields||f(c,t))})}function fe(t=!1){try{ke(e.value);let n=H(),r=new Set(e.value.map(e=>e.prop));G(r),e.value.forEach(e=>{d(c,e.prop)||u(c,e.prop,Oe(e)),U(e),he(e)}),ne=r,q(K(n),!1),t&&N(L)}catch(e){throw R(e,`initialize`),e}}function pe(e){let t=H();V(),h(c,ue(e)),q(K(t),!1)}function K(t){return[...new Set([...Object.keys(t),...Object.keys(c),...e.value.map(e=>e.prop)])].filter(e=>!l(m(t,e),m(c,e)))}function me(e){O.get(e)?.abort(),O.delete(e),D.delete(e),A.delete(e),delete b.value[e],delete x.value[e],delete S.value[e]}function he(e){if(k.get(e.prop)!==e.asyncOptions){if(me(e.prop),!e.asyncOptions){k.delete(e.prop);return}k.set(e.prop,e.asyncOptions),ge(e,`initialize`)}}function ge(e,t){if(T)return;let n=A.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};A.set(e.prop,r),N(()=>{A.get(e.prop)===r&&(A.delete(e.prop),ye(r.item,r.reason))})}function _e(e,t,n){return T||n.signal.aborted||D.get(e)!==t||O.get(e)!==n}function ve(e){return!T&&!!e.asyncOptions&&k.get(e.prop)===e.asyncOptions}async function ye(e,t){if(!ve(e))return;let{prop:n}=e,r=(D.get(n)??0)+1;D.set(n,r),O.get(n)?.abort();let i=new AbortController;O.set(n,i),x.value[n]=!0,delete S.value[n];try{let a=await e.asyncOptions(H(),{field:n,reason:t,signal:i.signal});if(_e(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);b.value[n]=g([...a])}catch(e){if(_e(n,r,i))return;S.value[n]=e,R(e,`async-options`,n)}finally{D.get(n)===r&&O.get(n)===i&&(x.value[n]=!1,O.delete(n))}}async function be(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(A.delete(e.prop),ye(e,`manual`))))}function xe(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(c);t!==void 0&&!l(m(c,r.prop),t)&&(u(c,r.prop,g(t)),n.add(r.prop),e=!0)}catch(e){R(e,`callback`,r.prop)}if(!e)return[...n]}return R(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function Se(t){let n=t.map(e=>p(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=p(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function q(e,t=!0){let n=[...new Set([...e,...xe()])];de(),Se(n).forEach(e=>{ge(e,`dependency`)}),t&&r.value.validateOnChange&&N(()=>{T||J(n).catch(()=>void 0)})}function Ce(e){q([e])}function we(e,t){t?y.set(e,t):y.delete(e)}async function Te(){if(s?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=B.value.find(e=>w.has(e.prop));if(e)throw w.get(e.prop);if(await i.value.validate(),T)throw Error(`[C_Form] 表单已卸载`);a(`validate-success`,H())}catch(e){throw T||a(`validate-error`,e),e}}async function J(e){if(s?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>w.has(e));if(n)throw w.get(n);let r=[],a=t.flatMap(e=>{let t=y.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function Y(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>y.get(e)?.restoreValidation())}async function X(e){let t=B.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await J(t),!0}catch{return!1}}function Z(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?X(e=>e.layout?.step===t):Promise.resolve(!0)}function De(e){return X(t=>t.layout?.tab===e)}function Ae(){return X(e=>!!e.layout?.dynamic)}function je(e){return X(t=>t.layout?.group===e)}function Me(e){Object.entries(g(e)).forEach(([e,t])=>{u(c,e,t)}),q(Object.keys(e))}function Ne(){let e=H();h(c,le()),Y(),q(K(e),!1),z(`info`,r.value.resetSuccessText)}async function Q(e,t,n=!1){u(c,e,g(t)),Ce(e),n&&await J(e)}function Pe(e){return g(m(c,e))}async function $(e,t=!1){Me(e),t&&await J(Object.keys(e))}function Fe(){return T||s?.value===!1||C.value||r.value.disabled||r.value.readonly}function Ie(e,t,n){return!T&&!e.signal.aborted&&s?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&l(c,t)}async function Le(){if(Fe())return!1;let e=H(),t=i.value,n=new AbortController;E=n,C.value=!0;try{if(await Te(),!Ie(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||R(e,`submit`),!1}return n.signal.aborted?!1:(a(`submit`,i),z(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{E===n&&(E=void 0),C.value=!1}}function Re(){fe(!0);let e=o?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&pe(e),N(L)}return W(e,()=>{let e=!j;e&&V(),fe(e),j=!0},{deep:!0,immediate:!0}),o&&W(o,e=>{e!==void 0&&!l(c,e)&&pe(e)},{deep:!0,immediate:!0}),W(()=>[r.value.mode,r.value.initialValues],([e,t])=>{o?.value!==void 0||e!==`edit`||!t||(pe(t),N(L))},{deep:!0}),W(c,e=>{M||a(`update:modelValue`,g(e))},{deep:!0,flush:`post`}),se(()=>{T=!0,E?.abort(),O.forEach(e=>e.abort()),O.clear(),A.clear(),y.clear()}),{formModel:c,formRules:_,visibleOptions:B,initialize:Re,handleFieldChange:Ce,setFormItemRef:we,validate:Te,validateField:J,validateStep:Z,validateTab:De,validateDynamicFields:Ae,validateCustomGroup:je,clearValidation:Y,getModel:H,setFields:Me,resetFields:Ne,setFieldValue:Q,getFieldValue:Pe,setFieldsValue:$,submit:Le,handleSubmit:Le,handleReset:Ne,isSubmitting:C,isDirty:ae,getChangedFields:oe,isFieldDirty:F,markAsClean:L,asyncOptionsCache:b,asyncLoadingMap:x,asyncErrorMap:S,reloadOptions:be}}function je(e,t,n){let r=e.inputProps,i=r&&typeof r==`object`&&!Array.isArray(r)?r:{};return{...e,...n===`compact`&&e.showButton===void 0?{showButton:!1}:{},inputProps:{role:`spinbutton`,inputmode:e.precision===0?`numeric`:`decimal`,"aria-label":t.label,"aria-valuenow":Number.isFinite(e.value)?e.value:void 0,"aria-valuemin":e.min??void 0,"aria-valuemax":e.max??void 0,...i}}}const Me=Symbol(`c-form-renderer-registry`);function Ne(e={}){let t=B(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function Q(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function Pe(e){return{input:t=>A(e.NInput,{...t}),textarea:t=>A(e.NInput,{...t,type:`textarea`}),inputNumber:(t,n,r)=>A(e.NInputNumber,je(t,n,r.density)),switch:t=>A(e.NSwitch,{...t}),slider:t=>A(e.NSlider,{...t}),rate:t=>A(e.NRate,{...t}),datePicker:t=>A(e.NDatePicker,{...t}),daterange:t=>A(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>A(e.NTimePicker,{...t}),cascader:t=>A(e.NCascader,{...t}),colorPicker:t=>A(e.NColorPicker,{...t}),select:(t,n)=>A(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>A(e.NCheckboxGroup,{...t},{default:()=>A(e.NSpace,{},{default:()=>n.children?.map(t=>A(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>A(e.NRadioGroup,{...t},{default:()=>A(e.NSpace,{},{default:()=>n.children?.map(t=>A(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],A(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{default:()=>i.slots?.uploadClick?.()||A(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],A(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const $=Ne();function Fe(e,t){return $.register(e,t)}function Ie(e,t){return $.unregister(e,t)}const Le=new Set([`select`,`checkbox`,`radio`,`cascader`]),Re=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),ze=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function Be(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:o,asyncOptionsCache:s,asyncLoadingMap:c,renderers:l,setFormItemRef:d,onError:f}=e,p=a,h=Pe(p),g=O()?ne(Me,void 0):void 0,ee=e.registry??g??$,te=e=>l?.value?.[e]??ee.get(e)??h[e],_=e=>{let n=Q(e.disabled,r.value.disabled,t),a=Q(e.readonly,r.value.readonly,t),o=ze.has(e.type),s={...Re.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:m(t,e.prop),"onUpdate:value":n=>{Q(e.disabled,r.value.disabled,t)||Q(e.readonly,r.value.readonly,t)||(u(t,e.prop,n),i(e.prop))},disabled:n||a&&!o,readonly:a||e.type===`rate`&&n};return e.type===`textarea`&&(s.type=`textarea`),e.placeholder&&(s.placeholder=e.placeholder),s};function y(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(s.value,e.prop)?s.value[e.prop]??[]:t}function b(e){return Le.has(e.type)?{...e,children:y(e)}:e}function x(e,t){return e.type===`select`&&c.value[e.prop]&&(t.loading=!0),t}let S=e=>{try{let t=b(e),n=te(t.type);return n?n(x(t,M(t.attrs??{},_(t))),t,r.value,{slots:o,components:p}):(f?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return f?.(t,e.prop),null}};function C(e){if(e.label)return e.help?A(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,A(p.NTooltip,{trigger:`hover`},{trigger:()=>A(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:S,formItems:v(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=C(e);return A(p.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>d?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>S(e)})})),getBaseProps:_}}const Ve={class:`c-form-default`};var He=i(D({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(F(),x(`div`,Ve,[(F(!0),x(_,null,L(e.formItems,(e,t)=>(F(),y(z(e),{key:e.key??t}))),128))]))}}),[[`__scopeId`,`data-v-4313de0c`]]),Ue=i(D({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=v(()=>t.layoutConfig?.inline?.itemWidth??280),r=v(()=>t.layoutConfig?.inline?.gap??16),i=v(()=>t.layoutConfig?.inline?.rowGap??16),a=v(()=>t.layoutConfig?.inline?.align??`center`),o=v(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),s=v(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=v(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(F(),x(`div`,{class:`c-form-inline`,style:P(c.value)},[(F(!0),x(_,null,L(e.formItems,(e,t)=>(F(),x(`div`,{key:l(e,t),class:`c-form-inline-item`,style:P(u(t))},[(F(),y(z(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-711f6c00`]]);function We(e,t){let n=I(0),r,i=!1,a=!1,o=!1,s=e=>{i&&!o&&Number.isFinite(e)&&e>0&&n.value!==e&&(n.value=e)},c=()=>{i=!1,r?.disconnect(),r=void 0},l=()=>{let n=e.value;if(i||a||o||!n||!t()||(i=!0,s(n.clientWidth),typeof ResizeObserver>`u`))return;let c=new ResizeObserver(([e])=>{r===c&&s(e?.contentRect.width??0)});r=c,c.observe(n)};return oe(l),ie(()=>{a=!1,l()}),ae(()=>{a=!0,c()}),se(()=>{o=!0,c()}),W(t,e=>e?l():c()),n}const Ge={class:`config-header`},Ke={class:`config-controls`},qe={class:`config-label`},Je={class:`item-wrapper`};var Ye=i(D({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=ce({cols:24,gutter:16,responsive:!0}),a=v(()=>n.layoutConfig?.grid||{}),o=v(()=>a.value.showConfigPanel),s=v(()=>a.value.showStats),c=v(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=I(null),u=We(l,()=>c.value.responsive),d=v(()=>{let e=a.value.xGap??c.value.gutter;return c.value.responsive&&u.value>0?Math.min(e,u.value/Math.max(1,c.value.cols)):e}),f=v(()=>({cols:c.value.cols,xGap:d.value,yGap:a.value.yGap??a.value.yGutter??c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),p=v(()=>[{key:`cols`,label:`列数`,component:Se,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:Se,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:J,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),m=v(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${n.formItems.length}个`),h=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,g=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},ee=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},te=e=>{let t=g(e,`span`),n=g(e,`offset`),r=g(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:ee(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return W(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:n.formItems.length})}),(t,n)=>{let i=me,a=be,c=ye,u=pe;return F(),x(`div`,{ref_key:`rootRef`,ref:l,class:`c-grid-layout`},[b(` 配置面板 `),o.value?(F(),y(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:G(()=>[S(`div`,Ge,[T(r,{name:`mdi:view-grid`,size:18}),n[0]||=S(`span`,null,`网格配置`,-1)])]),default:G(()=>[S(`div`,Ke,[(F(!0),x(_,null,L(p.value,e=>(F(),x(`div`,{key:e.key,class:`config-item`},[S(`span`,qe,H(e.label)+`:`,1),(F(),y(z(e.component),M({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):b(`v-if`,!0),b(` 网格容器 `),T(c,M(f.value,{class:`grid-container`}),{default:G(()=>[(F(!0),x(_,null,L(e.formItems,(e,t)=>(F(),y(a,M({key:h(e,t)},{ref_for:!0},te(t),{class:`grid-item`}),{default:G(()=>[S(`div`,Je,[(F(),y(z(e)))])]),_:2},1040))),128))]),_:1},16),b(` 统计信息 `),s.value?(F(),y(u,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:G(()=>[T(r,{name:`mdi:information-outline`,size:16}),n[1]||=w(` 网格信息 `,-1)]),default:G(()=>[w(` `+H(m.value),1)]),_:1})):b(`v-if`,!0)],512)}}}),[[`__scopeId`,`data-v-f8588934`]]);const Xe=[`default`,`inline`,`grid`],Ze={NFormItem:ve,NInput:xe,NInputNumber:Se,NSwitch:J,NSelect:we,NCheckboxGroup:ge,NCheckbox:he,NRadioGroup:Ce,NRadio:q,NButton:K,NSpace:Te,NTooltip:Y,NSlider:E(()=>import(`./slider.js`)),NRate:E(()=>import(`./rate.js`)),NDatePicker:E(()=>import(`./date-picker.js`)),NTimePicker:E(()=>import(`./time-picker.js`)),NCascader:E(()=>import(`./cascader.js`)),NColorPicker:E(()=>import(`./color-picker.js`)),NUpload:E(()=>import(`./upload.js`)),C_Editor:E(()=>import(`./C_Editor.js`).then(e=>e.C_Editor))},Qe={default:He,inline:Ue,grid:Ye,card:E(()=>import(`./Card.js`)),tabs:E(()=>import(`./Tabs.js`)),steps:E(()=>import(`./Steps.js`)),dynamic:E(()=>import(`./Dynamic.js`)),custom:E(()=>import(`./Custom.js`))};var $e=i(D({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let l=n,u=i,d=s(),f=de(),p=v(()=>c(l.config,d)),m=v(()=>{let{size:e}=f;return o({...p.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),h=v(()=>p.value.density!==void 0),g=v(()=>e(m.value.density)),ee=v(()=>{if(!h.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=g.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:te}=t(()=>m.value.locale),_=I(null),x=I(null),S=v(()=>Xe.includes(m.value.layout)||x.value===m.value.layout),{formModel:E,formRules:D,visibleOptions:A,initialize:ne,handleFieldChange:j,validate:N,validateField:P,validateStep:ie,validateTab:ae,validateDynamicFields:oe,validateCustomGroup:se,clearValidation:ce,getModel:R,setFields:B,resetFields:V,setFieldValue:ue,getFieldValue:W,setFieldsValue:pe,handleSubmit:me,handleReset:he,isDirty:ge,getChangedFields:ye,isFieldDirty:be,markAsClean:xe,asyncOptionsCache:Se,asyncLoadingMap:q,asyncErrorMap:Ce,reloadOptions:we,setFormItemRef:J,isSubmitting:Y,submit:X}=Ae(v(()=>l.options),m,_,u,v(()=>l.modelValue),S),Z=v(()=>E),Ee=()=>R(),De=v(()=>({form:_.value,model:Z.value,validate:N,validateField:P,reset:V,setFields:B,getModel:Ee,clearValidation:ce,submit:X,reloadOptions:we,submitting:Y.value})),Oe=O(),ke=()=>Object.keys(Oe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:je}=Be({formModel:E,visibleOptions:A,config:m,handleFieldChange:j,componentMap:Ze,instanceSlots:Oe?.slots,asyncOptionsCache:Se,asyncLoadingMap:q,renderers:v(()=>l.renderers),setFormItemRef:J,onError:(e,t)=>m.value.onError?.(e,{source:`render`,field:t})}),Me=v(()=>Qe[m.value.layout]||Qe.default),Ne=v(()=>{let e=m.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!h.value)return t;let{gap:n,rowGap:r}=g.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),Q=v(()=>a(m.value)),Pe=v(()=>{let{layout:e}=m.value;return{...e===`steps`?{beforeStepChange:He,validateStep:Ue,submitting:Y.value,disabled:m.value.disabled||m.value.readonly}:e===`tabs`?{beforeTabChange:Re,validateTab:ze}:{},controlSize:h.value?m.value.size:void 0,onVnodeMounted:()=>{x.value=e}}}),$=(e,...t)=>{let n=m.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>m.value.onError?.(e,{source:`callback`}))}catch(e){m.value.onError?.(e,{source:`callback`})}},Fe=e=>{m.value.onFieldsChange?.(e)},Ie=e=>{u(`validate-success`,e)},Le=e=>{u(`validate-error`,e)},Re=async(e,t)=>{try{return await m.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return m.value.onError?.(e,{source:`callback`}),!1}},ze=async e=>{let t=await ae(e);return t&&m.value.onTabValidate?.(e),t},Ve=(e,t)=>{m.value.onStepChange?.(e,t)},He=async(e,t)=>{try{return await m.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return m.value.onError?.(e,{source:`callback`}),!1}},Ue=async(e,t)=>{try{return await ie(t)?(m.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:N,validateField:P,validateStep:ie,validateTab:ae,validateDynamicFields:oe,validateCustomGroup:se,clearValidation:ce,getModel:R,setFields:B,resetFields:V,setFieldValue:ue,getFieldValue:W,setFieldsValue:pe,formRef:_,formModel:E,initialize:ne,layoutType:v(()=>m.value.layout),shouldShowDefaultActions:Q,isDirty:ge,getChangedFields:ye,isFieldDirty:be,markAsClean:xe,asyncLoadingMap:q,asyncErrorMap:Ce,reloadOptions:we,isSubmitting:Y,submit:X}),(e,t)=>(F(),y(U(_e),M({ref_key:`formRef`,ref:_,class:[`c-form`,h.value&&`c-form--${m.value.density}`],style:ee.value,model:U(E),rules:U(D),"validate-on-rule-change":!1,"label-placement":m.value.labelPlacement,"label-width":m.value.labelWidth,size:m.value.size,disabled:m.value.disabled,readonly:m.value.readonly},e.$attrs,{onSubmit:fe(U(X),[`prevent`])}),{default:G(()=>[b(` 布局组件渲染 `),(F(),y(z(Me.value),M({key:m.value.layout,"form-items":U(je),"layout-config":Ne.value,options:U(A),"form-data":U(E)},Pe.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:Ve,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:Ie,onValidateError:Le,onFieldsChange:Fe}),C({"step-actions":G(t=>[le(e.$slots,`step-actions`,M(t,{submit:U(X),submitting:U(Y)}),()=>[t.isLastStep&&m.value.showActions?(F(),y(U(K),{key:0,type:`primary`,size:m.value.size,loading:U(Y)||!S.value,disabled:!S.value||U(Y)||m.value.disabled||m.value.readonly,onClick:U(X)},{default:G(()=>[w(H(m.value.submitText||U(te)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):b(`v-if`,!0)],!0)]),_:2},[L(ke(),t=>({name:t,fn:G(n=>[le(e.$slots,t,re(k(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),b(` 表单操作按钮区域(只在特定布局中显示) `),Q.value?(F(),y(U(ve),{key:0,class:`c-form-actions`,"show-feedback":!1},{default:G(()=>[le(e.$slots,`action`,re(k(De.value)),()=>[T(U(Te),{justify:`end`,size:h.value?g.value.gap:void 0,style:{width:`100%`}},{default:G(()=>[T(U(K),{size:m.value.size,disabled:!S.value||U(Y)||m.value.disabled||m.value.readonly,onClick:U(he)},{default:G(()=>[w(H(m.value.resetText||U(te)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),le(e.$slots,`action-extra`,re(k(De.value)),void 0,!0),T(U(K),{type:`primary`,size:m.value.size,loading:U(Y)||!S.value,disabled:!S.value||U(Y)||m.value.disabled||m.value.readonly,onClick:U(me)},{default:G(()=>[w(H(m.value.submitText||U(te)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):b(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}}),[[`__scopeId`,`data-v-21fb0c93`]]);function et(e){return e}function tt(e){return e}function nt(e){let t=V(g(e.initialValues)),n=V(null);return{model:t,formRef:n,bindings:v(()=>({modelValue:t.value,options:ue(e.options),config:ue(e.config),"onUpdate:modelValue":e=>{t.value=g(e)}})),validate:async()=>{if(!n.value)throw Error(`C_Form is not mounted`);await n.value.validate()},submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=g(n.value.getModel())):t.value=g(e.initialValues)},getValues:()=>g(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=g(n.value.getModel())):t.value={...t.value,...g(e)}}}}export{Me as a,Ie as c,Ee as d,$e as i,Be as l,et as n,Ne as o,nt as r,Fe as s,tt as t,Ae as u};