@volverjs/form-vue 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,7 +44,8 @@ npm install @volverjs/form-vue --save
44
44
  ```typescript
45
45
  import { createApp } from 'vue'
46
46
  import { createForm } from '@volverjs/form-vue'
47
- import { z } from 'zod/v3'
47
+ // Zod 4. The library also supports Zod 3.25+ via `import { z } from 'zod/v3'`.
48
+ import { z } from 'zod'
48
49
 
49
50
  const schema = z.object({
50
51
  firstName: z.string(),
@@ -153,7 +154,7 @@ The **default settings** are **inherited** from the plugin (if it's installed).
153
154
  ```vue
154
155
  <script lang="ts" setup>
155
156
  import { useForm } from '@volverjs/form-vue'
156
- import { z } from 'zod/v3'
157
+ import { z } from 'zod'
157
158
 
158
159
  const schema = z.object({
159
160
  firstName: z.string(),
@@ -184,7 +185,7 @@ const { VvForm, VvFormWrapper, VvFormField } = useForm(schema, {
184
185
 
185
186
  ```ts
186
187
  import { useForm } from '@volverjs/form-vue'
187
- import { z } from 'zod/v3'
188
+ import { z } from 'zod'
188
189
 
189
190
  const schema = z.object({
190
191
  firstName: z.string(),
@@ -464,7 +465,7 @@ Forms can also be created using a template. A template is an **array of objects*
464
465
  ```vue
465
466
  <script lang="ts" setup>
466
467
  import { useForm } from '@volverjs/form-vue'
467
- import { z } from 'zod/v3'
468
+ import { z } from 'zod'
468
469
 
469
470
  const schema = z.object({
470
471
  firstName: z.string(),
@@ -542,7 +543,7 @@ Conditional rendering can be achieved using the `vvIf` and `vvElseIf` properties
542
543
  ```vue
543
544
  <script lang="ts" setup>
544
545
  import { useForm } from '@volverjs/form-vue'
545
- import { z } from 'zod/v3'
546
+ import { z } from 'zod'
546
547
 
547
548
  const schema = z.object({
548
549
  firstName: z.string(),
@@ -658,7 +659,7 @@ const templateSchema = [
658
659
  It can be useful to create a **default object** for a **form**. The default object is created by the default values of the schema and can be merged with an other object passed as parameter.
659
660
 
660
661
  ```ts
661
- import { z } from 'zod/v3'
662
+ import { z } from 'zod'
662
663
  import { defaultObjectBySchema } from '@volverjs/form-vue'
663
664
 
664
665
  const schema = z.object({
@@ -676,7 +677,7 @@ const defaultObject = defaultObjectBySchema(schema, { name: 'Jane' })
676
677
  `defaultObjectBySchema` can be used with nested objects.
677
678
 
678
679
  ```ts
679
- import { z } from 'zod/v3'
680
+ import { z } from 'zod'
680
681
  import { defaultObjectBySchema } from '@volverjs/form-vue'
681
682
 
682
683
  const schema = z.object({
@@ -695,7 +696,7 @@ const defaultObject = defaultObjectBySchema(schema)
695
696
  Other Zod methods are also supported: [`z.nullable()`](https://github.com/colinhacks/zod#nullable), [`z.coerce`](https://github.com/colinhacks/zod#coercion-for-primitives) and [`z.passthrough()`](https://github.com/colinhacks/zod#passthrough).
696
697
 
697
698
  ```ts
698
- import { z } from 'zod/v3'
699
+ import { z } from 'zod'
699
700
  import { defaultObjectBySchema } from '@volverjs/form-vue'
700
701
 
701
702
  const schema = z
@@ -46,7 +46,7 @@ export declare function defineFormField<Schema extends FormSchema, Type = undefi
46
46
  name: {} | ([{
47
47
  type: PropType<Path<InferSchema<Schema>>>;
48
48
  required: true;
49
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
49
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
50
50
  type: PropType<Path<InferSchema<Schema>>>;
51
51
  required: true;
52
52
  });
@@ -104,7 +104,7 @@ export declare function defineFormField<Schema extends FormSchema, Type = undefi
104
104
  props: [{
105
105
  type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
106
106
  default: () => {};
107
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
107
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
108
108
  type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
109
109
  default: () => {};
110
110
  };
@@ -76,7 +76,7 @@ export declare function defineFormFieldsGroup<Schema extends FormSchema, Type =
76
76
  props: [{
77
77
  type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
78
78
  default: () => {};
79
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
79
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
80
80
  type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
81
81
  default: () => {};
82
82
  };
@@ -85,7 +85,7 @@ export declare function defineFormFieldsGroup<Schema extends FormSchema, Type =
85
85
  defaultValues: [{
86
86
  type: PropType<Record<Path<InferSchema<Schema>>, any>>;
87
87
  default: undefined;
88
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
88
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
89
89
  type: PropType<Record<Path<InferSchema<Schema>>, any>>;
90
90
  default: undefined;
91
91
  };
@@ -183,7 +183,7 @@ declare function _formType<Schema extends FormSchema, Type>(schema: Schema, opti
183
183
  name: {} | ([{
184
184
  type: import('vue').PropType<Path<import('./types').InferSchema<Schema>>>;
185
185
  required: true;
186
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
186
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
187
187
  type: import('vue').PropType<Path<import('./types').InferSchema<Schema>>>;
188
188
  required: true;
189
189
  });
@@ -241,7 +241,7 @@ declare function _formType<Schema extends FormSchema, Type>(schema: Schema, opti
241
241
  props: [{
242
242
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
243
243
  default: () => {};
244
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
244
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
245
245
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
246
246
  default: () => {};
247
247
  };
@@ -343,7 +343,7 @@ declare function _formType<Schema extends FormSchema, Type>(schema: Schema, opti
343
343
  props: [{
344
344
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
345
345
  default: () => {};
346
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
346
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
347
347
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
348
348
  default: () => {};
349
349
  };
@@ -352,7 +352,7 @@ declare function _formType<Schema extends FormSchema, Type>(schema: Schema, opti
352
352
  defaultValues: [{
353
353
  type: import('vue').PropType<Record<Path<import('./types').InferSchema<Schema>>, any>>;
354
354
  default: undefined;
355
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
355
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
356
356
  type: import('vue').PropType<Record<Path<import('./types').InferSchema<Schema>>, any>>;
357
357
  default: undefined;
358
358
  };
@@ -673,7 +673,7 @@ export declare function formType<Schema extends FormSchema, Type>(schema: Schema
673
673
  name: {} | ([{
674
674
  type: import('vue').PropType<Path<import('./types').InferSchema<Schema>>>;
675
675
  required: true;
676
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
676
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
677
677
  type: import('vue').PropType<Path<import('./types').InferSchema<Schema>>>;
678
678
  required: true;
679
679
  });
@@ -731,7 +731,7 @@ export declare function formType<Schema extends FormSchema, Type>(schema: Schema
731
731
  props: [{
732
732
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
733
733
  default: () => {};
734
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
734
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
735
735
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
736
736
  default: () => {};
737
737
  };
@@ -833,7 +833,7 @@ export declare function formType<Schema extends FormSchema, Type>(schema: Schema
833
833
  props: [{
834
834
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
835
835
  default: () => {};
836
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
836
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
837
837
  type: import('vue').PropType<Partial<import('./types').InferSchema<Schema> | ((formData?: import('vue').Ref<ObjectConstructor>) => Partial<import('./types').InferSchema<Schema>> | undefined) | undefined>>;
838
838
  default: () => {};
839
839
  };
@@ -842,7 +842,7 @@ export declare function formType<Schema extends FormSchema, Type>(schema: Schema
842
842
  defaultValues: [{
843
843
  type: import('vue').PropType<Record<Path<import('./types').InferSchema<Schema>>, any>>;
844
844
  default: undefined;
845
- }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
845
+ }] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
846
846
  type: import('vue').PropType<Record<Path<import('./types').InferSchema<Schema>>, any>>;
847
847
  default: undefined;
848
848
  };
package/dist/index.es.js CHANGED
@@ -175,26 +175,28 @@ function he(t, r, a, s, f) {
175
175
  return m.value = void 0, h.value = k.valid, x.value = w(r.data), !0;
176
176
  }, E = () => {
177
177
  m.value = void 0, h.value = void 0, C = void 0;
178
- }, D = () => {
179
- x.value = w(), E(), h.value = k.reset;
180
- }, O = async (e) => S.value || !await T(void 0, e) ? !1 : (h.value = k.submitting, !0), { ignoreUpdates: A, stop: j } = b(x, () => {
178
+ }, { ignoreUpdates: D, stop: O } = b(x, () => {
181
179
  h.value = k.updated;
182
180
  }, {
183
181
  deep: !0,
184
182
  eventFilter: y(a?.updateThrottle ?? 500)
185
- }), M = u(m), N = u(h);
183
+ }), A = () => {
184
+ D(() => {
185
+ x.value = w();
186
+ }), E(), h.value = k.reset;
187
+ }, j = async (e) => S.value || !await T(void 0, e) ? !1 : (h.value = k.submitting, !0), M = u(m), N = u(h);
186
188
  return {
187
189
  clear: E,
188
190
  errors: m,
189
191
  formData: x,
190
- ignoreUpdates: A,
192
+ ignoreUpdates: D,
191
193
  invalid: g,
192
194
  readonly: S,
193
- reset: D,
195
+ reset: A,
194
196
  status: h,
195
197
  wrappers: f,
196
- stopUpdatesWatch: j,
197
- submit: O,
198
+ stopUpdatesWatch: O,
199
+ submit: j,
198
200
  validate: T,
199
201
  VvForm: n({
200
202
  name: "VvForm",
@@ -298,26 +300,26 @@ function he(t, r, a, s, f) {
298
300
  clear: E,
299
301
  errors: M,
300
302
  formData: x,
301
- ignoreUpdates: A,
303
+ ignoreUpdates: D,
302
304
  invalid: g,
303
305
  readonly: S,
304
- reset: D,
306
+ reset: A,
305
307
  status: N,
306
- stopUpdatesWatch: j,
307
- submit: O,
308
+ stopUpdatesWatch: O,
309
+ submit: j,
308
310
  validate: T,
309
311
  wrappers: f
310
312
  }), {
311
313
  clear: E,
312
314
  errors: M,
313
315
  formData: x,
314
- ignoreUpdates: A,
316
+ ignoreUpdates: D,
315
317
  invalid: g,
316
318
  isReadonly: S,
317
- reset: D,
319
+ reset: A,
318
320
  status: N,
319
- stopUpdatesWatch: j,
320
- submit: () => O({
321
+ stopUpdatesWatch: O,
322
+ submit: () => j({
321
323
  superRefine: e.superRefine,
322
324
  fields: new Set(e.validateFields)
323
325
  }),
@@ -334,10 +336,10 @@ function he(t, r, a, s, f) {
334
336
  status: N.value,
335
337
  wrappers: f,
336
338
  clear: E,
337
- ignoreUpdates: A,
338
- reset: D,
339
- stopUpdatesWatch: j,
340
- submit: O,
339
+ ignoreUpdates: D,
340
+ reset: A,
341
+ stopUpdatesWatch: O,
342
+ submit: j,
341
343
  validate: T
342
344
  }) ?? this.$slots.default;
343
345
  return i(this.tag, {
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue"),require("@vueuse/core"),require("zod/v3"),require("zod/v4/core"),require("dot-prop")):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@vueuse/core`,`zod/v3`,`zod/v4/core`,`dot-prop`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`@volverjs/form-vue`]={},e.Vue,e.VueUseCore,e.zodV3,e.zodV4Core,e.dotProp))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=function(e){return e.text=`text`,e.number=`number`,e.email=`email`,e.password=`password`,e.tel=`tel`,e.url=`url`,e.search=`search`,e.date=`date`,e.time=`time`,e.datetimeLocal=`datetime-local`,e.month=`month`,e.week=`week`,e.color=`color`,e.select=`select`,e.checkbox=`checkbox`,e.radio=`radio`,e.textarea=`textarea`,e.radioGroup=`radioGroup`,e.checkboxGroup=`checkboxGroup`,e.combobox=`combobox`,e.custom=`custom`,e}({}),s=function(e){return e.invalid=`invalid`,e.valid=`valid`,e.submitting=`submitting`,e.reset=`reset`,e.updated=`updated`,e.unknown=`unknown`,e}({});function c(e){return Array.isArray(e)?`array`:e===null?`null`:typeof e}function l(e,t){let n=c(e);return t.type?Array.isArray(t.type)?t.type.some(t=>t===n||t===`integer`&&n===`number`&&Number.isInteger(e)):t.type===n||t.type===`integer`&&n===`number`&&Number.isInteger(e):!0}var u=e=>e._def.typeName===`ZodObject`,d=e=>e._zod.def.type===`object`,f=e=>e._def.typeName===`ZodDefault`,p=e=>e._zod.def.type==="default",m=e=>e._def.typeName===`ZodNullable`,h=e=>e._zod.def.type===`nullable`,g=e=>e._def.typeName===`ZodRecord`,_=e=>e._zod.def.type===`record`,v=e=>e._def.typeName===`ZodArray`,y=e=>e._zod.def.type===`array`,b=e=>e._def.typeName===`ZodEffects`,x=e=>e._def.typeName===`ZodOptional`,S=e=>e._zod.def.type===`optional`,C=e=>e._zod.def.type===`pipe`,w=e=>e._zod.def.type===`transform`;function T(e){let t=e;for(;b(t);)t=t.innerType();return t}function E(e){let t=e;for(;C(t);)t=w(t._zod.def.out)?t._zod.def.in:t._zod.def.out;return t}var D=e=>{let t=T(e);return x(t)&&(t=t._def.innerType),t},O=e=>{let t=E(e);return S(t)&&(t=t._zod.def.innerType),t},k=e=>!!x(T(e)),A=e=>!!S(E(e));function j(e,t){if(e.length===0)return t??void 0;if(t!==void 0){for(let n of e)if(l(t,n))return M(n,t);for(let n of e){let e=n;if(!e.type||e.type===`object`)return M(e,t)}}return M(e[0],t)}function M(e,t){if(`const`in e)return e.const;if(e.anyOf&&Array.isArray(e.anyOf))return j(e.anyOf,t);if(e.oneOf&&Array.isArray(e.oneOf))return j(e.oneOf,t);if(e.allOf&&Array.isArray(e.allOf)){let n={...e,allOf:void 0};for(let t of e.allOf){let e=t;e.properties&&(n.properties={...n.properties,...e.properties}),e.type&&!n.type&&(n.type=e.type)}return M(n,t)}if(Array.isArray(e.type)){if(t===null&&e.type.includes(`null`))return null;let n=e.type.find(e=>e!==`null`);return n?M({...e,type:n},t):e.default??null}if(e.type!==`object`||!e.properties)switch(e.type){case`string`:return typeof t==`string`?t:e.default;case`number`:case`integer`:return typeof t==`number`?t:e.default;case`boolean`:return typeof t==`boolean`?t:e.default;case`null`:return t===null?t:e.default;case`array`:return Array.isArray(t)?e.items?t.map(t=>M(e.items,t)):t:e.default;default:return e.default}let n=e.properties,r=t&&typeof t==`object`&&!Array.isArray(t)?t:void 0,i={};for(let e in n){let t=r?.[e];i[e]=M(n[e],t)}if(r&&e.additionalProperties!==!1){let e=new Set(Object.keys(n));for(let[t,n]of Object.entries(r))e.has(t)||(i[t]=n)}return i}var N=e=>`_zod`in e,P={getInnerType:D,isObject:u,hasUnknownKeys:e=>e._def.unknownKeys===`passthrough`,getShapeEntries:e=>`shape`in e?Object.entries(e.shape):[],isOptional:k,isDefault:f,getDefaultValue:e=>e._def.defaultValue(),getDefaultInnerType:e=>e._def.innerType,isNullable:m,safeParse:(e,t)=>e.safeParse(t),isArray:v,getArrayElement:e=>e._def.type,isRecord:g,getRecordValue:e=>e._def.valueType},F={getInnerType:O,isObject:d,hasUnknownKeys:e=>!!(e._zod.def.catchall&&e._zod.def.catchall._zod.def.type!==`never`),getShapeEntries:e=>`shape`in e._zod.def?Object.entries(e._zod.def.shape):[],isOptional:A,isDefault:p,getDefaultValue:e=>e._zod.def.defaultValue,getDefaultInnerType:e=>e._zod.def.innerType,isNullable:h,safeParse:(e,t)=>(0,i.safeParse)(e,t),isArray:y,getArrayElement:e=>e._zod.def.element,isRecord:_,getRecordValue:e=>e._zod.def.valueType};function I(e,t,n){let r=e.getInnerType(e.getArrayElement(t));return e.isObject(r)?n.map(t=>z(e,r,t)):n}function L(e,t,n){let r=e.getInnerType(e.getRecordValue(t));return e.isObject(r)?Object.keys(n).reduce((t,i)=>(t[i]=z(e,r,n[i]),t),{}):n}function R(e,t,n,r){let i=e.isOptional(n),a=e.getInnerType(n),o;if(e.isDefault(a)&&(o=e.getDefaultValue(a),a=e.getDefaultInnerType(a)),r===null&&e.isNullable(a))return[t,r];if(r==null&&i)return[t,o];if(a&&r!==void 0){let i=e.safeParse(n,r);if(i.success)return[t,i.data??o]}return e.isArray(a)&&Array.isArray(r)?[t,I(e,a,r)]:e.isRecord(a)&&r?[t,L(e,a,r)]:e.isObject(a)?[t,z(e,a,r&&typeof r==`object`?r:o)]:[t,o]}function z(e,t,n){let r=n&&typeof n==`object`&&!Array.isArray(n)?n:{};return{...e.hasUnknownKeys(t)?r:{},...Object.fromEntries(e.getShapeEntries(t).map(([t,n])=>R(e,t,n,r[t])))}}function B(e,t={}){let n=N(e)?F:P,r=n.getInnerType(e);return n.isObject(r)?z(n,r,t):t}var V=(e,t)=>N(e)?(0,i.safeParseAsync)(e,t):e.safeParseAsync(t),H=(e,t)=>N(e)?(0,i.formatError)(t):t.format(),U=(e,t)=>N(e)?(0,i.formatError)(new i.$ZodError(t)):new r.ZodError(t).format();function W(e,r,i,a,o){let c=(0,t.ref)(),l=(0,t.ref)(),u=(0,t.computed)(()=>l.value===s.invalid),d=(0,t.ref)(),f=(0,t.ref)(!1),p,m=t=>{let n=B(e,t);if(i?.class){let e=i.class;return new e(n)}return n},h=async(t=d.value,n)=>{if(p=n?.fields,f.value)return!0;let r=await V(e,t);if(!r.success){if(l.value=s.invalid,!p?.size)return c.value=H(e,r.error),!1;let t=r.error.issues.filter(e=>p?.has(e.path.join(`.`)));return t.length?(c.value=U(e,t),!1):(c.value=void 0,!0)}return c.value=void 0,l.value=s.valid,d.value=m(r.data),!0},g=()=>{c.value=void 0,l.value=void 0,p=void 0},_=()=>{d.value=m(),g(),l.value=s.reset},v=async e=>f.value||!await h(void 0,e)?!1:(l.value=s.submitting,!0),{ignoreUpdates:y,stop:b}=(0,n.watchIgnorable)(d,()=>{l.value=s.updated},{deep:!0,eventFilter:(0,n.throttleFilter)(i?.updateThrottle??500)}),x=(0,t.readonly)(c),S=(0,t.readonly)(l);return{clear:g,errors:c,formData:d,ignoreUpdates:y,invalid:u,readonly:f,reset:_,status:l,wrappers:o,stopUpdatesWatch:b,submit:v,validate:h,VvForm:(0,t.defineComponent)({name:`VvForm`,props:{continuousValidation:{type:Boolean,default:!1},modelValue:{type:Object,default:()=>({})},readonly:{type:Boolean,default:i?.readonly},tag:{type:String,default:`form`},template:{type:[Array,Function],default:void 0},superRefine:{type:Function,default:void 0},validateFields:{type:Array,default:void 0}},emits:[`invalid`,`submit`,`update:modelValue`,`update:readonly`,`valid`,`reset`],expose:[`errors`,`invalid`,`readonly`,`status`,`submit`,`tag`,`template`,`valid`,`validate`,`clear`,`reset`],slots:Object,setup(e,{emit:n}){return d.value=m((0,t.toRaw)(e.modelValue)),(0,t.watch)(()=>e.modelValue,e=>{if(e){let n=(0,t.isProxy)(e)?(0,t.toRaw)(e):e;if(JSON.stringify(n)===JSON.stringify((0,t.toRaw)(d.value)))return;d.value=m(n)}},{deep:!0}),(0,t.watch)(l,async r=>{if(r===s.invalid){let e=(0,t.toRaw)(c.value);n(`invalid`,e),i?.onInvalid?.(e);return}if(r===s.valid){let e=(0,t.toRaw)(d.value);n(`valid`,e),i?.onValid?.(e),n(`update:modelValue`,e),i?.onUpdate?.(e);return}if(r===s.submitting){let e=(0,t.toRaw)(d.value);n(`submit`,e),i?.onSubmit?.(e);return}if(r===s.reset){let e=(0,t.toRaw)(d.value);n(`reset`,e),i?.onReset?.(e);return}if(r===s.updated){if((c.value||i?.continuousValidation||e.continuousValidation)&&await h(void 0,{superRefine:e.superRefine,fields:p??new Set(e.validateFields)}),!d.value||!e.modelValue||JSON.stringify(d.value)!==JSON.stringify(e.modelValue)){let e=(0,t.toRaw)(d.value);n(`update:modelValue`,e),i?.onUpdate?.(e)}l.value===s.updated&&(l.value=s.unknown)}}),(0,t.onMounted)(()=>{e.readonly!==void 0&&(f.value=e.readonly)}),(0,t.watch)(()=>e.readonly,e=>{f.value=e}),(0,t.watch)(f,t=>{t!==e.readonly&&n(`update:readonly`,f.value)}),(0,t.provide)(r,{clear:g,errors:x,formData:d,ignoreUpdates:y,invalid:u,readonly:f,reset:_,status:S,stopUpdatesWatch:b,submit:v,validate:h,wrappers:o}),{clear:g,errors:x,formData:d,ignoreUpdates:y,invalid:u,isReadonly:f,reset:_,status:S,stopUpdatesWatch:b,submit:()=>v({superRefine:e.superRefine,fields:new Set(e.validateFields)}),validate:h,wrappers:o}},render(){let e=()=>this.$slots?.default?.({errors:x.value,formData:d.value,invalid:u.value,readonly:f.value,status:S.value,wrappers:o,clear:g,ignoreUpdates:y,reset:_,stopUpdatesWatch:b,submit:v,validate:h})??this.$slots.default;return(0,t.h)(this.tag,{onSubmit:(0,t.withModifiers)(this.submit,[`prevent`]),onReset:(0,t.withModifiers)(this.reset,[`prevent`])},(this.template??i?.template)&&a?[(0,t.h)(a,{schema:this.template??i?.template},{default:e})]:{default:e})}})}}function G(e,n,r,i){return(0,t.defineComponent)({name:`VvFormField`,props:{type:{type:String,validator:e=>Object.values(o).includes(e),default:o.custom},is:{type:[Object,String],default:void 0},name:{type:[String,Number,Boolean,Symbol],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValue:{type:[String,Number,Boolean,Array,Object],default:void 0},lazyLoad:{type:Boolean,default:!1},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabel`,`is`,`type`],slots:Object,setup(s,{slots:c,emit:l}){let{props:u,name:d}=(0,t.toRefs)(s),f=(0,t.useId)(),p=(0,t.inject)(n,void 0);p&&p.fields.value.set(f,s.name);let m=(0,t.inject)(e),h=(0,t.computed)({get(){if(m?.formData)return(0,a.getProperty)(new Object(m.formData.value),String(s.name))},set(e){m?.formData&&((0,a.setProperty)(new Object(m.formData.value),String(s.name),e),l(`update:modelValue`,{newValue:h.value,formData:m?.formData}))}});(0,t.onMounted)(()=>{h.value===void 0&&s.defaultValue!==void 0&&(h.value=s.defaultValue)}),(0,t.onBeforeUnmount)(()=>{p&&p.fields.value.delete(f)});let g=(0,t.computed)(()=>{if(m?.errors.value)return(0,a.getProperty)(m.errors.value,String(s.name))}),_=(0,t.computed)(()=>g.value?._errors),v=(0,t.computed)(()=>g.value!==void 0),y=(0,t.watch)(v,e=>{if(e){l(`invalid`,g.value),p&&p.errors.value.set(String(s.name),g.value);return}l(`valid`,h.value),p&&p.errors.value.delete(s.name)}),b=(0,t.watch)(()=>m?.formData,()=>{l(`update:formData`,m?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{y(),b()});let x=e=>{e instanceof InputEvent&&(e=e.target.value),h.value=e},S=(0,t.computed)(()=>{let e=u.value;return typeof e==`function`&&(e=e(m?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),C=(0,t.computed)(()=>m?.readonly.value||p?.readonly.value?!0:S.value.readonly??s.readonly),w=(0,t.computed)(()=>({...S.value,name:S.value.name??s.name,invalid:v.value,valid:s.showValid?!!(!v.value&&h.value):void 0,type:(e=>{if([o.color,o.date,o.datetimeLocal,o.email,o.month,o.number,o.password,o.search,o.tel,o.text,o.time,o.url,o.week].includes(e))return e})(s.type),invalidLabel:_.value,modelValue:h.value,readonly:C.value,"onUpdate:modelValue":x}));return(0,t.provide)(r,{name:(0,t.readonly)(d),errors:(0,t.readonly)(g)}),{component:(0,t.computed)(()=>{if(s.type===o.custom)return{render(){return c.default?.({errors:(0,t.readonly)(g).value,formData:m?.formData.value,formErrors:m?.errors.value,invalid:v.value,invalidLabel:_.value,modelValue:h.value,readonly:C.value,onUpdate:x,submit:m?.submit,validate:m?.validate})??c.default}};if(!(i?.lazyLoad??s.lazyLoad)){let e;switch(s.type){case o.select:e=(0,t.resolveComponent)(`VvSelect`);break;case o.checkbox:e=(0,t.resolveComponent)(`VvCheckbox`);break;case o.radio:e=(0,t.resolveComponent)(`VvRadio`);break;case o.textarea:e=(0,t.resolveComponent)(`VvTextarea`);break;case o.radioGroup:e=(0,t.resolveComponent)(`VvRadioGroup`);break;case o.checkboxGroup:e=(0,t.resolveComponent)(`VvCheckboxGroup`);break;case o.combobox:e=(0,t.resolveComponent)(`VvCombobox`);break;default:e=(0,t.resolveComponent)(`VvInputText`)}if(typeof e!=`string`)return e;console.warn(`[@volverjs/form-vue]: ${e} not found, the component will be loaded asynchronously. To avoid this warning, please set "lazyLoad" option.`)}return(0,t.defineAsyncComponent)(async()=>{switch(i?.sideEffects&&await Promise.resolve(i.sideEffects(s.type)),s.type){case o.textarea:return import(`@volverjs/ui-vue/vv-textarea`);case o.radio:return import(`@volverjs/ui-vue/vv-radio`);case o.radioGroup:return import(`@volverjs/ui-vue/vv-radio-group`);case o.checkbox:return import(`@volverjs/ui-vue/vv-checkbox`);case o.checkboxGroup:return import(`@volverjs/ui-vue/vv-checkbox-group`);case o.select:return import(`@volverjs/ui-vue/vv-select`);case o.combobox:return import(`@volverjs/ui-vue/vv-combobox`)}return import(`@volverjs/ui-vue/vv-input-text`)})}),hasProps:w,invalid:v}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):this.type===o.custom?(0,t.h)(this.component,null,this.$slots):(0,t.h)(this.component,this.hasProps,this.$slots)}})}function K(e,n,r){return(0,t.defineComponent)({name:`VvFormFieldsGroup`,props:{is:{type:[Object,String],default:void 0},names:{type:[Array,Object],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValues:{type:[Object],default:void 0},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabels`,`is`],slots:Object,setup(i,{slots:o,emit:s}){let{props:c,names:l,defaultValues:u}=(0,t.toRefs)(i),d=(0,t.useId)(),f=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.values(l.value)),p=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.keys(l.value)),m=(0,t.computed)(()=>Array.isArray(l.value)?l.value.reduce((e,t)=>(e[String(t)]=t,e),{}):l.value),h=(0,t.computed)(()=>Object.keys(m.value).reduce((e,t)=>(e[String(m.value[t])]=t,e),{})),g=(0,t.inject)(n,void 0);g&&f.value.forEach(e=>{g.fields.value.set(`${d}-${e}`,e)});let _=(0,t.inject)(e),v=(0,t.computed)({get(){return _?.formData?p.value.reduce((e,t)=>(e[t]=(0,a.getProperty)(new Object(_.formData.value),m.value[t]),e),{}):{}},set(e){_?.formData&&(p.value.forEach(t=>{(0,a.setProperty)(new Object(_.formData.value),m.value[t],e?.[t])}),s(`update:modelValue`,{newValue:v.value,formData:_?.formData}))}});(0,t.onMounted)(()=>{u.value&&f.value.forEach(e=>{u.value?.[e]!==void 0&&v.value[e]===void 0&&(v.value={...v.value,[e]:u.value?.[e]})})}),(0,t.onBeforeUnmount)(()=>{g&&f.value.forEach(e=>{g.fields.value.delete(`${d}-${e}`)})});let y=(0,t.computed)(()=>{if(!_?.errors.value)return;let e=f.value.reduce((e,t)=>{if(!_.errors.value)return e;let n=(0,a.getProperty)(_.errors.value,String(t));return n===void 0||(e[String(t)]=n),e},{});if(Object.keys(e).length!==0)return e}),b=(0,t.computed)(()=>{if(!y.value)return;let e=Object.keys(y.value).reduce((e,t)=>(y.value?.[t]&&(e[h.value[t]]=y.value[t]._errors),e),{});if(Object.keys(e).length!==0)return e}),x=(0,t.computed)(()=>y.value!==void 0),S=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[t]=!!y.value?.[m.value[t]],e),{})),C=(0,t.watch)(x,()=>{if(x.value){s(`invalid`,y.value),g&&f.value.forEach(e=>{if(!y.value?.[e]){g.errors.value.delete(e);return}g.errors.value.set(e,y.value?.[e])});return}s(`valid`,v.value),g&&f.value.forEach(e=>{g.errors.value.delete(e)})}),w=(0,t.watch)(()=>_?.formData,()=>{s(`update:formData`,_?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{C(),w()});let T=e=>{v.value=e},E=(e,t)=>{t instanceof InputEvent&&(t=t.target.value),p.value.includes(e)&&(v.value={...v.value,[e]:t})},D=(0,t.computed)(()=>{let e=c.value;return typeof e==`function`&&(e=e(_?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),O=(0,t.computed)(()=>_?.readonly.value?!0:D.value.readonly??i.readonly),k=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[`onUpdate:${t}`]=e=>{E(t,e)},e),{"onUpdate:modelValue":T})),A=(0,t.computed)(()=>({...k.value,...D.value,...v.value,modelValue:v.value,names:D.value.name??f.value,invalid:x.value,invalids:S.value,valid:i.showValid?!!(!x.value&&v.value):void 0,invalidLabels:b.value,readonly:O.value}));return(0,t.provide)(r,{names:(0,t.readonly)(l),errors:(0,t.readonly)(y)}),{component:(0,t.computed)(()=>({render(){return o.default?.({errors:y.value,formData:_?.formData.value,formErrors:_?.errors.value,invalid:x.value,invalids:S.value,invalidLabels:b.value,modelValue:v.value,onUpdate:T,onUpdateField:E,readonly:O.value,submit:_?.submit,validate:_?.validate})??o.default}})),hasProps:A,invalid:x}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):(0,t.h)(this.component,null,this.$slots)}})}function q(e,n){return(0,t.defineComponent)({name:`VvFormWrapper`,props:{name:{type:String,required:!0},tag:{type:String,default:void 0},readonly:{type:Boolean,default:!1}},emits:[`invalid`,`valid`],expose:[`clear`,`errors`,`fields`,`fieldsErrors`,`formData`,`invalid`,`readonly`,`reset`,`submit`,`tag`,`validate`,`validateWrapper`],slots:Object,setup(r,{emit:i}){let a=(0,t.inject)(e),o=(0,t.inject)(n,void 0),s=(0,t.ref)(new Map),c=(0,t.ref)(new Map),{name:l}=(0,t.toRefs)(r),u=(0,t.computed)(()=>a?.invalid.value?c.value.size>0:!1);(0,t.watch)(u,e=>{if(e){i(`invalid`);return}i(`valid`)});let d=(0,t.computed)(()=>a?.readonly.value||r.readonly),f={name:(0,t.readonly)(l),errors:c,invalid:(0,t.readonly)(u),readonly:(0,t.readonly)(d),fields:s};return(0,t.provide)(n,f),(0,t.watch)((0,t.computed)(()=>new Map(s.value)),(e,t)=>{o?.fields&&(t.forEach((t,n)=>{e.has(n)||o?.fields.value.delete(n)}),e.forEach((e,t)=>{o?.fields.value.has(t)||o?.fields.value.set(t,e)}))},{deep:!0}),(0,t.watch)(c,e=>{o?.errors&&s.value.forEach(t=>{if(e.has(t)||o.errors.value.delete(t),e.has(t)){let n=e.get(t);n&&o.errors.value.set(t,n)}})},{deep:!0}),(0,t.onMounted)(()=>{if(!a?.wrappers||!l.value){console.warn(`[@volverjs/form-vue]: Invalid wrapper registration state`);return}if(a.wrappers.has(l.value)){console.warn(`[@volverjs/form-vue]: wrapper name "${l.value}" is already used`);return}a.wrappers.set(l.value,f)}),(0,t.onBeforeUnmount)(()=>{a?.wrappers&&l.value&&a.wrappers.delete(l.value)}),{errors:a?.errors,fields:s,fieldsErrors:c,formData:a?.formData,invalid:u,readonly:d,clear:a?.clear,reset:a?.reset,submit:a?.submit,validate:a?.validate,validateWrapper:()=>a?.validate(void 0,{fields:new Set(s.value.values())})??Promise.resolve(!0)}},render(){let e=()=>this.$slots.default?.({errors:this.errors,fieldsErrors:this.fieldsErrors,formData:this.formData,invalid:this.invalid,readonly:this.readonly,clear:this.clear,reset:this.reset,submit:this.submit,validate:this.validate,validateWrapper:this.validateWrapper});return this.tag?(0,t.h)(this.tag,null,{default:e}):e()}})}function J(e,n){let r=(0,t.defineComponent)({name:`VvFormTemplate`,props:{schema:{type:[Array,Function],required:!0},scope:{type:Object,default:()=>({})}},slots:Object,setup(i,{slots:o}){let s=(0,t.inject)(e);if(s?.formData)return()=>{let e=typeof i.schema==`function`?i.schema(s,i.scope):i.schema,c,l=e.reduce((e,o)=>{let{vvIs:l,vvName:u,vvSlots:d,vvChildren:f,vvIf:p,vvElseIf:m,vvType:h,vvDefaultValue:g,vvShowValid:_,vvContent:v,...y}=typeof o==`function`?o(s,i.scope):o;if(p!==void 0){if(c=typeof p==`string`?!!(0,a.getProperty)(new Object(s.formData.value),p):typeof p==`function`?(0,t.unref)(p(s)):(0,t.unref)(p),!c)return e}else if(m!==void 0&&c!==void 0){if(c||(c=typeof m==`string`?!!(0,a.getProperty)(new Object(s.formData.value),m):typeof m==`function`?(0,t.unref)(m(s)):(0,t.unref)(m),!c))return e}else c=void 0;let b;return f&&(b=typeof l==`string`?(0,t.h)(r,{schema:f}):{default:e=>(0,t.h)(r,{schema:f,scope:e})}),u?(e.push((0,t.h)(n,{name:u,is:l,type:h,defaultValue:g,showValid:_,props:y},d??b??v)),e):l?(e.push((0,t.h)(l,y,d??b??v)),e):(b&&(`default`in b?e.push(b.default(i.scope)):e.push(b)),e)},[]);return l.push(o?.default?.({errors:s?.errors.value,formData:s?.formData.value,invalid:s?.invalid.value,status:s?.status.value,submit:s?.submit,validate:s?.validate,clear:s?.clear,reset:s?.reset})),l}}});return r}function Y(e,t={}){let n=Symbol(`formInjectionKey`),r=Symbol(`formWrapperInjectionKey`),i=Symbol(`formFieldInjectionKey`),a=Symbol(`formFieldsGroupInjectionKey`),o=q(n,r),s=G(n,r,i,t),c=K(n,r,a),l=J(n,s),u=new Map,{clear:d,errors:f,formData:p,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,VvForm:S}=W(e,n,t,l,u);return{clear:d,errors:f,formData:p,formFieldInjectionKey:i,formInjectionKey:n,formWrapperInjectionKey:r,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,wrappers:u,VvForm:S,VvFormField:s,VvFormFieldsGroup:c,VvFormTemplate:l,VvFormWrapper:o}}var X=Symbol(`pluginInjectionKey`);function Z(e){let t={};return e.schema&&(t=Y(e.schema,e)),{...t,install(n,{global:r=!1}={}){n.provide(X,e),r&&(n.config.globalProperties.$vvForm=e,t?.VvForm&&n.component(`VvForm`,t.VvForm),t?.VvFormWrapper&&n.component(`VvFormWrapper`,t.VvFormWrapper),t?.VvFormField&&n.component(`VvFormField`,t.VvFormField),t?.VvFormFieldsGroup&&n.component(`VvFormFieldsGroup`,t.VvFormFieldsGroup),t?.VvFormTemplate&&n.component(`VvFormTemplate`,t.VvFormTemplate))}}}var Q=new Map;function $(e,n={}){if(n.scope&&Q.has(n.scope))return Q.get(n.scope);if(!(0,t.getCurrentInstance)()){let t=Y(e,n);return n.scope&&Q.set(n.scope,t),t}let r=Y(e,{...(0,t.inject)(X,{}),...n});return n.scope&&Q.set(n.scope,r),r}function ee(e,t={}){return Y(e,t)}e.FormFieldType=o,e.createForm=Z,e.defaultObjectByJSONSchema=M,e.defaultObjectBySchema=B,e.formType=ee,e.pluginInjectionKey=X,e.useForm=$});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue"),require("@vueuse/core"),require("zod/v3"),require("zod/v4/core"),require("dot-prop")):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@vueuse/core`,`zod/v3`,`zod/v4/core`,`dot-prop`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`@volverjs/form-vue`]={},e.Vue,e.VueUseCore,e.zodV3,e.zodV4Core,e.dotProp))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=function(e){return e.text=`text`,e.number=`number`,e.email=`email`,e.password=`password`,e.tel=`tel`,e.url=`url`,e.search=`search`,e.date=`date`,e.time=`time`,e.datetimeLocal=`datetime-local`,e.month=`month`,e.week=`week`,e.color=`color`,e.select=`select`,e.checkbox=`checkbox`,e.radio=`radio`,e.textarea=`textarea`,e.radioGroup=`radioGroup`,e.checkboxGroup=`checkboxGroup`,e.combobox=`combobox`,e.custom=`custom`,e}({}),s=function(e){return e.invalid=`invalid`,e.valid=`valid`,e.submitting=`submitting`,e.reset=`reset`,e.updated=`updated`,e.unknown=`unknown`,e}({});function c(e){return Array.isArray(e)?`array`:e===null?`null`:typeof e}function l(e,t){let n=c(e);return t.type?Array.isArray(t.type)?t.type.some(t=>t===n||t===`integer`&&n===`number`&&Number.isInteger(e)):t.type===n||t.type===`integer`&&n===`number`&&Number.isInteger(e):!0}var u=e=>e._def.typeName===`ZodObject`,d=e=>e._zod.def.type===`object`,f=e=>e._def.typeName===`ZodDefault`,p=e=>e._zod.def.type==="default",m=e=>e._def.typeName===`ZodNullable`,h=e=>e._zod.def.type===`nullable`,g=e=>e._def.typeName===`ZodRecord`,_=e=>e._zod.def.type===`record`,v=e=>e._def.typeName===`ZodArray`,y=e=>e._zod.def.type===`array`,b=e=>e._def.typeName===`ZodEffects`,x=e=>e._def.typeName===`ZodOptional`,S=e=>e._zod.def.type===`optional`,C=e=>e._zod.def.type===`pipe`,w=e=>e._zod.def.type===`transform`;function T(e){let t=e;for(;b(t);)t=t.innerType();return t}function E(e){let t=e;for(;C(t);)t=w(t._zod.def.out)?t._zod.def.in:t._zod.def.out;return t}var D=e=>{let t=T(e);return x(t)&&(t=t._def.innerType),t},O=e=>{let t=E(e);return S(t)&&(t=t._zod.def.innerType),t},k=e=>!!x(T(e)),A=e=>!!S(E(e));function j(e,t){if(e.length===0)return t??void 0;if(t!==void 0){for(let n of e)if(l(t,n))return M(n,t);for(let n of e){let e=n;if(!e.type||e.type===`object`)return M(e,t)}}return M(e[0],t)}function M(e,t){if(`const`in e)return e.const;if(e.anyOf&&Array.isArray(e.anyOf))return j(e.anyOf,t);if(e.oneOf&&Array.isArray(e.oneOf))return j(e.oneOf,t);if(e.allOf&&Array.isArray(e.allOf)){let n={...e,allOf:void 0};for(let t of e.allOf){let e=t;e.properties&&(n.properties={...n.properties,...e.properties}),e.type&&!n.type&&(n.type=e.type)}return M(n,t)}if(Array.isArray(e.type)){if(t===null&&e.type.includes(`null`))return null;let n=e.type.find(e=>e!==`null`);return n?M({...e,type:n},t):e.default??null}if(e.type!==`object`||!e.properties)switch(e.type){case`string`:return typeof t==`string`?t:e.default;case`number`:case`integer`:return typeof t==`number`?t:e.default;case`boolean`:return typeof t==`boolean`?t:e.default;case`null`:return t===null?t:e.default;case`array`:return Array.isArray(t)?e.items?t.map(t=>M(e.items,t)):t:e.default;default:return e.default}let n=e.properties,r=t&&typeof t==`object`&&!Array.isArray(t)?t:void 0,i={};for(let e in n){let t=r?.[e];i[e]=M(n[e],t)}if(r&&e.additionalProperties!==!1){let e=new Set(Object.keys(n));for(let[t,n]of Object.entries(r))e.has(t)||(i[t]=n)}return i}var N=e=>`_zod`in e,P={getInnerType:D,isObject:u,hasUnknownKeys:e=>e._def.unknownKeys===`passthrough`,getShapeEntries:e=>`shape`in e?Object.entries(e.shape):[],isOptional:k,isDefault:f,getDefaultValue:e=>e._def.defaultValue(),getDefaultInnerType:e=>e._def.innerType,isNullable:m,safeParse:(e,t)=>e.safeParse(t),isArray:v,getArrayElement:e=>e._def.type,isRecord:g,getRecordValue:e=>e._def.valueType},F={getInnerType:O,isObject:d,hasUnknownKeys:e=>!!(e._zod.def.catchall&&e._zod.def.catchall._zod.def.type!==`never`),getShapeEntries:e=>`shape`in e._zod.def?Object.entries(e._zod.def.shape):[],isOptional:A,isDefault:p,getDefaultValue:e=>e._zod.def.defaultValue,getDefaultInnerType:e=>e._zod.def.innerType,isNullable:h,safeParse:(e,t)=>(0,i.safeParse)(e,t),isArray:y,getArrayElement:e=>e._zod.def.element,isRecord:_,getRecordValue:e=>e._zod.def.valueType};function I(e,t,n){let r=e.getInnerType(e.getArrayElement(t));return e.isObject(r)?n.map(t=>z(e,r,t)):n}function L(e,t,n){let r=e.getInnerType(e.getRecordValue(t));return e.isObject(r)?Object.keys(n).reduce((t,i)=>(t[i]=z(e,r,n[i]),t),{}):n}function R(e,t,n,r){let i=e.isOptional(n),a=e.getInnerType(n),o;if(e.isDefault(a)&&(o=e.getDefaultValue(a),a=e.getDefaultInnerType(a)),r===null&&e.isNullable(a))return[t,r];if(r==null&&i)return[t,o];if(a&&r!==void 0){let i=e.safeParse(n,r);if(i.success)return[t,i.data??o]}return e.isArray(a)&&Array.isArray(r)?[t,I(e,a,r)]:e.isRecord(a)&&r?[t,L(e,a,r)]:e.isObject(a)?[t,z(e,a,r&&typeof r==`object`?r:o)]:[t,o]}function z(e,t,n){let r=n&&typeof n==`object`&&!Array.isArray(n)?n:{};return{...e.hasUnknownKeys(t)?r:{},...Object.fromEntries(e.getShapeEntries(t).map(([t,n])=>R(e,t,n,r[t])))}}function B(e,t={}){let n=N(e)?F:P,r=n.getInnerType(e);return n.isObject(r)?z(n,r,t):t}var V=(e,t)=>N(e)?(0,i.safeParseAsync)(e,t):e.safeParseAsync(t),H=(e,t)=>N(e)?(0,i.formatError)(t):t.format(),U=(e,t)=>N(e)?(0,i.formatError)(new i.$ZodError(t)):new r.ZodError(t).format();function W(e,r,i,a,o){let c=(0,t.ref)(),l=(0,t.ref)(),u=(0,t.computed)(()=>l.value===s.invalid),d=(0,t.ref)(),f=(0,t.ref)(!1),p,m=t=>{let n=B(e,t);if(i?.class){let e=i.class;return new e(n)}return n},h=async(t=d.value,n)=>{if(p=n?.fields,f.value)return!0;let r=await V(e,t);if(!r.success){if(l.value=s.invalid,!p?.size)return c.value=H(e,r.error),!1;let t=r.error.issues.filter(e=>p?.has(e.path.join(`.`)));return t.length?(c.value=U(e,t),!1):(c.value=void 0,!0)}return c.value=void 0,l.value=s.valid,d.value=m(r.data),!0},g=()=>{c.value=void 0,l.value=void 0,p=void 0},{ignoreUpdates:_,stop:v}=(0,n.watchIgnorable)(d,()=>{l.value=s.updated},{deep:!0,eventFilter:(0,n.throttleFilter)(i?.updateThrottle??500)}),y=()=>{_(()=>{d.value=m()}),g(),l.value=s.reset},b=async e=>f.value||!await h(void 0,e)?!1:(l.value=s.submitting,!0),x=(0,t.readonly)(c),S=(0,t.readonly)(l);return{clear:g,errors:c,formData:d,ignoreUpdates:_,invalid:u,readonly:f,reset:y,status:l,wrappers:o,stopUpdatesWatch:v,submit:b,validate:h,VvForm:(0,t.defineComponent)({name:`VvForm`,props:{continuousValidation:{type:Boolean,default:!1},modelValue:{type:Object,default:()=>({})},readonly:{type:Boolean,default:i?.readonly},tag:{type:String,default:`form`},template:{type:[Array,Function],default:void 0},superRefine:{type:Function,default:void 0},validateFields:{type:Array,default:void 0}},emits:[`invalid`,`submit`,`update:modelValue`,`update:readonly`,`valid`,`reset`],expose:[`errors`,`invalid`,`readonly`,`status`,`submit`,`tag`,`template`,`valid`,`validate`,`clear`,`reset`],slots:Object,setup(e,{emit:n}){return d.value=m((0,t.toRaw)(e.modelValue)),(0,t.watch)(()=>e.modelValue,e=>{if(e){let n=(0,t.isProxy)(e)?(0,t.toRaw)(e):e;if(JSON.stringify(n)===JSON.stringify((0,t.toRaw)(d.value)))return;d.value=m(n)}},{deep:!0}),(0,t.watch)(l,async r=>{if(r===s.invalid){let e=(0,t.toRaw)(c.value);n(`invalid`,e),i?.onInvalid?.(e);return}if(r===s.valid){let e=(0,t.toRaw)(d.value);n(`valid`,e),i?.onValid?.(e),n(`update:modelValue`,e),i?.onUpdate?.(e);return}if(r===s.submitting){let e=(0,t.toRaw)(d.value);n(`submit`,e),i?.onSubmit?.(e);return}if(r===s.reset){let e=(0,t.toRaw)(d.value);n(`reset`,e),i?.onReset?.(e);return}if(r===s.updated){if((c.value||i?.continuousValidation||e.continuousValidation)&&await h(void 0,{superRefine:e.superRefine,fields:p??new Set(e.validateFields)}),!d.value||!e.modelValue||JSON.stringify(d.value)!==JSON.stringify(e.modelValue)){let e=(0,t.toRaw)(d.value);n(`update:modelValue`,e),i?.onUpdate?.(e)}l.value===s.updated&&(l.value=s.unknown)}}),(0,t.onMounted)(()=>{e.readonly!==void 0&&(f.value=e.readonly)}),(0,t.watch)(()=>e.readonly,e=>{f.value=e}),(0,t.watch)(f,t=>{t!==e.readonly&&n(`update:readonly`,f.value)}),(0,t.provide)(r,{clear:g,errors:x,formData:d,ignoreUpdates:_,invalid:u,readonly:f,reset:y,status:S,stopUpdatesWatch:v,submit:b,validate:h,wrappers:o}),{clear:g,errors:x,formData:d,ignoreUpdates:_,invalid:u,isReadonly:f,reset:y,status:S,stopUpdatesWatch:v,submit:()=>b({superRefine:e.superRefine,fields:new Set(e.validateFields)}),validate:h,wrappers:o}},render(){let e=()=>this.$slots?.default?.({errors:x.value,formData:d.value,invalid:u.value,readonly:f.value,status:S.value,wrappers:o,clear:g,ignoreUpdates:_,reset:y,stopUpdatesWatch:v,submit:b,validate:h})??this.$slots.default;return(0,t.h)(this.tag,{onSubmit:(0,t.withModifiers)(this.submit,[`prevent`]),onReset:(0,t.withModifiers)(this.reset,[`prevent`])},(this.template??i?.template)&&a?[(0,t.h)(a,{schema:this.template??i?.template},{default:e})]:{default:e})}})}}function G(e,n,r,i){return(0,t.defineComponent)({name:`VvFormField`,props:{type:{type:String,validator:e=>Object.values(o).includes(e),default:o.custom},is:{type:[Object,String],default:void 0},name:{type:[String,Number,Boolean,Symbol],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValue:{type:[String,Number,Boolean,Array,Object],default:void 0},lazyLoad:{type:Boolean,default:!1},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabel`,`is`,`type`],slots:Object,setup(s,{slots:c,emit:l}){let{props:u,name:d}=(0,t.toRefs)(s),f=(0,t.useId)(),p=(0,t.inject)(n,void 0);p&&p.fields.value.set(f,s.name);let m=(0,t.inject)(e),h=(0,t.computed)({get(){if(m?.formData)return(0,a.getProperty)(new Object(m.formData.value),String(s.name))},set(e){m?.formData&&((0,a.setProperty)(new Object(m.formData.value),String(s.name),e),l(`update:modelValue`,{newValue:h.value,formData:m?.formData}))}});(0,t.onMounted)(()=>{h.value===void 0&&s.defaultValue!==void 0&&(h.value=s.defaultValue)}),(0,t.onBeforeUnmount)(()=>{p&&p.fields.value.delete(f)});let g=(0,t.computed)(()=>{if(m?.errors.value)return(0,a.getProperty)(m.errors.value,String(s.name))}),_=(0,t.computed)(()=>g.value?._errors),v=(0,t.computed)(()=>g.value!==void 0),y=(0,t.watch)(v,e=>{if(e){l(`invalid`,g.value),p&&p.errors.value.set(String(s.name),g.value);return}l(`valid`,h.value),p&&p.errors.value.delete(s.name)}),b=(0,t.watch)(()=>m?.formData,()=>{l(`update:formData`,m?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{y(),b()});let x=e=>{e instanceof InputEvent&&(e=e.target.value),h.value=e},S=(0,t.computed)(()=>{let e=u.value;return typeof e==`function`&&(e=e(m?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),C=(0,t.computed)(()=>m?.readonly.value||p?.readonly.value?!0:S.value.readonly??s.readonly),w=(0,t.computed)(()=>({...S.value,name:S.value.name??s.name,invalid:v.value,valid:s.showValid?!!(!v.value&&h.value):void 0,type:(e=>{if([o.color,o.date,o.datetimeLocal,o.email,o.month,o.number,o.password,o.search,o.tel,o.text,o.time,o.url,o.week].includes(e))return e})(s.type),invalidLabel:_.value,modelValue:h.value,readonly:C.value,"onUpdate:modelValue":x}));return(0,t.provide)(r,{name:(0,t.readonly)(d),errors:(0,t.readonly)(g)}),{component:(0,t.computed)(()=>{if(s.type===o.custom)return{render(){return c.default?.({errors:(0,t.readonly)(g).value,formData:m?.formData.value,formErrors:m?.errors.value,invalid:v.value,invalidLabel:_.value,modelValue:h.value,readonly:C.value,onUpdate:x,submit:m?.submit,validate:m?.validate})??c.default}};if(!(i?.lazyLoad??s.lazyLoad)){let e;switch(s.type){case o.select:e=(0,t.resolveComponent)(`VvSelect`);break;case o.checkbox:e=(0,t.resolveComponent)(`VvCheckbox`);break;case o.radio:e=(0,t.resolveComponent)(`VvRadio`);break;case o.textarea:e=(0,t.resolveComponent)(`VvTextarea`);break;case o.radioGroup:e=(0,t.resolveComponent)(`VvRadioGroup`);break;case o.checkboxGroup:e=(0,t.resolveComponent)(`VvCheckboxGroup`);break;case o.combobox:e=(0,t.resolveComponent)(`VvCombobox`);break;default:e=(0,t.resolveComponent)(`VvInputText`)}if(typeof e!=`string`)return e;console.warn(`[@volverjs/form-vue]: ${e} not found, the component will be loaded asynchronously. To avoid this warning, please set "lazyLoad" option.`)}return(0,t.defineAsyncComponent)(async()=>{switch(i?.sideEffects&&await Promise.resolve(i.sideEffects(s.type)),s.type){case o.textarea:return import(`@volverjs/ui-vue/vv-textarea`);case o.radio:return import(`@volverjs/ui-vue/vv-radio`);case o.radioGroup:return import(`@volverjs/ui-vue/vv-radio-group`);case o.checkbox:return import(`@volverjs/ui-vue/vv-checkbox`);case o.checkboxGroup:return import(`@volverjs/ui-vue/vv-checkbox-group`);case o.select:return import(`@volverjs/ui-vue/vv-select`);case o.combobox:return import(`@volverjs/ui-vue/vv-combobox`)}return import(`@volverjs/ui-vue/vv-input-text`)})}),hasProps:w,invalid:v}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):this.type===o.custom?(0,t.h)(this.component,null,this.$slots):(0,t.h)(this.component,this.hasProps,this.$slots)}})}function K(e,n,r){return(0,t.defineComponent)({name:`VvFormFieldsGroup`,props:{is:{type:[Object,String],default:void 0},names:{type:[Array,Object],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValues:{type:[Object],default:void 0},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabels`,`is`],slots:Object,setup(i,{slots:o,emit:s}){let{props:c,names:l,defaultValues:u}=(0,t.toRefs)(i),d=(0,t.useId)(),f=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.values(l.value)),p=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.keys(l.value)),m=(0,t.computed)(()=>Array.isArray(l.value)?l.value.reduce((e,t)=>(e[String(t)]=t,e),{}):l.value),h=(0,t.computed)(()=>Object.keys(m.value).reduce((e,t)=>(e[String(m.value[t])]=t,e),{})),g=(0,t.inject)(n,void 0);g&&f.value.forEach(e=>{g.fields.value.set(`${d}-${e}`,e)});let _=(0,t.inject)(e),v=(0,t.computed)({get(){return _?.formData?p.value.reduce((e,t)=>(e[t]=(0,a.getProperty)(new Object(_.formData.value),m.value[t]),e),{}):{}},set(e){_?.formData&&(p.value.forEach(t=>{(0,a.setProperty)(new Object(_.formData.value),m.value[t],e?.[t])}),s(`update:modelValue`,{newValue:v.value,formData:_?.formData}))}});(0,t.onMounted)(()=>{u.value&&f.value.forEach(e=>{u.value?.[e]!==void 0&&v.value[e]===void 0&&(v.value={...v.value,[e]:u.value?.[e]})})}),(0,t.onBeforeUnmount)(()=>{g&&f.value.forEach(e=>{g.fields.value.delete(`${d}-${e}`)})});let y=(0,t.computed)(()=>{if(!_?.errors.value)return;let e=f.value.reduce((e,t)=>{if(!_.errors.value)return e;let n=(0,a.getProperty)(_.errors.value,String(t));return n===void 0||(e[String(t)]=n),e},{});if(Object.keys(e).length!==0)return e}),b=(0,t.computed)(()=>{if(!y.value)return;let e=Object.keys(y.value).reduce((e,t)=>(y.value?.[t]&&(e[h.value[t]]=y.value[t]._errors),e),{});if(Object.keys(e).length!==0)return e}),x=(0,t.computed)(()=>y.value!==void 0),S=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[t]=!!y.value?.[m.value[t]],e),{})),C=(0,t.watch)(x,()=>{if(x.value){s(`invalid`,y.value),g&&f.value.forEach(e=>{if(!y.value?.[e]){g.errors.value.delete(e);return}g.errors.value.set(e,y.value?.[e])});return}s(`valid`,v.value),g&&f.value.forEach(e=>{g.errors.value.delete(e)})}),w=(0,t.watch)(()=>_?.formData,()=>{s(`update:formData`,_?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{C(),w()});let T=e=>{v.value=e},E=(e,t)=>{t instanceof InputEvent&&(t=t.target.value),p.value.includes(e)&&(v.value={...v.value,[e]:t})},D=(0,t.computed)(()=>{let e=c.value;return typeof e==`function`&&(e=e(_?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),O=(0,t.computed)(()=>_?.readonly.value?!0:D.value.readonly??i.readonly),k=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[`onUpdate:${t}`]=e=>{E(t,e)},e),{"onUpdate:modelValue":T})),A=(0,t.computed)(()=>({...k.value,...D.value,...v.value,modelValue:v.value,names:D.value.name??f.value,invalid:x.value,invalids:S.value,valid:i.showValid?!!(!x.value&&v.value):void 0,invalidLabels:b.value,readonly:O.value}));return(0,t.provide)(r,{names:(0,t.readonly)(l),errors:(0,t.readonly)(y)}),{component:(0,t.computed)(()=>({render(){return o.default?.({errors:y.value,formData:_?.formData.value,formErrors:_?.errors.value,invalid:x.value,invalids:S.value,invalidLabels:b.value,modelValue:v.value,onUpdate:T,onUpdateField:E,readonly:O.value,submit:_?.submit,validate:_?.validate})??o.default}})),hasProps:A,invalid:x}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):(0,t.h)(this.component,null,this.$slots)}})}function q(e,n){return(0,t.defineComponent)({name:`VvFormWrapper`,props:{name:{type:String,required:!0},tag:{type:String,default:void 0},readonly:{type:Boolean,default:!1}},emits:[`invalid`,`valid`],expose:[`clear`,`errors`,`fields`,`fieldsErrors`,`formData`,`invalid`,`readonly`,`reset`,`submit`,`tag`,`validate`,`validateWrapper`],slots:Object,setup(r,{emit:i}){let a=(0,t.inject)(e),o=(0,t.inject)(n,void 0),s=(0,t.ref)(new Map),c=(0,t.ref)(new Map),{name:l}=(0,t.toRefs)(r),u=(0,t.computed)(()=>a?.invalid.value?c.value.size>0:!1);(0,t.watch)(u,e=>{if(e){i(`invalid`);return}i(`valid`)});let d=(0,t.computed)(()=>a?.readonly.value||r.readonly),f={name:(0,t.readonly)(l),errors:c,invalid:(0,t.readonly)(u),readonly:(0,t.readonly)(d),fields:s};return(0,t.provide)(n,f),(0,t.watch)((0,t.computed)(()=>new Map(s.value)),(e,t)=>{o?.fields&&(t.forEach((t,n)=>{e.has(n)||o?.fields.value.delete(n)}),e.forEach((e,t)=>{o?.fields.value.has(t)||o?.fields.value.set(t,e)}))},{deep:!0}),(0,t.watch)(c,e=>{o?.errors&&s.value.forEach(t=>{if(e.has(t)||o.errors.value.delete(t),e.has(t)){let n=e.get(t);n&&o.errors.value.set(t,n)}})},{deep:!0}),(0,t.onMounted)(()=>{if(!a?.wrappers||!l.value){console.warn(`[@volverjs/form-vue]: Invalid wrapper registration state`);return}if(a.wrappers.has(l.value)){console.warn(`[@volverjs/form-vue]: wrapper name "${l.value}" is already used`);return}a.wrappers.set(l.value,f)}),(0,t.onBeforeUnmount)(()=>{a?.wrappers&&l.value&&a.wrappers.delete(l.value)}),{errors:a?.errors,fields:s,fieldsErrors:c,formData:a?.formData,invalid:u,readonly:d,clear:a?.clear,reset:a?.reset,submit:a?.submit,validate:a?.validate,validateWrapper:()=>a?.validate(void 0,{fields:new Set(s.value.values())})??Promise.resolve(!0)}},render(){let e=()=>this.$slots.default?.({errors:this.errors,fieldsErrors:this.fieldsErrors,formData:this.formData,invalid:this.invalid,readonly:this.readonly,clear:this.clear,reset:this.reset,submit:this.submit,validate:this.validate,validateWrapper:this.validateWrapper});return this.tag?(0,t.h)(this.tag,null,{default:e}):e()}})}function J(e,n){let r=(0,t.defineComponent)({name:`VvFormTemplate`,props:{schema:{type:[Array,Function],required:!0},scope:{type:Object,default:()=>({})}},slots:Object,setup(i,{slots:o}){let s=(0,t.inject)(e);if(s?.formData)return()=>{let e=typeof i.schema==`function`?i.schema(s,i.scope):i.schema,c,l=e.reduce((e,o)=>{let{vvIs:l,vvName:u,vvSlots:d,vvChildren:f,vvIf:p,vvElseIf:m,vvType:h,vvDefaultValue:g,vvShowValid:_,vvContent:v,...y}=typeof o==`function`?o(s,i.scope):o;if(p!==void 0){if(c=typeof p==`string`?!!(0,a.getProperty)(new Object(s.formData.value),p):typeof p==`function`?(0,t.unref)(p(s)):(0,t.unref)(p),!c)return e}else if(m!==void 0&&c!==void 0){if(c||(c=typeof m==`string`?!!(0,a.getProperty)(new Object(s.formData.value),m):typeof m==`function`?(0,t.unref)(m(s)):(0,t.unref)(m),!c))return e}else c=void 0;let b;return f&&(b=typeof l==`string`?(0,t.h)(r,{schema:f}):{default:e=>(0,t.h)(r,{schema:f,scope:e})}),u?(e.push((0,t.h)(n,{name:u,is:l,type:h,defaultValue:g,showValid:_,props:y},d??b??v)),e):l?(e.push((0,t.h)(l,y,d??b??v)),e):(b&&(`default`in b?e.push(b.default(i.scope)):e.push(b)),e)},[]);return l.push(o?.default?.({errors:s?.errors.value,formData:s?.formData.value,invalid:s?.invalid.value,status:s?.status.value,submit:s?.submit,validate:s?.validate,clear:s?.clear,reset:s?.reset})),l}}});return r}function Y(e,t={}){let n=Symbol(`formInjectionKey`),r=Symbol(`formWrapperInjectionKey`),i=Symbol(`formFieldInjectionKey`),a=Symbol(`formFieldsGroupInjectionKey`),o=q(n,r),s=G(n,r,i,t),c=K(n,r,a),l=J(n,s),u=new Map,{clear:d,errors:f,formData:p,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,VvForm:S}=W(e,n,t,l,u);return{clear:d,errors:f,formData:p,formFieldInjectionKey:i,formInjectionKey:n,formWrapperInjectionKey:r,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,wrappers:u,VvForm:S,VvFormField:s,VvFormFieldsGroup:c,VvFormTemplate:l,VvFormWrapper:o}}var X=Symbol(`pluginInjectionKey`);function Z(e){let t={};return e.schema&&(t=Y(e.schema,e)),{...t,install(n,{global:r=!1}={}){n.provide(X,e),r&&(n.config.globalProperties.$vvForm=e,t?.VvForm&&n.component(`VvForm`,t.VvForm),t?.VvFormWrapper&&n.component(`VvFormWrapper`,t.VvFormWrapper),t?.VvFormField&&n.component(`VvFormField`,t.VvFormField),t?.VvFormFieldsGroup&&n.component(`VvFormFieldsGroup`,t.VvFormFieldsGroup),t?.VvFormTemplate&&n.component(`VvFormTemplate`,t.VvFormTemplate))}}}var Q=new Map;function $(e,n={}){if(n.scope&&Q.has(n.scope))return Q.get(n.scope);if(!(0,t.getCurrentInstance)()){let t=Y(e,n);return n.scope&&Q.set(n.scope,t),t}let r=Y(e,{...(0,t.inject)(X,{}),...n});return n.scope&&Q.set(n.scope,r),r}function ee(e,t={}){return Y(e,t)}e.FormFieldType=o,e.createForm=Z,e.defaultObjectByJSONSchema=M,e.defaultObjectBySchema=B,e.formType=ee,e.pluginInjectionKey=X,e.useForm=$});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@volverjs/form-vue",
3
3
  "type": "module",
4
- "version": "1.1.3",
4
+ "version": "1.1.5",
5
5
  "description": "Vue 3 Forms with @volverjs/ui-vue",
6
6
  "author": "8 Wave S.r.l.",
7
7
  "license": "MIT",
@@ -57,32 +57,32 @@
57
57
  "zod": "^3.25.0 || ^4.0.0"
58
58
  },
59
59
  "devDependencies": {
60
- "@antfu/eslint-config": "^9.0.0",
60
+ "@antfu/eslint-config": "^9.1.0",
61
61
  "@nabla/vite-plugin-eslint": "^3.0.1",
62
62
  "@testing-library/vue": "^8.1.0",
63
63
  "@vitejs/plugin-vue": "^6.0.7",
64
64
  "@vitest/browser-playwright": "^4.1.9",
65
65
  "@volverjs/style": "^0.1.24",
66
- "@volverjs/ui-vue": "^0.0.12",
67
- "@vue/compiler-dom": "^3.5.38",
68
- "@vue/compiler-sfc": "^3.5.38",
66
+ "@volverjs/ui-vue": "^0.0.15",
67
+ "@vue/compiler-dom": "^3.5.39",
68
+ "@vue/compiler-sfc": "^3.5.39",
69
69
  "@vue/language-core": "^3.3.5",
70
- "@vue/runtime-core": "^3.5.38",
71
- "@vue/shared": "^3.5.38",
70
+ "@vue/runtime-core": "^3.5.39",
71
+ "@vue/shared": "^3.5.39",
72
72
  "@vue/test-utils": "^2.4.11",
73
73
  "@vueuse/core": "^14.3.0",
74
74
  "copy": "^0.3.2",
75
75
  "dot-prop": "^10.1.0",
76
76
  "eslint": "^10.5.0",
77
- "happy-dom": "^20.10.3",
78
- "playwright": "^1.61.0",
77
+ "happy-dom": "^20.10.6",
78
+ "playwright": "^1.61.1",
79
79
  "typescript": "^6.0.3",
80
- "vite": "^8.0.16",
81
- "vite-plugin-dts": "^5.0.2",
80
+ "vite": "^8.1.0",
81
+ "vite-plugin-dts": "^5.0.3",
82
82
  "vite-plugin-externalize-deps": "^0.10.0",
83
83
  "vitest": "^4.1.9",
84
84
  "vitest-browser-vue": "^2.1.0",
85
- "vue": "^3.5.38",
85
+ "vue": "^3.5.39",
86
86
  "zod": "^4.4.3"
87
87
  },
88
88
  "scripts": {
package/src/VvForm.ts CHANGED
@@ -86,8 +86,26 @@ export function defineForm<Schema extends FormSchema, Type, FormTemplateComponen
86
86
  validateFields = undefined
87
87
  }
88
88
 
89
+ const { ignoreUpdates, stop: stopUpdatesWatch } = watchIgnorable(
90
+ formData,
91
+ () => {
92
+ status.value = FormStatus.updated
93
+ },
94
+ {
95
+ deep: true,
96
+ eventFilter: throttleFilter(options?.updateThrottle ?? 500),
97
+ },
98
+ )
99
+
89
100
  const reset = () => {
90
- formData.value = formDataAdapter()
101
+ // Reset the form data without re-triggering the throttled formData watcher.
102
+ // That watcher fires on a leading edge and would set `status = updated`,
103
+ // overwriting `status = reset` before the status watcher can emit the
104
+ // `reset` event — a timing-sensitive race when reset happens outside the
105
+ // throttle window.
106
+ ignoreUpdates(() => {
107
+ formData.value = formDataAdapter()
108
+ })
91
109
  clear()
92
110
  status.value = FormStatus.reset
93
111
  }
@@ -106,17 +124,6 @@ export function defineForm<Schema extends FormSchema, Type, FormTemplateComponen
106
124
  return true
107
125
  }
108
126
 
109
- const { ignoreUpdates, stop: stopUpdatesWatch } = watchIgnorable(
110
- formData,
111
- () => {
112
- status.value = FormStatus.updated
113
- },
114
- {
115
- deep: true,
116
- eventFilter: throttleFilter(options?.updateThrottle ?? 500),
117
- },
118
- )
119
-
120
127
  const readonlyErrors = makeReadonly(errors)
121
128
  const readonlyStatus = makeReadonly(status)
122
129
 
File without changes
File without changes
File without changes
File without changes